Использование скриптов в манифестеBeta
Скрипты позволяют выполнять различные операции в процессе развертывания сервиса, например синхронизировать узлы при объединении в кластер.
Есть два способа использования скриптов:
- через пакет cloud-init;
- через агент Marketplace.
Cloud-init позволяет настроить очередность выполнения скриптов и задать момент их запуска на одном сервере. Например, скрипт может выполняться при каждой загрузке ОС или только один раз.
- Ошибка при выполнении скрипта остановит развертывание инстанса. Это значит, что не все нужные настройки будут применены.
- Нельзя задать зависимость между запуском скрипта и работой других ресурсов Terraform: скрипт может еще выполняться, но в Marketplace уже будет отмечено, что развертывание инстанса завершено.
- (Опционально) Описание содержимого скриптов во входных переменных. Поддерживаются языки Bash и Python.
- Описание порядка и настройки выполнения скриптов в аргументе
user_scriptресурса ivkcs_user_data. - Описание содержимого скриптов в ресурсе
ivkcs_user_dataнапрямую или с использованием переменных.
В справочнике по провайдеру VK CS Infra (iVK CS) приведен пример описания скриптов в ресурсе ivkcs_user_data манифеста Terraform.
Агент Marketplace позволяет задавать зависимость запуска скрипта относительно работы других ресурсов Terraform, устанавливать таймаут, контролировать коды выхода и останавливать развертывание приложения при ошибках.
В процессе развертывания сервиса агент передает хеш выполненных скриптов в сервис управления конфигурациями. Это позволяет оценить текущее состояние ВМ с инстансом сервиса (какие скрипты выполнены на текущий момент) и привести его к состоянию, описанному в манифесте Terraform.
Агент Marketplace передает сервису управления конфигурациями статус скриптов. Возможные статусы:
-
ok— скрипт выполнен успешно. -
running— скрипт выполняется. -
failed— скрипт завершен с ошибкой. Причину ошибки можно установить, просмотрев логи агента.При получении статуса
failedсистема развертывания запускает процесс развертывания сервиса повторно. Повторные попытки могут занимать до полутора часов. Их можно отключить в файле settings.yaml.
Результаты выполнения скриптов можно передать в сервис управления конфигурациями в форматированном виде и использовать при выполнении других скриптов.
- Требуется установка агента Marketplace.
- Невозможно перезапускать скрипты при рестарте ОС.
-
Описание установки агента 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.