Создание образа среды исполнения#
Для создания образов среды исполнения EE (execution environment) следует использовать утилиту Ansible Builder.
Инструментом для непосредственного создания образа может быть Podman или Docker.
После установки утилиты и подготовки инструмента контейнеризации необходимо создать файл определения среды исполнения (EE definition).
По умолчанию файл называется execution-environment.yml
(или execution-environment.yaml
).
Этапы сборки#
Ansible Builder выполняет несколько этапов при запуске инструмента контейнеризации для создания образа контейнера:
Base: использует Docker или Podman для загрузки базового образа, который был определен в файле
execution-environment.yml
, затем устанавливает версию Python (если она определена и отличается от всех версий Python в базовом образе),pip
,ansible-runner
иansible-core
илиansible
. Все три последующих этапа сборки строятся на выводе этапа Base.Galaxy: загружает определенные в файле
execution-environment.yml
коллекции с Galaxy и сохраняет их локально.Builder: загружает Python-пакеты и системные пакеты, определенные в файле
execution-environment.yml
, и сохраняет их локально.Final: производит окончательную сборку образа.
Если необходима настройка размера разделяемой памяти (--shm-size
) во время сборки EE, рекомендуется использовать Docker.
Файл определения среды исполнения#
Параметры файла execution-environment.yml
описаны в документации Ansible.
Настройка размера разделяемой памяти в Docker#
Для настройки размера разделяемой памяти
/dev/shm
отредактируйте файл конфигурации Docker/etc/docker/daemon.json
. Если такой файл отсутствует, создайте его:{ "default-shm-size": "2g" }
Значение
2g
устанавливает размер разделяемой памяти в 2 гигабайта. Это значение следует подобрать исходя из потребностей и доступных системных ресурсов.После внесения изменений перезапустите Docker:
sudo systemctl restart docker
Сборка образа#
Для сборки образа можно использовать Docker или Podman.
Пример команды для запуска сборки:
sudo ansible-builder build \
-t my-ee:latest \
-f execution-environment.yml \
-c ./context \
--container-runtime [docker|podman] \
--build-arg RUN_OPTS="--privileged" \
-vvv
где:
ansible-builder build
запускает процесс сборки образа.-t my-ee:latest
– локальная метка образа, включающая название и версию.-f execution-environment.yml
– путь к файлу с параметрами среды исполнения.-c ./context
– путь к каталогу с дополнительными файлами, которые должны быть включены в образ.--container-runtime [docker|podman]
– инструмент контейнеризации для сборки образа:podman
;docker
.
Значение по умолчанию –
podman
.--build-arg RUN_OPTS="--privileged"
добавляет аргументы к процессу сборки, например, запуск контейнера в привилегированном режиме. Это может быть необходимо для выполнения определенных операций, требующих расширенных прав в контейнере.-vvv
– максимально подробный вывод сообщений о ходе сборки.