Настройка ansible-navigator и сред исполнения (Execution Environments)

AnsibleBeginner
Практиковаться сейчас

Введение

Современные рабочие процессы в стиле EX294 включают использование ansible-navigator, поскольку этот инструмент позволяет запускать автоматизацию с единообразным интерфейсом и, при наличии, использовать среды исполнения (execution environments). В данной виртуальной машине LabEx RHEL 10 этот инструмент уже доступен, и в этой лабораторной работе мы будем использовать локальный режим исполнения для обеспечения стабильности и высокой скорости работы.

В ходе этой лабораторной работы вы создадите файл ansible-navigator.yml, настроите режим вывода stdout, отключите использование сред исполнения для локальной среды и запустите плейбук с помощью navigator.

Создание проекта для Navigator

На этом этапе вы создадите структуру проекта, инвентарь и параметры Ansible по умолчанию, необходимые для работы navigator. Navigator считывает многие из тех же файлов проекта, что и ansible-playbook.

Создайте директории и перейдите в проект.

cd /home/labex/project
mkdir -p rhce-ansible/{inventory,playbooks}
cd rhce-ansible

Создайте инвентарь.

cat > inventory/hosts <<'EOF'
[control]
control ansible_connection=local
EOF

Этот инвентарь использует один локальный хост-алиас, чтобы сосредоточиться на поведении navigator, а не на SSH. Алиас важен: navigator передает плейбук в Ansible, а Ansible разрешает hosts: control через инвентарь.

Создайте ansible.cfg, чтобы и navigator, и Ansible использовали один и тот же инвентарь.

cat > ansible.cfg <<'EOF'
[defaults]
inventory = ./inventory/hosts
retry_files_enabled = False
interpreter_python = auto_silent
EOF

Наличие параметра inventory в ansible.cfg означает, что последующие команды ansible-navigator run не потребуют явного указания опции -i. Это первая точка соприкосновения между рабочим процессом navigator и стандартными настройками проекта Ansible.

Проверка доступности Navigator

На этом этапе вы убедитесь, что ansible-navigator установлен, и узнаете его версию. Проверка инструмента перед написанием конфигурации упрощает диагностику возможных ошибок.

Перед выполнением команд на этом этапе вернитесь в директорию проекта, чтобы относительные пути указывали на проект Ansible.

cd /home/labex/project/rhce-ansible

Выполните команду проверки версии.

ansible-navigator --version

В выводе должен отобразиться номер версии ansible-navigator.

Если эта команда работает, вы знаете, что инструмент установлен, прежде чем приступать к отладке конфигурации. Такое разделение полезно: отсутствие инструмента и некорректный файл ansible-navigator.yml вызывают совершенно разные проблемы.

Запросите справку по подкоманде run в navigator.

ansible-navigator run --help | sed -n '1,12p'

Вывод справки подтверждает имя подкоманды и показывает, что navigator ожидает путь к плейбуку. Вам не нужно запоминать каждую опцию; цель — научиться запрашивать помощь у установленного инструмента.

Создание файла ansible-navigator.yml

На этом этапе вы создадите конфигурацию navigator. Настройка mode: stdout заставляет navigator выводить данные в стандартный терминал, что идеально подходит для учебных лабораторных работ. Настройка execution-environment.enabled: false позволяет выполнять задачи локально в этой виртуальной машине RHEL 10.

Перед выполнением команд на этом этапе вернитесь в директорию проекта.

cd /home/labex/project/rhce-ansible

Создайте ansible-navigator.yml.

cat > ansible-navigator.yml <<'EOF'
---
ansible-navigator:
  mode: stdout
  execution-environment:
    enabled: false
  playbook-artifact:
    enable: false
EOF

Для этой лабораторной работы важны три настройки. mode: stdout оставляет вывод в терминале, execution-environment.enabled: false указывает navigator использовать локальную установку Ansible, а отключение playbook-artifact позволяет избежать создания лишних файлов результатов, которые могли бы отвлекать от основного процесса.

Отобразите содержимое файла, чтобы проверить отступы. Отступы в YAML являются частью синтаксиса.

sed -n '1,20p' ansible-navigator.yml

Убедитесь, что mode, execution-environment и playbook-artifact вложены в ansible-navigator. Если один из этих ключей начинается не с той колонки, YAML может интерпретировать структуру иначе, чем вы планировали.

Создание тестового плейбука для Navigator

На этом этапе вы напишете небольшой плейбук для запуска через navigator. Плейбук представляет собой YAML-список сценариев (plays). Каждый сценарий определяет целевые хосты и задачи.

Перед выполнением команд на этом этапе вернитесь в директорию проекта.

cd /home/labex/project/rhce-ansible

Создайте playbooks/navigator-check.yml.

cat > playbooks/navigator-check.yml <<'EOF'
---
- name: Check navigator execution
  hosts: control
  gather_facts: false
  tasks:
    - name: Write navigator proof file
      ansible.builtin.copy:
        dest: /home/labex/project/rhce-ansible/navigator-proof.txt
        content: navigator ran this playbook
        mode: '0644'
EOF

Плейбук создает файл в директории проекта, чтобы у вас было наглядное доказательство после запуска. Модуль copy идемпотентен: он изменяет файл только в том случае, если содержимое или права доступа отличаются от заданного состояния.

Используйте ansible-playbook --syntax-check перед запуском. Проверка синтаксиса позволяет выявить ошибки в YAML и структуре плейбука без внесения изменений на хосте.

ansible-playbook playbooks/navigator-check.yml --syntax-check

Проверка синтаксиса должна вывести строку playbook:. Она не выполняет задачи, но подтверждает, что Ansible может прочитать плейбук до того, как его запустит navigator.

Запуск плейбука через Navigator

На этом этапе вы запустите плейбук с помощью navigator. Подкоманда run выполняет плейбук, а конфигурация проекта делает вывод читаемым в текущем терминале.

Перед выполнением команд на этом этапе вернитесь в директорию проекта.

cd /home/labex/project/rhce-ansible

Запустите плейбук.

ansible-navigator run playbooks/navigator-check.yml

Успешный отчет должен показать failed=0. Убедитесь, что файл-доказательство был создан.

Поскольку настроен mode: stdout, вывод должен выглядеть так же, как при обычном запуске ansible-playbook. Сначала прочитайте отчет, а затем проверьте файл-доказательство, чтобы сопоставить результат задачи с реальным файлом на диске.

cat navigator-proof.txt

Резюме

Вы настроили ansible-navigator для локального рабочего процесса в LabEx RHEL 10, написали корректный плейбук и запустили его через navigator. Это дает вам воспроизводимую модель исполнения для последующих лабораторных работ по RHCE Ansible.