我有一个以下列方式构建的虚拟机ARM模板: refernce
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
"contentVersion": "1.0.0.0",
"parameters": { },
"variables": { },
"resources": [ ],
"outputs": { }
}
parameters.json
:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
"contentVersion": "1.0.0.0",
"parameters": {
"adminUserName": { "value": "mytestacct1" },
"adminPassword": { "value": "mytestpass1" }
}
}
我可以在PowerShell中使用此模板成功部署计算机:
New-AzureRmResourceGroupDeployment -ResourceGroupName $rgName -TemplateFile VirtualMachineTemplate.json -TemplateParameterFile Parameters.json
但是,如果我在以下任务中尝试对Ansible azure_rm_deployment
模块使用相同的模板:
- name: Ensure the VM is deployed to Azure
azure_rm_deployment:
state: present
resource_group_name: "{{ resource_group_name }}"
template: "{{ lookup('file', 'VirtualMachineTemplate.json') }}"
parameters: "{{ lookup('file', 'Parameters.json') }}"
我收到错误:
致命:[localhost]:失败! => {“已更改”:false,“failed”:true,“failed_deployment_operations”:[],“msg”:“部署失败,状态码为400,消息:请求内容无效且无法反序列化:'转换值时出错\“https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json \”键入'Microsoft.WindowsAzure.ResourceStack.Frontdoor.Data.Definitions.DeploymentParameterDefinition'.Path'aperties.parameters。$ schema',第1行,第142位。'。“}
错误是由parameters.json
引起的。如果我直接在任务中定义参数:
- name: Ensure the VM is deployed to Azure
azure_rm_deployment:
state: present
resource_group_name: "{{ resource_group_name }}"
template: "{{ lookup('file', 'VirtualMachineTemplate.json') }}"
parameters:
adminUserName:
value: mytestacct1
adminPassword:
value: mytestpass1
部署机器。
我在这里失去了。 Ansible模块的模板是否需要修改?
注意:
同时我可以使用azure_rm_storageaccount
,azure_rm_virtualmachine
等模块配置资源和虚拟机,所以我猜这不是库问题;至少不是Microsoft Azure SDK for Python,每个要求是2.0.0rc5。
只是为了确保我也尝试使用template_link
和parameters_link
,错误消息是相同的。
答案 0 :(得分:1)
我认为这是一个相当古老的问题,但我注意到参数文件中有自己的字段parameters
,所以正确的调用应该是:
- name: Ensure the VM is deployed to Azure
azure_rm_deployment:
state: present
resource_group_name: "{{ resource_group_name }}"
template: "{{ lookup('file', 'VirtualMachineTemplate.json') }}"
parameters: "{{ (lookup('file', 'Parameters.json') | from_json).parameters }}"