Terraform azurerm_virtual_machine_extension,使用 CustomScriptExtension 运行本地 PowerShell 脚本 [英] Terraform azurerm_virtual_machine_extension, run local PowerShell Script using CustomScriptExtension

查看:80
本文介绍了Terraform azurerm_virtual_machine_extension,使用 CustomScriptExtension 运行本地 PowerShell 脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在 terraform azurerm_virtual_machine_extension 中运行本地(不存储到 blob 存储帐户)PowerShell 脚本

文件夹有

  1. main.tf
  2. install.ps1

    资源azurerm_virtual_machine_extension"软件"{名称=安装软件"resource_group_name = azurerm_resource_group.azrg.namevirtual_machine_id = azurerm_virtual_machine.vm.id发布者 = "Microsoft.Compute"type = "CustomScriptExtension"type_handler_version = "1.9"

     设置 = <<SETTINGS{"commandToExecute": "powershell -ExecutionPolicy Unrestricted -File \"install.ps1\""}设置}

    但是失败了

    <预><代码>[{"code": "ComponentStatus/StdOut/succeeded","level": "信息","displayStatus": "配置成功","message": "Windows PowerShell \r\n版权所有 (C) Microsoft Corporation.保留所有权利.\r\n\r\n"},{"code": "ComponentStatus/StdErr/succeeded","level": "信息","displayStatus": "配置成功","message": "-File 参数的参数 'install.ps1' 不存在.提供现有 '.ps1' 文件的路径作为 -File 参数的参数.\r\n"}]

任何线索.

谢谢

解决方案

这对我有用.

资源azurerm_virtual_machine_extension"软件"{名称=安装软件"resource_group_name = azurerm_resource_group.azrg.namevirtual_machine_id = azurerm_virtual_machine.vm.id发布者 = "Microsoft.Compute"type = "CustomScriptExtension"type_handler_version = "1.9"protected_settings = <<设置{"commandToExecute": "powershell -command \"[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('${base64encode(data.template_file.tf.rendered)}')) |Out-File -filepath install.ps1\" && powershell -ExecutionPolicy Unrestricted -File install.ps1"}设置}数据模板文件"tf"{模板 = "${file("install.ps1")}"}

How to run a local ( without storing to a blob storage account ) PowerShell script in terraform azurerm_virtual_machine_extension

Folder having

  1. main.tf
  2. install.ps1

    resource "azurerm_virtual_machine_extension" "software" { name = "install-software" resource_group_name = azurerm_resource_group.azrg.name virtual_machine_id = azurerm_virtual_machine.vm.id publisher = "Microsoft.Compute" type = "CustomScriptExtension" type_handler_version = "1.9"

      settings = <<SETTINGS
        { 
          "commandToExecute": "powershell -ExecutionPolicy Unrestricted -File \"install.ps1\""
        } 
        SETTINGS
    } 
    

    but failed

    [
            {
                "code": "ComponentStatus/StdOut/succeeded",
                "level": "Info",
                "displayStatus": "Provisioning succeeded",
                "message": "Windows PowerShell \r\nCopyright (C) Microsoft Corporation. All rights reserved.\r\n\r\n"
            },
            {
                "code": "ComponentStatus/StdErr/succeeded",
                "level": "Info",
                "displayStatus": "Provisioning succeeded",
                "message": "The argument 'install.ps1' to the -File parameter does not exist. Provide the path to an existing '.ps1' file as an argument to the -File parameter.\r\n"
            }
        ]
    

any lead.

Thanks

解决方案

this worked for me.

resource "azurerm_virtual_machine_extension" "software" {
  name                 = "install-software"
  resource_group_name  = azurerm_resource_group.azrg.name
  virtual_machine_id   = azurerm_virtual_machine.vm.id
  publisher            = "Microsoft.Compute"
  type                 = "CustomScriptExtension"
  type_handler_version = "1.9"

  protected_settings = <<SETTINGS
  {
    "commandToExecute": "powershell -command \"[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('${base64encode(data.template_file.tf.rendered)}')) | Out-File -filepath install.ps1\" && powershell -ExecutionPolicy Unrestricted -File install.ps1"
  }
  SETTINGS
}

data "template_file" "tf" {
    template = "${file("install.ps1")}"
} 

这篇关于Terraform azurerm_virtual_machine_extension,使用 CustomScriptExtension 运行本地 PowerShell 脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆