Запуск через Ansible Navigator#
Утилита ansible-navigator запускает инструменты Ansible внутри EE и позволяет использовать один состав Ansible Core, коллекций и библиотек для локальной проверки наборов сценариев.
Версию Ansible Core определяет образ среды исполнения, а не версия Navigator на рабочей станции.
Для воспроизводимости необходимо закрепить образ, конфигурацию, коллекции, набор сценариев и входные данные.
Само использование Navigator не делает результат повторяемым при изменении этих компонентов или состояния целевых узлов.
Предварительные требования#
Для примера необходимы следующие компоненты на рабочей станции Linux:
Ansible Navigator 25.4.1, входящий в состав Content Development Kit;
работающий Docker и доступ учетной записи к его службе;
образ
aa-minimal-ee:2.5.0-aa2.1из набора сред исполнения.
Пример использует Docker явно.
При использовании Podman необходимо изменить container-engine на podman и загрузить образ в хранилище Podman той же учетной записи.
Образы в хранилище Docker не становятся доступными Podman автоматически.
Все команды далее необходимо выполнять на рабочей станции из одного каталога проекта. Набор сценариев проверяет только локальную среду исполнения и не требует удаленных узлов.
Подготовка проекта#
Для подготовки проекта выполните следующие действия:
Проверьте версию Navigator:
ansible-navigator --versionОжидаемый результат:
ansible-navigator 25.4.1.Загрузите образ среды исполнения:
docker pull hub.astra-automation.ru/aa-2.1/aa-minimal-ee:2.5.0-aa2.1
Создайте файл
ansible-navigator.ymlс настройками запуска:--- ansible-navigator: mode: stdout execution-environment: enabled: true container-engine: docker image: hub.astra-automation.ru/aa-2.1/aa-minimal-ee@sha256:cc11e1a2060f95d80903662cda6fcaddb4ace735cd10fff2831bc56e9723127a pull: policy: never environment-variables: set: ANSIBLE_HOST_KEY_CHECKING: "True" playbook-artifact: enable: false
Ссылка с контрольной суммой
sha256закрепляет содержимое проверенного образа. Политикаneverзапрещает автоматическое получение образа, поэтому предыдущий шаг обязателен. Режимstdoutвыводит результат в терминал без интерактивного интерфейса. Настройкаplaybook-artifact.enable: falseотключает сохранение артефакта набора сценариев Navigator. ПеременнаяANSIBLE_HOST_KEY_CHECKINGвключает проверку ключа сервера при последующем подключении по SSH.Создайте полное описание инвентаря
inventory.yml:--- all: hosts: localhost: ansible_connection: local
Создайте полный набор сценариев
check.yml:--- - name: Проверка среды исполнения hosts: localhost gather_facts: false tasks: - name: Вывод версии Ansible Core ansible.builtin.debug: msg: "Ansible Core {{ ansible_version['full'] }}"
Запуск и проверка результата#
Для запуска набора сценариев выполните команду:
ansible-navigator run check.yml -i inventory.yml
Ожидаемый результат: задача выводит Ansible Core 2.18.3, а итоговая сводка для localhost содержит changed=0 и failed=0.
Здесь localhost означает контейнер EE, поскольку Ansible Core работает внутри него.
Для проверки фактического окружения выполните команду:
ansible-navigator exec -- ansible --version
Ожидаемый результат: вывод содержит ansible [core 2.18.3] и путь к Ansible внутри контейнера.
Соответствие командам Ansible Core#
В режиме stdout используйте следующие команды Navigator для тех же файлов проекта:
Команда
runзапускает набор сценариев, как утилитаansible-playbook:ansible-navigator run check.yml -i inventory.yml
Команда
docпоказывает документацию модуля, как утилитаansible-doc:ansible-navigator doc ansible.builtin.debug
Команда
inventoryвыводит описание инвентаря, как утилитаansible-inventory:ansible-navigator inventory -i inventory.yml --list
Команда
configпоказывает настройки Ansible, как утилитаansible-config:ansible-navigator config dump --only-changed
Другие утилиты запускайте через
exec. Например, для проверки версииansible-galaxyвыполните команду:ansible-navigator exec -- ansible-galaxy --version
Команда doc читает документацию компонентов выбранного образа, а config показывает настройки Ansible внутри контейнера.
В вывод config входят также переменные окружения, которые задает средство запуска.
Для ansible, ansible-galaxy и ansible-vault используйте exec -- с полной командой.
Полный перечень аргументов приведен в справочнике Navigator.
Файлы проекта и подключение по SSH#
Navigator предоставляет контейнеру доступ к каталогу проекта, поэтому относительные пути к набору сценариев, описанию инвентаря и ansible.cfg можно сохранить.
Файл за пределами каталога проекта необходимо отдельно предоставить контейнеру и указать путь, доступный внутри EE.
То же правило действует для приватных ключей SSH и сертификатов.
Для подключения к подготовленному целевому узлу Linux создайте на рабочей станции отдельный каталог с приватным ключом automation и файлом known_hosts с проверенным ключом сервера.
Не размещайте приватный ключ в репозитории проекта.
Если ключ защищен паролем, предварительно загрузите его в работающий агент SSH с помощью ssh-add.
Navigator предоставляет среде исполнения доступ к агенту через SSH_AUTH_SOCK.
Добавьте в execution-environment файла ansible-navigator.yml настройку подключения каталога только для чтения:
volume-mounts:
- src: <ssh_directory>
dest: /runner/ssh
options: ro
Здесь:
<ssh_directory> – абсолютный путь к подготовленному каталогу на рабочей станции.
Фрагмент volume-mounts должен находиться на одном уровне с image и container-engine.
Не заменяйте им весь файл настроек.
Пример полного файла remote-inventory.yml:
---
all:
children:
linux:
hosts:
example:
ansible_host: <address>
vars:
ansible_user: <user>
ansible_ssh_private_key_file: /runner/ssh/automation
ansible_ssh_common_args: -o UserKnownHostsFile=/runner/ssh/known_hosts
Здесь:
<address> – IP-адрес или FQDN целевого узла, соответствующий записи в
known_hosts;<user> – учетная запись целевого узла, для которой настроен публичный ключ SSH.
Для проверки подключения выполните команду:
ansible-navigator exec -- ansible linux -i remote-inventory.yml -m ansible.builtin.ping
Ожидаемый результат: модуль возвращает ping: pong для узла example.
Если Ansible не находит файл, проверьте путь внутри контейнера и настройку volume-mounts.
Если клиент сообщает об ошибке проверки ключа сервера, сверьте ключ с администратором узла и исправьте запись в known_hosts.