Узел Chef не всегда сохраняет список выполнения на сервере во время первой загрузки - виртуальная машина с установленным масштабом Azure - PullRequest
0 голосов
/ 21 мая 2018

В настоящее время я размещаю набор масштабов Azure под управлением Windows Server 2012 R2, который настроен с расширением Chef (Chef.Bootstrap.WindowsAzure.ChefClient).Когда виртуальная машина подготовлена, расширение сообщает, что оно успешно выполнено через портал Azure, однако зарегистрированный узел на сервере Chef не обновляется, чтобы сохранить предоставленный список выполнения, и первый запуск не полностью завершен.Это вызывает выполнение последующих запусков chef-client с пустым списком запусков.Когда я наблюдаю за отчетами на сервере chef, я вижу запуск с состоянием прервано без ошибок.

При просмотре файла chef-client.log плагинов WindowsAzure я вижу, что он пытается выполнить список выполнения, но, похоже, он прерывается следующим FATAL

FATAL: Errno::EINVAL: Invalid argument @ io_writev - <STDOUT>

Также не создан файл chef-stacktrace.out.Определение расширения ARM выглядит следующим образом:

{
    "type": "extensions",
    "name": "ChefClient",
    "properties": {
        "publisher": "Chef.Bootstrap.WindowsAzure",
        "type": "ChefClient",
        "typeHandlerVersion": "1210.12",
        "autoUpgradeMinorVersion": true,
        "settings": {
            "client_rb": "ssl_verify_mode :verify_none\nnode_name ENV[\"COMPUTERNAME\"]",
            "runlist": "recipe[example]",
            "autoUpdateClient": "false",
            "deleteChefConfig": "false",

            "bootstrap_options": {
                "chef_server_url": "https://mychefserver.com/organizations/myorg",
                "validation_client_name": "myorg-validator",
                "environment": "dev"
            }
        },
        "protectedSettings": {
            "validation_key": "-----BEGIN RSA PRIVATE KEY----- ... -----END RSA PRIVATE KEY----"
        }
    }
}

Чтобы устранить неполадки, я попытался сократить мою поваренную книгу example до одного сценария DSC, который устанавливает IIS.Даже на этом шаге я выполнил его несколькими способами, такими как использование windows_feature, powershell_script и dsc_script.Все результаты заканчиваются одной и той же ошибкой.Вот текущий скрипт

powershell_script 'Install IIS' do
  code 'Add-WindowsFeature Web-Server'
  guard_interpreter :powershell_script
  not_if "(Get-WindowsFeature -Name Web-Server).Installed"
end

Если я переопределю список запуска и вызову chef-client вручную, все пройдет успешно.У меня возникают проблемы с уточнением, является ли это расширение Azure Chef, клиент Chef или поваренная книга.

Насколько я могу судить, связь с сервером Chef выглядит хорошо, так как необходимые файлы pemПосле обмена установлен chef-клиент, а поваренная книга загружается и кэшируется с сервера.Кеш удаляется при последующем запуске, однако с пустым списком выполнения.Вот содержимое файла first-boot.json:

{"run_list":["recipe[example]"]}

Вот версии в игре:

  • версия chef-client: 14.1.12
  • Версия расширения Azure Chef: 1210.12.110.1001
  • Версия сервера: Windows Server 2012 R2

Есть идеи, что может произойти?

1 Ответ

0 голосов
/ 24 мая 2018

Оказывается, мой анализ был неверным о том, какой ресурс вызывал проблему.Похоже, что при первом запуске загрузки произошел сбой при использовании dsc_script в качестве ресурса для установки веб-сервера.При использовании следующего ресурса powershell_script он завершился успешно, и список прогонов был добавлен для будущих прогонов.

powershell_script 'Install IIS' do code 'Add-WindowsFeature Web-Server' guard_interpreter :powershell_script not_if "(Get-WindowsFeature -Name Web-Server).Installed" end

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...