我编写了一个用于创建 Azure Windows VM 的 Terraform 模板。我需要将 VM 配置为启用 PowerShell 远程处理,以便发布管道能够执行 Powershell 脚本。创建 VM 后,我可以 RDP 到 VM 并执行我需要做的所有事情来启用 Powershell 远程处理,但是,如果我可以编写所有这些脚本以便它可以在发布管道中执行,那将是理想的。有两件事可以防止这种情况发生。
第一个也是这个问题的主题是,我必须运行“WinRM quickconfig”。我的模板可以正常工作,这样当我在创建后对 VM 执行 RDP 时,当我运行“WinRM quickconfig”时,我会收到以下响应:
WinRM service is already running on this machine.
WinRM is not set up to allow remote access to this machine for management.
The following changes must be made:
Configure LocalAccountTokenFilterPolicy to grant administrative rights remotely to local users.
Make these changes [y/n]?
我想在 Terraform 中配置 VM,因此设置了 LocalAccountTokenFilterPolicy,并且不需要 RDP 到 VM 来运行“WinRM quickconfig”。经过一些研究,我似乎可以使用资源 azure_virtual_machine_extension 来做到这一点。我将此添加到我的模板中:
resource "azurerm_virtual_machine_extension" "vmx" {
name = "hostname"
location = "${var.location}"
resource_group_name = "${var.vm-resource-group-name}"
virtual_machine_name = "${azurerm_virtual_machine.vm.name}"
publisher = "Microsoft.Azure.Extensions"
type = "CustomScript"
type_handler_version = "2.0"
settings = <<SETTINGS
{
# "commandToExecute": "powershell Set-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System' -Name 'LocalAccountTokenFilterPolicy' -Value 1 -Force"
}
SETTINGS
}
当我应用它时,我收到错误:
Error: compute.VirtualMachineExtensionsClient#CreateOrUpdate: Failure sending request: StatusCode=0 -- Original Error: autorest/azure: Service returned an error. Status=<nil> Code="OperationNotAllowed" Message="This operation cannot be performed when extension operations are disallowed. To allow, please ensure VM Agent is installed on the VM and the osProfile.allowExtensionOperations property is true."
我找不到任何关于如何将 allowExtensionOperations 属性设置为 true 的 Terraform 文档。一时兴起,我尝试将属性“allow_extension_operations”添加到 azurerm_virtual_machine 资源中的 os_profile 块,但它作为无效属性被拒绝。我还尝试将其添加到 os_profile_windows_config 块中,但在那里也无效。
我在 Microsoft 的文档中找到了关于 osProfile.allowExtensionOperations 属性的声明:
“只有在虚拟机上不存在扩展时,才可以将其设置为 False。”
这对我来说意味着该属性默认为 True,但它实际上并没有这么说,而且它肯定不会那样做。Terraform 中有没有办法将 osProfile.alowExtensionOperations 设置为 true?