Azure:无法将自定义数据传递或执行到 VM
Azure: Cannot pass or execute a custom data to VM
我想在自动化测试期间部署带有自定义数据文件的 Azure Ubuntu 18.04-LTS VM,使用 tmplate.json 和 parameters.json 文件。
虽然虚拟机部署成功,但是好像自定义数据执行失败了,不明白为什么...
据此link,cloud-init在我使用的镜像中可用。
我的 template.json 文件包含:
"parameters": {
...
"customData": {
"type": "string"
}
...
},
"resources": [
...
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2020-06-01",
"name": "[parameters('virtualMachineName')]",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName'))]"
],
"properties": {
...
"osProfile": {
"computerName": "[parameters('virtualMachineComputerName')]",
"adminUsername": "[parameters('adminUsername')]",
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"ssh": {
"publicKeys": [
{
"path": "[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]",
"keyData": "[parameters('adminPublicKey')]"
}
]
}
},
"customData": "[parameters('customData')]"
},
...
}
]
此外,我有一个 parameters.json 文件,其中包含:
"parameters": {
...
"customData": {
"value": "I2Nsb3VkLWNvbmZpZ1xucGFja2FnZV91cGdyYWRlOiB0cnVlXG5wYWNrYWdlczpcbiAgLSBpcGVyZlxuICAtIHRjcHJlcGxheVxuICAtIG5ldHBlcmY="
}
}
该值为 YAML base64 编码,解码文本为:
#cloud-config\npackage_upgrade: true\npackages:\n - iperf\n - tcpreplay\n - netperf
(*) 以上 template.json 和 parameters.json 文件是部分文件 - 我省略了似乎与我的问题无关的内容。
我也检查了文件/var/log/waagent.log,没有发现任何可疑的东西..
然而,在我手动部署 ubuntu VM 并将上述 YAML 粘贴到自定义数据部分(在高级设置页面中)后,一切正常('iperf'、'netperf' 和 'tcpreplay' 命令被发现)
任何帮助将不胜感激!!
根据我的经验,问题是自定义数据的值不正确。我检查了 cloud-init 配置成功的 VM,代码与您的不匹配。您可以自己查看文件/var/lib/waagent/ovf-env.xml
。不要自己将文本更改为字符串。您可以encode在线阅读文字。
我想在自动化测试期间部署带有自定义数据文件的 Azure Ubuntu 18.04-LTS VM,使用 tmplate.json 和 parameters.json 文件。
虽然虚拟机部署成功,但是好像自定义数据执行失败了,不明白为什么...
据此link,cloud-init在我使用的镜像中可用。
我的 template.json 文件包含:
"parameters": {
...
"customData": {
"type": "string"
}
...
},
"resources": [
...
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2020-06-01",
"name": "[parameters('virtualMachineName')]",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName'))]"
],
"properties": {
...
"osProfile": {
"computerName": "[parameters('virtualMachineComputerName')]",
"adminUsername": "[parameters('adminUsername')]",
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"ssh": {
"publicKeys": [
{
"path": "[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]",
"keyData": "[parameters('adminPublicKey')]"
}
]
}
},
"customData": "[parameters('customData')]"
},
...
}
]
此外,我有一个 parameters.json 文件,其中包含:
"parameters": {
...
"customData": {
"value": "I2Nsb3VkLWNvbmZpZ1xucGFja2FnZV91cGdyYWRlOiB0cnVlXG5wYWNrYWdlczpcbiAgLSBpcGVyZlxuICAtIHRjcHJlcGxheVxuICAtIG5ldHBlcmY="
}
}
该值为 YAML base64 编码,解码文本为:
#cloud-config\npackage_upgrade: true\npackages:\n - iperf\n - tcpreplay\n - netperf
(*) 以上 template.json 和 parameters.json 文件是部分文件 - 我省略了似乎与我的问题无关的内容。
我也检查了文件/var/log/waagent.log,没有发现任何可疑的东西..
然而,在我手动部署 ubuntu VM 并将上述 YAML 粘贴到自定义数据部分(在高级设置页面中)后,一切正常('iperf'、'netperf' 和 'tcpreplay' 命令被发现)
任何帮助将不胜感激!!
根据我的经验,问题是自定义数据的值不正确。我检查了 cloud-init 配置成功的 VM,代码与您的不匹配。您可以自己查看文件/var/lib/waagent/ovf-env.xml
。不要自己将文本更改为字符串。您可以encode在线阅读文字。