我已经编写了一个Terraform模板来创建Azure Windows VM。我需要将VM配置为启用PowerShell Remoting,以使发布管道能够执行Powershell脚本。创建虚拟机之后,我可以将RDP发送到虚拟机,并做所有需要启用Powershell远程处理的工作,但是,如果我可以编写所有脚本以使其可以在Release管道中执行,那将是理想的选择。有两点可以防止这种情况。
首先,这个问题的主题是,我必须运行“ WinRM quickconfig”。我的模板正常工作,以便在创建VM后对我执行RDP时,当我运行“ WinRM quickconfig”时会收到以下响应:
\
我想在Terraform中配置VM,因此设置了LocalAccountTokenFilterPolicy,因此不必RDP到VM来运行“ WinRM quickconfig”。经过一番研究,看来我可以使用azure_virtual_machine_extension资源来做到这一点。我将其添加到模板中:
\\
应用此方法时,出现错误:
Person.average(:age) # => 0.387e2
Person.average(:age).to_i # => 38
Person.average(:age).to_f # => 38.7
Person.average(:age).to_f.round # => 39
我找不到任何有关如何将allowExtensionOperations属性设置为true的Terraform文档。一时兴起,我尝试将属性“ allow_extension_operations”添加到azurerm_virtual_machine资源中的os_profile块中,但被拒绝为无效属性。我还尝试将其添加到os_profile_windows_config块中,并且在此也不有效。
我在Microsoft文档中找到有关osProfile.allowExtensionOperations属性的声明,该声明为:
“仅当虚拟机上没有扩展名时,才可以将其设置为False。”
这对我意味着默认情况下该属性为True,但实际上并没有这样说,并且肯定不是那样。 Terraform中是否可以将osProfile.alowExtensionOperations设置为true?
答案 0 :(得分:0)
遇到使用Terraform添加扩展的同一问题,我创建了Windows 2016自定义映像,
提供商“ azurerm”版本=“ 2.0.0” Terraform 0.12.24
Terraform apply 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."
答案 1 :(得分:0)
我遇到了同样的错误,可能的解决方案取决于这里的两件事。 您必须通过提供程序“ azurerm”版本=“ 2.5.0,并且还必须在虚拟机资源中传递os_profile_windows_config(请参见下文)参数。因此,terraform将考虑您正在传递的扩展名。这解决了我的错误。
os_profile_windows_config {
provision_vm_agent = true
}