Ansible Navigator#
Ansible Navigator предоставляет удобный единый интерфейс для использования возможностей многих утилит Ansible в командной строке. Ansible Navigator может вызывать эти утилиты из среды исполнения (основной рекомендуемый вариант использования) или непосредственно из рабочей станции.
Установка#
Для установки Ansible Navigator выполните следующие действия:
Подключите репозиторий Astra Automation.
Инструкция по подключению репозитория
В каталоге
/etc/apt/sources.list.d/
создайте файлastra-automation.list
со ссылкой на репозиторий Astra Automation:deb https://dl.astralinux.ru/aa/aa-debs-for-alse-1.8 <version> main
Вместо <version> необходимо подставить версию устанавливаемой платформы, например,
1.2-upd1
.Доступные версии продукта опубликованы в таблице История обновлений.
Обновите список доступных пакетов:
sudo apt update
Выполните команду:
sudo apt-get install ansible-navigator --yes
Вместе с Ansible Navigator также устанавливаются:
Ansible Runner;
Docker.
Установка при отсутствии доступа к интернету описана в документе Средства разработки.
Команды и утилиты#
Основу Ansible Navigator составляет утилита ansible-navigator
, вызов которой имеет следующий вид:
ansible-navigator <command> [<arguments>]
Здесь:
<command> – команда;
<arguments> – аргументы.
Команды, используемые для вызова других утилит Ansible:
Команда |
Вызываемая утилита |
Пример |
---|---|---|
|
ansible-navigator builder build --tag ee:0.0.1
|
|
|
ansible-navigator config init
|
|
|
ansible-navigator doc ansible.builtin.apt
|
|
|
ansible-navigator inventory -i ./inventory.ini
|
|
|
ansible-navigator lint ./playbooks/*.yml
|
|
|
ansible-navigator run ./playbook.yml -i ./inventory.yml
|
Собственные команды Ansible Navigator:
collections
– просмотр сведений об имеющихся коллекциях Ansible.exec
– запуск команды Ansible в среде исполнения.images
– управление образами среды исполнения.replay
– просмотр артефактов, собранных во время выполнения сценариев.settings
– просмотр действующих значений настроек Ansible Navigator.welcome
– интерактивный режим работы.
Подробное описание команд и возможных аргументов см. в справочных данных.
Режимы работы#
Ansible Navigator может работать в интерактивном (по умолчанию) и неинтерактивном режимах.
Для запуска Ansible Navigator в неинтерактивном режиме добавьте аргумент --mode
со значением stdout
, например:
ansible-navigator images list --mode stdout
Интерактивный режим работы#
При запуске в интерактивном режиме Ansible Navigator предоставляет псевдографический интерфейс следующего вида:
0│Welcome
1│———————————————————————————————————————————————————————————————————————————————————————————————————
2│
3│Some things you can try from here:
4│- :collections Explore available collections
5│- :config Explore the current ansible configuration
6│- :doc <plugin> Review documentation for a module or plugin
7│- :help Show the main help page
8│- :images Explore execution environment images
9│- :inventory -i <inventory> Explore an inventory
10│- :log Review the application log
11│- :lint <file or directory> Lint Ansible/YAML files (experimental)
12│- :open Open current page in the editor
13│- :replay Explore a previous run using a playbook artifact
14│- :run <playbook> -i <inventory> Run a playbook in interactive mode
15│- :settings Review the current ansible-navigator settings
16│- :quit Quit the application
17│
18│happy automating,
19│
20│-winston
^b/PgUp page up ^f/PgDn page down ↑↓ scroll esc back :help help
Этот интерфейс состоит из следующих элементов, сверху вниз:
Заголовки столбцов. Первый столбец не имеет названия и используется для вывода номера пункта списка.
Список записей.
Строка с подсказками.
Интерактивный режим обладает следующими особенностями:
Для прокрутки списка используются клавиши ↑, ↓, PgUp и PgDn.
Для завершения работы с Ansible Navigator или перехода на уровень выше используется клавиша Esc.
Для ввода команд и перехода к пунктам списка используется следующая последовательность действий:
Ввести символ
:
и сразу же после него название команды или номер строки, например,:help
или:19
.Нажать Enter.
Совет
Для перехода к строкам с номерами от 0 до 9 можно использовать быстрый ввод – достаточно нажать соответствующую клавишу цифрового ряда клавиатуры.
При работе с некоторыми разделами можно использовать клавиши - и + для перехода к предыдущему и следующему пунктам списка соответственно.
Интерактивный режим может быть полезен для получения детальных сведений о действующих настройках Ansible Navigator, образах среды исполнения, коллекциях и так далее.
Неинтерактивный режим работы#
При запуске в неинтерактивном режиме Ansible Navigator выполняет команды без взаимодействия с пользователем.
Вывод выполняемых команд направляется в стандартный поток вывода stdout
.
Неинтерактивный режим может быть полезен при использовании Ansible Navigator в сценариях командной строки, когда взаимодействие с пользователем не требуется.
Настройки#
Значения настроек Ansible Navigator могут быть заданы следующими способами:
аргументы командной строки;
переменные окружения;
конфигурационный файл.
При запуске Ansible Navigator выполняет поиск своего конфигурационного файла в следующем порядке:
Путь, указанный в переменной окружения
ANSIBLE_NAVIGATOR_CONFIG
.Файл
ansible-navigator.<ext>
в каталоге проекта.Файл
.ansible-navigator.<ext>
в домашнем каталоге.
Здесь <ext> – расширение имени файла, .yml
, .yaml
или .json
.
Поиск прекращается при первом совпадении.
Например, если в каталоге проекта существует файл ansible-navigator.yml
, настройки из файла ~/.ansible-navigator.yml
, расположенного в домашнем каталоге, загружены не будут.
Особенности хранения настроек в конфигурационных файлах:
Доступны форматы YAML и JSON.
При использовании формата JSON название файла должно иметь расширение
.json
.При использовании формата YAML название файла должно иметь расширение
.yml
или.yaml
.В каталоге проекта и домашнем каталоге должен быть только один конфигурационный файл Ansible Navigator. В противном случае Ansible Navigator выводит сообщение об ошибке.
Пример файла с настройками
ansible-navigator.yml
#---
ansible-navigator:
# Основные настройки Ansible
ansible:
cmdline: -vv # Более подробный вывод чем обычно
config:
path: ./ansible.cfg # Путь к конфигурационному файлу Ansible
inventory:
entries: # Пути к файлам с инвентарными списками
- ./inventory.yml
# Настройки Ansible Builder
ansible-builder:
workdir: ./execution-environment/ # Рабочий каталог
# Настройки Ansible Runner
ansible-runner:
artifact-dir: ./artifacts/ # Каталог для сохранения артефактов
timeout: 600 # Ограничение по времени - 10 минут
job-events: true # Сохранение событий в журнал
# Настройки цветового оформления
color:
enable: true # Включено
osc4: true # Использовать формат OSC4
# Настройки текстового редактора
editor:
console: true # Запустить в TUI
command: emacs +{line_number} {filename} # GNU Emacs
# Настройки среды исполнения
execution-environment:
container-engine: podman # Инструмент контейнеризации - Podman
enabled: true # Использование сред исполнения разрешено
environment-variables:
pass: # Список переменных, импортируемых из текущего окружения в контейнер
- ANSIBLE_GALAXY_SERVER_VALIDATED_TOKEN
set: # Значения переменных, которые должны быть переданы в контейнер
USER: aa-service-account
HOST: hub.example.com
image: private-hub.example.com/aa-full-ee:latest # Образ EE
pull:
policy: missing # Загрузить образ только при его отсутствии
volume-mounts: # Монтирование каталогов в файловую систему контейнера
- src: ./playbooks/
dest: /playbooks
# Настройки журналирования
logging:
file: ./logs/ansible-navigator.log # Путь к файлу журнала
level: error # Игнорировать сообщения с уровнем ниже Error
# Порядок обработки настроек самого Ansible Navigator
settings:
effective: true # Показ фактических значений
sources: true # Отображать источники значений
# Часовой пояс
time-zone: Europe/Moscow
Подробное описание настроек см. в справочных данных.
Примеры#
Изучите использование Ansible Navigator в неинтерактивном и интерактивном режимах на примерах.
Использование Ansible Navigator в неинтерактивном режиме#
Для работы с Ansible Navigator в неинтерактивном режиме используйте аргумент --mode
со значением stdout
.
Получение справочной информации об использовании команды
ansible-config
в неинтерактивном режиме:ansible-navigator config --hc
Получение сведений о коллекциях, доступных в окружении используемой ОС:
ansible-navigator collections --mode stdout
Получение сведений о коллекциях, доступных в образе
aa-full-ee:latest
:ansible-navigator collections \ --eei hub.astra-automation.ru/aa-1.2/aa-full-ee:latest \ --mode stdout
Получение сведений о загруженных образах среды исполнения:
ansible-navigator images --mode stdout
Загрузка самой новой версии образа
aa-cdk
из реестра:ansible-navigator images \ --mode stdout \ --eei hub.astra-automation.ru/aa-1.2/aa-cdk:latest
Загрузка образа
aa-cdk:0.1.2
:ansible-navigator images \ --mode stdout \ --eei hub.astra-automation.ru/aa-1.2/aa-cdk:0.1.2
Использование Ansible Navigator в интерактивном режиме#
Для использования Ansible Navigator в интерактивном режиме используйте аргумент --mode
со значением interactive
.
Получение сведений об образах среды исполнения#
Для получения сведения о составе образов среды исполнения выполните следующие действия:
Выполните команду
ansible-navigator
с аргументамиimages
и--mode
:ansible-navigator images --mode interactive
В терминал выводится список образов, например:
Image Tag Execution environment Created Size 0│aa-full-ee latest True 2 weeks ago 1.09 GB 1│aa-full-ee 0.1.1 True 4 weeks ago 998 MB 2│aa-minimal-ee latest True 5 weeks ago 284 MB 3│aa-minimal-ee 1.0.3 True 5 weeks ago 281 MB 4│aa-minimal-ee 1.0.2 True 5 weeks ago 273 MB
Для просмотра сведений об образе
aa-full-ee:0.1.1
выполните следующие действия:Последовательно нажмите клавиши :, 1 и Enter.
В терминал выводится меню следующего вида:
Image: aa-full-ee:0.1.1 Description 0│Image information Information collected from image inspection 1│General information OS and python version information 2│Ansible version and collections Information about ansible and ansible collections 3│Python packages Information about python and python packages 4│Operating system packages Information about operating system packages 5│Everything All image information
Нажмите соответствующую клавишу для перехода в нужный раздел. Например, для выбора раздела Python packages нажмите 3.
Дождитесь загрузки сведений о пакетах Python. По окончании загрузки в терминал выводятся строки следующего вида:
Name Version Summary 0│ansible-compat 24.9.1 Ansible compatibility goodies ▒ 1│ansible-core 2.15.10 Radically simple IT automation ▒ 2│ansible-lint 24.9.2 Checks playbooks for practices and behavior that could potentially be im▒ 3│ansible-runner 2.4.0 "Consistent Ansible Python API and CLI with container and process isolat▒ 4│ansible-sign 0.1.1 Ansible content validation library and CLI ▒ 5│attrs 22.2.0 Classes Without Boilerplate ▒ 6│backports.ssl_match_hostname 3.7.0.1 The ssl.match_hostname() function from Python 3.5 ▒ 7│bcrypt 3.2.2 Modern password hashing for your software and your servers 8│black 24.10.0 The uncompromising code formatter. 9│bracex 2.5.post1 Bash style brace expander. 10│certifi 2022.9.24 Python package for providing Mozilla's CA Bundle. 11│cffi 1.15.1 Foreign Function Interface for Python calling C code. 12│chardet 5.1.0 Universal encoding detector for Python 3 13│charset-normalizer 3.0.1 The Real First Universal Charset Detector. Open, modern and actively mai 14│click 8.1.3 Composable command line interface toolkit 15│colorama 0.4.6 Cross-platform colored terminal text. 16│cryptography 42.0.8 cryptography is a package which provides cryptographic recipes and primi 17│distlib 0.3.6 Distribution utilities 18│dnspython 2.3.0 DNS toolkit 19│docker 7.1.0 A Python library for the Docker Engine API. 20│dumb-init 1.2.5 Simple wrapper script which proxies signals to a child 21│filelock 3.9.0 A platform independent file lock. ^b/PgUp page up ^f/PgDn page down ↑↓ scroll esc back [0-9] goto :help help
Для просмотра сведений о пакете
cffi
введите строку:11
и нажмите Enter.
Для возврата в предыдущее меню нажмите Esc.
Получение сведений о коллекциях#
Для получения сведения о коллекциях, входящих в образ среды исполнения aa-full-ee:latest
, выполните следующие действия:
Выполните команду
ansible-navigator
с аргументамиcollections
и--eei
:ansible-navigator collections \ --eei hub.astra-automation.ru/aa-1.2/aa-full-ee:latest
В терминал выводится список коллекций, например:
Name Version Shadowed Type Path 0│ansible.builtin 2.15.10 False contained /usr/lib/python3/dist-packages/ansible ▒ 1│ansible.posix 1.5.4 False contained /usr/share/ansible/collections/ansible_collections/ansible/posix ▒ 2│ansible.utils 3.0.0 False contained /usr/share/ansible/collections/ansible_collections/ansible/utils ▒ 3│astra.aa_controller 0.14.0 False contained /usr/share/ansible/collections/ansible_collections/astra/aa_controller▒ 4│astra.ald_pro 3.0.0 False contained /usr/share/ansible/collections/ansible_collections/astra/ald_pro ▒ 5│astra.astralinux 0.5.0 False contained /usr/share/ansible/collections/ansible_collections/astra/astralinux ▒ 6│astra.brest 4.0.3 False contained /usr/share/ansible/collections/ansible_collections/astra/brest ▒ 7│astra.ceph 3.0.3 False contained /usr/share/ansible/collections/ansible_collections/astra/ceph ▒ 8│astra.chrony 0.2.1 False contained /usr/share/ansible/collections/ansible_collections/astra/chrony ▒ 9│astra.cups 1.3.4 False contained /usr/share/ansible/collections/ansible_collections/astra/cups ▒ 10│astra.dcimanager 0.2.1 False contained /usr/share/ansible/collections/ansible_collections/astra/dcimanager ▒ 11│astra.dhcp 2.0.2 False contained /usr/share/ansible/collections/ansible_collections/astra/dhcp ▒ 12│astra.docker 4.0.1 False contained /usr/share/ansible/collections/ansible_collections/astra/docker 13│astra.etcd 0.2.1 False contained /usr/share/ansible/collections/ansible_collections/astra/etcd 14│astra.freeipa 0.4.1 False contained /usr/share/ansible/collections/ansible_collections/astra/freeipa 15│astra.grafana 2.0.1 False contained /usr/share/ansible/collections/ansible_collections/astra/grafana 16│astra.haproxy 2.0.1 False contained /usr/share/ansible/collections/ansible_collections/astra/haproxy 17│astra.hardening 0.3.1 False contained /usr/share/ansible/collections/ansible_collections/astra/hardening 18│astra.iscsi 0.4.2 False contained /usr/share/ansible/collections/ansible_collections/astra/iscsi 19│astra.keepalived 0.3.0 False contained /usr/share/ansible/collections/ansible_collections/astra/keepalived 20│astra.keycloak 2.0.2 False contained /usr/share/ansible/collections/ansible_collections/astra/keycloak 21│astra.memcached 3.0.1 False contained /usr/share/ansible/collections/ansible_collections/astra/memcached
Для просмотра сведений о коллекции
astra.grafana
введите строку:15
и нажмите Enter.В терминал выводится список модулей и ролей, входящих в коллекцию.
Для просмотра сведений о нужном модуле или роли введите
:
и номер нужной строки, после чего нажмите Enter.Для возврата в предыдущее меню нажмите Esc.