用于创建 Linux VM 并将行添加到 /etc/hosts 的 Azure ARM 模板
Azure ARM Template to Create Linux VM and Add Line to /etc/hosts
我们有一个 ARM 模板,可以通过 powershell 命令正确创建 Linux VM:
New-AzureRmResourceGroupDeployment -TemplateFile .\template.json -TemplateParameterFile .\parameters.json -ResourceGroupName my-rg -virtualMachineName my-test-vm
我们想利用 CustomScriptForLinux 扩展添加一行 /etc/hosts
这里是template.json的相关部分:
{
"name": "[concat(parameters('virtualMachineName'),'/edithosts')]",
"type": "Microsoft.Compute/virtualMachines/extensions",
"location": "[resourceGroup().location]",
"apiVersion": "2015-06-15",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', parameters('virtualMachineName'))]"
],
"properties": {
"publisher": "Microsoft.OSTCExtensions",
"type": "CustomScriptForLinux",
"typeHandlerVersion": "1.5",
"autoUpgradeMinorVersion": true,
"settings": {
"commandToExecute": "sudo echo '10.X.X.X sample.acme.com' >> /etc/hosts"
}
}
}
],
部署成功,没有错误,但 /etc/hosts 文件没有新行。
/var/log/azure/Microsoft.OSTCExtensions.CustomScriptForLinux/1.5.2.2/extension.log 的输出包括:
Command to execute:sudo echo '10.X.X.X sample.acme.com' >> /etc/hosts
2018/03/20 15:22:29 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Command is finished.
2018/03/20 15:22:29 ---stdout---
2018/03/20 15:22:29 10.X.X.X sample.acme.com >> /etc/hosts
2018/03/20 15:22:29
2018/03/20 15:22:29 ---errout---
2018/03/20 15:22:29
2018/03/20 15:22:29
从命令中删除 'sudo' 没有任何区别。
原来你需要使用 bash -c "echo '10.X.X.X sample.acme.com' >> etc/hosts"
来使 linux 正确解析来自脚本扩展的输入
我们有一个 ARM 模板,可以通过 powershell 命令正确创建 Linux VM:
New-AzureRmResourceGroupDeployment -TemplateFile .\template.json -TemplateParameterFile .\parameters.json -ResourceGroupName my-rg -virtualMachineName my-test-vm
我们想利用 CustomScriptForLinux 扩展添加一行 /etc/hosts
这里是template.json的相关部分:
{
"name": "[concat(parameters('virtualMachineName'),'/edithosts')]",
"type": "Microsoft.Compute/virtualMachines/extensions",
"location": "[resourceGroup().location]",
"apiVersion": "2015-06-15",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', parameters('virtualMachineName'))]"
],
"properties": {
"publisher": "Microsoft.OSTCExtensions",
"type": "CustomScriptForLinux",
"typeHandlerVersion": "1.5",
"autoUpgradeMinorVersion": true,
"settings": {
"commandToExecute": "sudo echo '10.X.X.X sample.acme.com' >> /etc/hosts"
}
}
}
],
部署成功,没有错误,但 /etc/hosts 文件没有新行。
/var/log/azure/Microsoft.OSTCExtensions.CustomScriptForLinux/1.5.2.2/extension.log 的输出包括:
Command to execute:sudo echo '10.X.X.X sample.acme.com' >> /etc/hosts
2018/03/20 15:22:29 [Microsoft.OSTCExtensions.CustomScriptForLinux-1.5.2.2] Command is finished.
2018/03/20 15:22:29 ---stdout---
2018/03/20 15:22:29 10.X.X.X sample.acme.com >> /etc/hosts
2018/03/20 15:22:29
2018/03/20 15:22:29 ---errout---
2018/03/20 15:22:29
2018/03/20 15:22:29
从命令中删除 'sudo' 没有任何区别。
原来你需要使用 bash -c "echo '10.X.X.X sample.acme.com' >> etc/hosts"
来使 linux 正确解析来自脚本扩展的输入