Azure: не удается передать или выполнить пользовательские данные в виртуальную машину

#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. Вы даже не представляете, сколько времени я потратил на это .. большое вам спасибо! =)