Файл определения среды исполнения#

Файл определения среды исполнения имеет формат 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_, выполняются после соответствующих этапов.

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

  1. prepend_base;

  2. append_base;

  3. prepend_galaxy;

  4. append_galaxy;

  5. prepend_builder;

  6. append_builder;

  7. prepend_final;

  8. 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