Среда исполнения#

Среда исполнения Astra Automation (Execution Environment, EE) – это контейнер с образом на базе Astra Linux Special Edition, который рекомендуется использовать для развертывания и тестирования кода, запускаемого с помощью Ansible и Terraform.

Предупреждение

Для запуска контейнера с указанным образом необходима версия Docker не ниже 19.03.

Использование EE дает следующие преимущества:

  • Нет необходимости устанавливать дополнительное ПО: все необходимое уже есть в составе образа.

  • Не требуется ручная настройка окружения.

  • Контейнер с образом EE может быть запущен в любой ОС, поддерживаемой Docker.

  • EE используется для тестирования кода коллекций Ansible, размещенных в реестре Astra Automation Hub.

Совет

Актуальный список версий образа EE доступен в реестре Astra Automation.

Загрузка образа#

Для загрузки образа среды исполнения используйте команду:

docker pull registry.astralinux.ru/aa/aa-base-ee:<version>

где <version> – версия образа. Если версия не указана, загружается образ с меткой latest, которой соответствует новейшая стабильная версия образа.

Совет

С помощью команды tag для образа можно создать псевдоним (alias), например:

docker tag registry.astralinux.ru/aa/aa-base-ee aa-base-ee

Теперь к образу registry.astralinux.ru/aa/aa-base-ee:latest можно обращаться через псевдоним – aa-base-ee.

Использование#

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

docker run \
   --rm \
   --interactive \
   --tty \
   --volume <source>:<target> \
   registry.astralinux.ru/aa/aa-base-ee:<version> \
   <command>

где

  • --rm – автоматическое удаление контейнера после выполнения команды.

  • --interactive, -i – интерактивный режим работы контейнера.

    Необходим, если требуется ручное взаимодействие с созданным процессом, например, для ввода пароля.

  • --tty, -t – включение поддержки стандартных функций терминала, например, форматирование вывода и скрытие символов вводимых паролей.

  • --volume, -v – монтирование объекта файловой системы управляющего узла (<source>) в файловую систему контейнера (<target>).

  • registry.astralinux.ru/aa/aa-base-ee – ссылка на образ.

  • <version> – версия образа. Если не указана, используется самая свежая (latest).

  • <command> – команда, которая должна быть выполнена в контейнере.

Подробное описание параметров команды docker run см. в документации Docker.

Примеры#

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

Запуск Terraform#

Для развертывания инфраструктуры с помощью Terraform выполните в каталоге проекта команду:

docker run \
   --rm \
   --interactive \
   --tty \
   --volume ~/.ssh/hub.astra-automation.ru:/root/.ssh/id_rsa \
   --volume "$(pwd):/app" \
   registry.astralinux.ru/aa/aa-base-ee \
   bash -c 'terraform init && terraform apply'

где

  • ~/.ssh/hub.astra-automation.ru – путь к файлу приватного ключа SSH, используемого для доступа к реестру образов Astra Automation Hub;

  • $(pwd) – команда, возвращающая полный путь к текущему каталогу;

  • /app – каталог в файловой системе контейнера, в который будет смонтирован каталог проекта из файловой системы управляющего узла.

Запуск Ansible playbook#

Для настройки управляемых узлов с помощью Ansible выполните в каталоге проекта команду:

docker run \
   --rm \
   --interactive \
   --tty \
   --volume ~/.ssh/hub.astra-automation.ru:/root/.ssh/id_rsa \
   --volume "$(pwd):/app" \
   registry.astralinux.ru/aa/aa-base-ee:latest \
   bash -c 'ansible-galaxy install -r requirements.yml && `
           `ansible-playbook -i inventory.yml playbook.yml'

где

  • ~/.ssh/hub.astra-automation.ru – путь к файлу приватного ключа SSH, используемого для доступа к реестру коллекций Astra Automation Hub;

  • $(pwd) – команда, возвращающая полный путь к текущему каталогу;

  • /app – каталог в файловой системе контейнера, в который будет смонтирован каталог проекта из файловой системы управляющего узла;

  • ansible-galaxy – утилита Ansible, используемая для управления зависимостями;

  • requirements.yml – имя файла с перечнем зависимостей Ansible;

  • ansible-playbook – утилита Ansible, используемая для запуска playbook;

  • inventory.yml – файл инвентаря;

  • playbook.yml – файл playbook.