#azure #ansible #azure-vm-scale-set
#azure #ansible #azure-vm-scale-set
Вопрос:
У меня есть инструмент ansible для создания образов в Azure и инструмент terraform для применения образов к виртуальным машинам, которые у меня есть в azure. Однако Azure помечает экземпляры vmss только логическим флагом lates_model, поэтому мне нужно открыть каждый экземпляр в vmss и нажать кнопку обновления, которая перезапускает компьютер.
Я видел несколько модулей для управления виртуальными машинами, однако мне нужно обновить (перезагрузить) экземпляры, используя параметр serial в моем сборнике воспроизведения. В этом проблема, я могу пойти этим путем. В общем, получение инвентаря в модуле — не лучшая идея, я думаю, поскольку Ansible не знает, что list на самом деле является инвентарем. Мне нужен совет.
Ответ №1:
Когда вы обновляете конфигурацию VMSS, и я вижу, что вы устанавливаете политику обновления с manual
помощью . И в этой ситуации вам необходимо самостоятельно обновить все экземпляры, выбрав.
В ansible вы можете использовать модуль только azure_rm_virtualmachinescaleset
для обновления VMSS, другой модуль просто получает факты о VMSS. Если вы хотите обновить конфигурацию, а затем все экземпляры обновятся автоматически, вам необходимо установить параметр upgrade_policy
with Automatic
.
Комментарии:
1. использование upgrade_mode в terraform помогает, однако есть еще один вопрос: перед перезагрузкой экземпляра (для этого требуется обновление) мне нужно выполнить некоторые задачи в ОС, например, остановить процесс. Как я могу это сделать с помощью terraform?
2. @EdikMkoyan Если это полезно для вас, пожалуйста, примите это. И вам лучше задать другой вопрос по другой проблеме с более подробной информацией. Но здесь есть совет для этого — использовать cloud-init, это может помочь.
3. правильный ответ — upgrade_mode, а не upgrade_policy. Пожалуйста, исправьте, чтобы я мог принять ваш ответ как правильный.
4. @EdikMkoyan Где вы находите upgrade_mode? Я вижу только политику обновления в ansible.
5. Я предполагаю, что мы говорим о двух разных способах выполнения одного и того же. В terraform это upgrade_mode, по умолчанию для него установлено значение manual, и именно по этой причине я выполняю обновления с portal.azure.com . Единственная причина, по которой здесь следует использовать Ansible, — это пользовательские действия в операционной системе перед перезагрузкой компьютера. Возможно, также можно использовать средства обеспечения завершения Terraform (ansible?), Но, я думаю, это плохая идея.