Файл определения среды исполнения#
Файл определения среды исполнения имеет формат YAML и содержит настройки, используемые Ansible Builder при создании образа контейнера среды исполнения.
version
#
Целочисленное значение, которое задает версию схемы файла определения среды исполнения.
Значение по умолчанию – 1
.
При использовании Ansible Builder версии 3.x
рекомендуется в этом поле установить значение 3
:
---
version: 3
build_arg_defaults
#
Значения по умолчанию для переменных окружения, используемых при сборке образа среды исполнения:
ANSIBLE_GALAXY_CLI_COLLECTION_OPTS
;ANSIBLE_GALAXY_CLI_ROLE_OPTS
;PKGMGR_PRESERVE_CACHE
.
Значения, указанные в build_arg_defaults
, будут сохранены в файл определения образа Containerfile
и будут применены даже при запуске сборки образа среды исполнения вручную.
Подробное описание аргументов см. в справочнике параметров и команд Ansible Builder.
Примечание
Значения, заданные в значении аргумента командной строки --build-arg
, имеют более высокий приоритет, чем заданные в файле определения среды исполнения.
dependencies
#
В разделе dependencies
указываются пакеты и библиотеки, которые необходимо установить в конечный образ.
dependencies.ansible_core
#
Версия пакета ansible-core
.
Важно
Версия пакета указывается в соответствии с требованиями PEP 508.
dependencies:
ansible_core:
package_pip: ansible-core==2.15.6
dependencies.ansible_runner
#
Версия пакета ansible_runner
.
Важно
Версия пакета указывается в соответствии с требованиями PEP 508.
dependencies:
ansible_runner:
package_pip: ansible-runner==2.3.2
dependencies.galaxy
#
Путь к файлу со списком зависимостей или список зависимостей.
Путь к файлу зависимостей указывается относительно каталога, содержащего файл определения среды исполнения.
Рекомендуемое имя файла – requirements.yml
.
При явном указании зависимостей в файле определения среды исполнения списки коллекций и ролей указываются в значениях параметров dependencies.galaxy.collections
и dependencies.galaxy.roles
соответственно.
Примеры заполнения:
dependencies:
galaxy: requirements.yml
dependencies:
galaxy:
collections:
- astra.ald_pro
- astra.brest
- astra.rupost
version: 4.0.0
dependencies.python
#
Путь к файлу зависимостей Python.
Важно
Содержимое файла зависимостей Python должно быть оформлено в соответствии с требованиями PEP 508.
Путь к файлу зависимостей указывается относительно каталога, содержащего файл определения среды исполнения.
Рекомендуемое имя файла – requirements.txt
.
dependencies.python_interpreter.package_system
#
Название системного пакета, отвечающего за интерпретатор Python нужной версии.
dependencies:
python_interpreter:
package_system: python3.11
dependencies.python_interpreter.python_path
#
Путь к интерпретатору Python, который должен использоваться по умолчанию.
dependencies:
python_interpreter:
python_path: /usr/bin/python3.11
dependencies.system
#
Имя файла в формате BINDEP со списком системных пакетов или список системных пакетов, которые должны быть установлены в образе.
Рекомендуемое имя файла – bindep.txt
.
dependencies:
system: bindep.txt
dependencies.exclude
#
Список зависимостей, которые не должны быть установлены в образ. Значения задаются в следующих параметрах:
dependencies.exclude.python
– список зависимостей Python.dependencies.exclude.system
– список системных зависимостей.dependencies.exclude.all_from_collections
– исключить все системные зависимости и зависимости Python, связанные с указанными коллекциями.
Сопоставление названий исключаемых зависимостей может выполняться по простому совпадению строки или регулярному выражению. В обоих случаях сравнение выполняется без учета регистра.
Чтобы строка интерпретировалась как регулярное выражение, добавьте в ее начало символ ~
.
Примечание
Регулярное выражение должно соответствовать полному названию пакета или коллекции.
Например, регулярное выражение ~foo.
соответствует строке foobar
частично, а ~foo.+
– полностью.
При обеих формах сопоставления строка исключения будет сравниваться с простым названием пакета или коллекции.
Например, чтобы исключить системный пакет с названием foo [!platform:gentoo]
, строка исключения должна иметь значение foo
.
Чтобы исключить пакет Python bar==1.0.0
, строка должна иметь значение bar
.
Примеры:
dependencies:
exclude:
python:
- docker
system:
- python3-Cython
dependencies:
exclude:
all_from_collections:
- ~community\..+
dependencies:
python: requirements.txt
system: bindep.txt
galaxy: requirements.yml
ansible_core:
package_pip: ansible-core==2.15.6
ansible_runner:
package_pip: ansible-runner==2.3.1
python_interpreter:
package_system: "python310"
python_path: "/usr/bin/python3.10"
dependencies:
python:
- pywinrm
system:
- iputils [platform:rpm]
galaxy:
collections:
- name: community.windows
- name: ansible.utils
version: 2.10.1
ansible_core:
package_pip: ansible-core==2.15.6
ansible_runner:
package_pip: ansible-runner==2.3.1
python_interpreter:
package_system: "python310"
python_path: "/usr/bin/python3.10"
images.base_image.name
#
Название базового образа контейнера.
images:
base_image:
name: hub.astra-automation.ru/aa/aa-base-ee:latest
additional_build_files
#
Список файлов, которые должны быть добавлены в контекст сборки.
Затем на них можно ссылаться или копировать в образ с помощью команд, указанных в additional_build_steps
.
Каждый элемент списка должен быть словарем, содержащим следующие ключи:
src
– путь к исходному файлу или каталогу, который необходимо добавить в контекст сборки. Это может быть либо абсолютный путь (например,/home/user/.ansible.cfg
), либо путь относительно файла описания среды исполнения. Относительные пути могут быть глобальным выражением, соответствующим одному или нескольким файлам (например,files/*.cfg
).dest
– путь к целевому размещению файла в подкаталоге контекста сборки. Если путь содержит названия несуществующих каталогов, они будут созданы автоматически.
additional_build_files:
- src: files/ansible.cfg
dest: configs
additional_build_steps
#
Дополнительные команды, выполняемые на различных этапах сборки.
Названия вложенных параметров состоят из префикса prepend_
или append_
и названия этапа.
Команды, перечисленные в разделах с префиксом prepend_
, выполняются до соответствующих этапов.
Команды, перечисленные в разделах с префиксом append_
, выполняются после соответствующих этапов.
Таким образом, необходимые команды могут быть указаны в следующих разделах, в порядке выполнения:
prepend_base
;append_base
;prepend_galaxy
;append_galaxy
;prepend_builder
;append_builder
;prepend_final
;after_final
.
Команды могут быть заданы в виде многострочной записи или в отдельных элементах списка:
additional_build_steps:
prepend_final: |
RUN whoami
RUN cat /etc/os-release
additional_build_steps:
append_final:
- RUN echo
- RUN ls -la /etc