#linux #azure #custom-data-attribute #cloud-init
#linux #azure #custom-data-attribute #cloud-инициализация
Вопрос:
Я хочу развернуть виртуальную машину Azure Ubuntu 18.04-LTS с пользовательским файлом данных во время тестирования автоматизации, используя файлы tmplate.json и parameters.json.
Несмотря на то, что виртуальная машина была успешно развернута, кажется, что выполнение пользовательских данных не удалось, и я не понимаю, почему…
Согласно этой ссылке, 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-confignpackage_upgrade: truenpackages:n - iperfn - tcpreplayn - netperf
(*) приведенные выше файлы template.json и parameters.json являются частичными — я опустил то, что, по-видимому, не связано с моей проблемой.
Я также проверил файл /var/log/waagent .журнал, и я не нашел ничего подозрительного..
Однако после того, как я вручную развернул виртуальную машину ubuntu и вставил приведенный выше YAML в раздел пользовательских данных (на странице предварительной настройки), все работало нормально (были найдены команды ‘iperf’, ‘netperf’ и ‘tcpreplay’)
Любая помощь будет оценена!!
Ответ №1:
По моему опыту, проблема в том, что значение для пользовательских данных неверно. Я проверяю виртуальную машину, что инициализация в облаке выполнена успешно, код не соответствует вашему. Вы можете проверить файл /var/lib/waagent/ovf-env.xml
самостоятельно. Не превращайте текст самостоятельно в строку. Вы можете закодировать текст онлайн.
Комментарии:
1. Вы даже не представляете, сколько времени я потратил на это .. большое вам спасибо! =)