Использование скриптов в манифестеBeta

Скрипты позволяют выполнять различные операции в процессе развертывания сервиса, например синхронизировать узлы при объединении в кластер.

Есть два способа использования скриптов:

Выполнение скриптов через Cloud-init

Возможности способа

Cloud-init позволяет настроить очередность выполнения скриптов и задать момент их запуска на одном сервере. Например, скрипт может выполняться при каждой загрузке ОС или только один раз.

Недостатки способа

  • Ошибка при выполнении скрипта остановит развертывание инстанса. Это значит, что не все нужные настройки будут применены.
  • Нельзя задать зависимость между запуском скрипта и работой других ресурсов Terraform: скрипт может еще выполняться, но в Marketplace уже будет отмечено, что развертывание инстанса завершено.

Требуемые компоненты манифеста Terraform

  • (Опционально) Описание содержимого скриптов во входных переменных. Поддерживаются языки Bash и Python.
  • Описание порядка и настройки выполнения скриптов в аргументе user_script ресурса ivkcs_user_data.
  • Описание содержимого скриптов в ресурсе ivkcs_user_data напрямую или с использованием переменных.

В справочнике по провайдеру VK CS Infra (iVK CS) приведен пример описания скриптов в ресурсе ivkcs_user_data манифеста Terraform.

Выполнение скриптов через агент Marketplace

Возможности способа

Агент Marketplace позволяет задавать зависимость запуска скрипта относительно работы других ресурсов Terraform, устанавливать таймаут, контролировать коды выхода и останавливать развертывание приложения при ошибках.

В процессе развертывания сервиса агент передает хеш выполненных скриптов в сервис управления конфигурациями. Это позволяет оценить текущее состояние ВМ с инстансом сервиса (какие скрипты выполнены на текущий момент) и привести его к состоянию, описанному в манифесте Terraform.

Агент Marketplace передает сервису управления конфигурациями статус скриптов. Возможные статусы:

  • ok — скрипт выполнен успешно.

  • running — скрипт выполняется.

  • failed — скрипт завершен с ошибкой. Причину ошибки можно установить, просмотрев логи агента.

    При получении статуса failed система развертывания запускает процесс развертывания сервиса повторно. Повторные попытки могут занимать до полутора часов. Их можно отключить в файле settings.yaml.

Результаты выполнения скриптов можно передать в сервис управления конфигурациями в форматированном виде и использовать при выполнении других скриптов.

Недостатки способа

  • Требуется установка агента Marketplace.
  • Невозможно перезапускать скрипты при рестарте ОС.

Требуемые компоненты манифеста Terraform

  • Описание установки агента Marketplace на ВМ инстанса. Подробнее — в справочнике по провайдеру VK CS Infra (iVK CS).

  • (Опционально) Описание содержимого скриптов во входных переменных. Поддерживаются языки Bash и Python.

  • Описание порядка и настройки выполнения скриптов с помощью ресурса ivkcs_agent_exec или блока locals.

    Например, с помощью ресурса ivkcs_agent_exec для каждого скрипта можно задать тайм-аут выполнения и количество попыток выполнения скрипта до присвоения ему статуса failed.

  • Описание содержимого скриптов в ресурсе ivkcs_user_data напрямую или с использованием переменных.

  • (Опционально) Получение результатов выполнения скриптов с помощью источника данных ivkcs_agent_script_result. Результаты выполнения скриптов могут быть переданы в выходных параметрах или использованы в других ресурсах манифеста Terraform.

В разделе Манифест Terraform приведен пример манифеста с применением скриптов в ресурсе ivkcs_agent_exec.