Введение
Современные рабочие процессы в стиле 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.


