Руководство по средам выполнения
Среды выполнения Ansible (EE) — это образы контейнеров, объединяющие ansible-core, коллекции и их зависимости Python и системные зависимости. Это стандартная среда выполнения для Red Hat Ansible Automation Platform и AWX, заменившая прежнюю модель virtualenv. Их также можно использовать вне RHAAP и AWX с помощью ansible-navigator или непосредственно с помощью ansible-runner.
Что выполняется в EE
В EE выполняются только плагины на стороне контроллера. Их зависимости Python и системные зависимости должны быть установлены в EE. К ним относятся: плагины поиска, плагины инвентаризации, плагины обратного вызова, плагины подключения, плагины повышения привилегий и плагины фильтрации.
Модули выполняются на управляемых узлах и передаются туда во время выполнения — их зависимости должны быть установлены на целевом узле, а не в EE.
Примечание
Исключение составляют модули, делегированные localhost (например, взаимодействующие с удалённым API): они выполняются на контроллере, поэтому их зависимости должны быть доступны в EE.
Почему community.general не предоставляет метаданные EE
community.general включает десятки плагинов на стороне контроллера, охватывающих очень широкий спектр технологий. Объединение зависимостей для всех них в одном образе EE почти наверняка приведёт к неразрешимым конфликтам — как внутри коллекции, так и с другими коллекциями или инструментами (например, ansible-lint), использующими тот же образ.
По этой причине community.general не предоставляет метаданные о пакетах Python или системных пакетах. Предполагается, что пользователи будут создавать специализированные минимальные EE, содержащие только зависимости, необходимые для конкретных используемых ими плагинов.
Как найти необходимые зависимости
Каждый плагин, имеющий внешние зависимости, документирует их в поле requirements. Проверить их можно с помощью ansible-doc:
$ ansible-doc -t lookup community.general.some_lookup | grep -A 10 "REQUIREMENTS"
Или найдите страницу документации плагина на сайте docs.ansible.com.
Например, плагин поиска, взаимодействующий с внешней службой, может указывать:
requirements: - some-python-library >= 1.2
Плагин инвентаризации, использующий REST API, может указывать:
requirements: - requests - some-sdk
Это пакеты, которые нужно добавить в EE.
Создание минимальной EE с помощью ansible-builder
ansible-builder — стандартный инструмент для создания EE.
Установите его с помощью:
$ pip install ansible-builder
Создайте execution-environment.yml в собственном проекте — не внутри community.general — и включите в него только зависимости, необходимые для используемых вами плагинов:
version: 3
dependencies:
galaxy:
collections:
- name: community.general
python:
- some-python-library>=1.2
- requests
system:
- libxml2-devel [platform:rpm]
images:
base_image:
name: ghcr.io/ansible/community-ee-base:latest
Затем соберите образ:
$ ansible-builder build -t my-custom-ee:latest
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/general/docsite/guide_ee.html