我有一个应该使用Docker创建Linux VM的Azure ARM Teamplate。 Docker使用Azure的DockerExtension
进行安装。在安装Docker之后,我需要使用Azure的CustomScriptForLinux
来运行自定义脚本。因此,第二个脚本应该依赖于Docker安装。下面是一个例子,显示我怎么试着写在一个ARM模板:Azure ARM模板dependsOn:如何引用VM扩展?
{
...,
"variables": {
"extensionName": "DockerExtension",
"vmName": "Docker",
...
},
"resources": [
...,
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat(variables('vmName'), '/', variables('extensionName'))]",
"tags": {
"displayName": "DockerExtension"
},
"apiVersion": "2015-06-15",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
],
"properties": {
"publisher": "Microsoft.Azure.Extensions",
"type": "DockerExtension",
"typeHandlerVersion": "1.1",
"autoUpgradeMinorVersion": true,
"settings": { }
}
},
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat(variables('vmName'), '/config')]",
"apiVersion": "2015-06-15",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/extensions/', variables('vmName'), '/', variables('extensionName'))]"
],
"properties": {
"publisher": "Microsoft.OSTCExtensions",
"type": "CustomScriptForLinux",
"typeHandlerVersion": "1.4",
"settings": {
"fileUris": [
"..."
],
"commandToExecute": "bash configure.sh"
}
}
}
]
}
如果我运行这个ARM模板,我得到的错误The resource 'Microsoft.Compute/virtualMachines/extensions/Docker/DockerExtension' is not defined in the template.
我不明白为什么。这是我在模板中的Docker扩展的名称,不是吗?
如果我只运行其中一个脚本,该模板将起作用。所以模板中不应该存在一般错误。
任何帮助表示赞赏。
Regards, Rainer。
真棒,工程。谢谢! – Rainer
@Rainer,不客气。很高兴它可以帮助你和其他可能遇到同样问题的社区成员。 – juvchan