Terraform azurerm_virtual_machine_extension,使用 CustomScriptExtension 运行本地 PowerShell 脚本 [英] Terraform azurerm_virtual_machine_extension, run local PowerShell Script using CustomScriptExtension
问题描述
如何在 terraform azurerm_virtual_machine_extension 中运行本地(不存储到 blob 存储帐户)PowerShell 脚本
文件夹有
- main.tf
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
- main.tf
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屋!