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.7 <version> main
Вместо <version> необходимо подставить версию устанавливаемой платформы, например,
1.1-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
– просмотр артефактов, собранных во время выполнения playbook.settings
– просмотр действующих значений настроек Ansible Navigator.welcome
– интерактивный режим работы.
Подробное описание команд и возможных аргументов см. в справочных данных.
Режимы работы#
Ansible Navigator может работать в интерактивном (по умолчанию) и неинтерактивном режимах.
Для запуска Ansible Navigator в неинтерактивном режиме добавьте аргумент --mode
со значением stdout
, например:
ansible-navigator images list --mode stdout
Интерактивный режим работы#
При запуске в интерактивном режиме Ansible Navigator предоставляет псевдографический интерфейс следующего вида:
Name Default Source Current
0│Ansible runner artifact dir True Not set Not set
1│Ansible runner rotate artifacts count True Not set Not set
2│Ansible runner timeout True Not set Not set
3│Ansible runner write job events True Defaults False
4│App False Command line settings
5│Cmdline True Not set Not set
6│Collection doc cache path True Defaults /home/vagrant/.cache/ansible-navigator/c
7│Config True Not set Not set
8│Container engine False Automatically determined docker
9│Container options True Not set Not set
10│Current settings file True None None
11│Display color True Defaults True
12│Editor command True Defaults vi +{line_number} {filename}
13│Editor console True Defaults True
14│Enable prompts True Defaults False
15│Exec command True Defaults /bin/bash
16│Exec shell True Defaults True
17│Execution environment True Defaults True
18│Execution environment image True Defaults registry.astralinux.ru/aa/aa-creator-ee:
19│Execution environment volume mounts True Not set Not set
^b/PgUp page up ^f/PgDn page down ↑↓ scroll esc back [0-9] goto :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:
#
# ansible:
# config:
# help: False
# path: /tmp/ansible.cfg
# cmdline: "--forks 15"
# doc:
# help: False
# plugin:
# name: shell
# type: become
# inventory:
# help: False
# entries:
# - /tmp/test_inventory.yml
# playbook:
# help: False
# path: /tmp/test_playbook.yml
#
# ansible-builder:
# help: False
# workdir: /tmp/
#
# ansible-lint:
# config: ~/ansible-lint.yml
# lintables: ~/myproject/
#
# ansible-runner:
# artifact-dir: /tmp/test1
# rotate-artifacts-count: 10
# timeout: 300
# job-events: False
#
# app: run
#
# collection-doc-cache-path: /tmp/cache.db
#
# color:
# enable: False
# osc4: False
#
# editor:
# command: vim_from_setting
# console: False
#
# enable-prompts: False
#
# exec:
# shell: False
# command: /bin/foo
#
# execution-environment:
# container-engine: podman
# enabled: False
# environment-variables:
# pass:
# - ONE
# - TWO
# - THREE
# set:
# KEY1: VALUE1
# KEY2: VALUE2
# KEY3: VALUE3
# image: test_image:latest
# pull:
# arguments:
# - "--tls-verify=false"
# policy: never
# volume-mounts:
# - src: "/tmp"
# dest: "/test1"
# options: "Z"
# container-options:
# - "--net=host"
#
# format: json
#
# images:
# details:
# - ansible_version
# - python_version
#
# inventory-columns:
# - ansible_network_os
# - ansible_network_cli_ssh_type
# - ansible_connection
#
logging:
level: critical
# append: False
# file: /tmp/log.txt
#
# mode: stdout
#
# playbook-artifact:
# enable: True
# replay: /tmp/test_artifact.json
# save-as: /tmp/test_artifact.json
#
# settings:
# effective: False
# sample: False
# schema: json
# sources: False
#
# time-zone: Japan
Подробное описание настроек см. в справочных данных.
Примеры#
Изучите использование Ansible Navigator в неинтерактивном и интерактивном режимах на примерах.
Использование Ansible Navigator в неинтерактивном режиме#
Для работы с Ansible Navigator в неинтерактивном режиме используйте аргумент --mode
со значением stdout
.
Получение справочной информации об использовании команды
ansible-config
в неинтерактивном режиме:ansible-navigator config --hc
Получение сведений о коллекциях, доступных в окружении используемой ОС:
ansible-navigator collections --mode stdout
Получение сведений о коллекциях, доступных в образе
aa-creator-ee:latest
:ansible-navigator collections \ --eei registry.astralinux.ru/aa/aa-creator-ee:latest \ --mode stdout
Получение сведений о загруженных образах среды исполнения:
ansible-navigator images --mode stdout
Загрузка самой новой версии образа
aa-creator-ee
из реестра:ansible-navigator images \ --mode stdout \ --eei registry.astralinux.ru/aa/aa-creator-ee:latest
Загрузка образа
aa-creator-ee:0.2.0
:ansible-navigator images \ --mode stdout \ --eei registry.astralinux.ru/aa/aa-creator-ee:0.2.0
Использование Ansible Navigator в интерактивном режиме#
Для использования Ansible Navigator в интерактивном режиме используйте аргумент --mode
со значением interactive
.
Получение сведений об образах среды исполнения#
Для получения сведения о составе образов среды исполнения выполните следующие действия:
Выполните команду
ansible-navigator
с аргументамиimages
и--mode
:ansible-navigator images --mode interactive
В терминал выводится список образов, например:
Image Tag Execution environment Created Size 0│aa-base-ee latest True 6 days ago 1.1GB 1│aa-base-ee 0.6.0 True 10 days ago 1.1GB 2│aa-base-ee 0.5.1 False 3 months ago 945MB 3│aa-creator-ee latest True 6 days ago 1.76GB 4│aa-creator-ee 0.2.0 True 10 days ago 1.76GB
Для просмотра сведений об образе
aa-creator-ee:latest
выполните следующие действия:Нажмите 3.
В терминал выводится меню следующего вида:
Image: aa-creator-ee:latest 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│aenum 3.1.15 Advanced Enumerations (compatible with Python's stdlib Enum), NamedTuples, and N 1│aiohttp 3.8.3 Async http client/server framework (asyncio) 2│aiosignal 1.3.1 aiosignal: a list of registered asynchronous callbacks 3│ansible-compat 4.1.11 Ansible compatibility goodies 4│ansible-core 2.15.10 Radically simple IT automation 5│ansible-lint 6.22.2 Checks playbooks for practices and behavior that could potentially be improved 6│ansible-pylibssh 1.0.0 Python bindings for libssh client specific to Ansible use case 7│ansible-runner 2.3.6 "Consistent Ansible Python API and CLI with container and process isolation runt 8│appdirs 1.3.0 A small Python module for determining appropriate " + "platform-specific 9│argcomplete 3.4.0 Bash tab completion for argparse 10│async-timeout 4.0.2 Timeout context manager for asyncio programs 11│attrs 23.2.0 Classes Without Boilerplate 12│bcrypt 4.1.2 Modern password hashing for your software and your servers 13│black 24.4.2 The uncompromising code formatter. 14│bracex 2.4 Bash style brace expander. 15│cachetools 5.3.2 Extensible memoizing collections and decorators 16│certifi 2024.2.2 Python package for providing Mozilla's CA Bundle. 17│cffi 1.16.0 Foreign Function Interface for Python calling C code. 18│charset-normalizer 2.1.1 The Real First Universal Charset Detector. Open, modern and actively maintained 19│click 8.1.7 Composable command line interface toolkit 20│click-help-colors 0.9.4 Colorization of help messages in Click 21│coverage 7.5.3 Code coverage measurement for Python 22│cryptography 42.0.7 cryptography is a package which provides cryptographic recipes and primitives to 23│Cython 3.0.10 The Cython compiler for writing C extensions in the Python language. 24│decorator 5.1.1 Decorators for Humans 25│dicttoxml 1.7.16 Converts a Python dictionary or other native data type into a valid XML string. 26│distlib 0.3.8 Distribution utilities 27│distro 1.9.0 Distro - an OS platform information API 28│docutils 0.19 Docutils -- Python Documentation Utilities 29│dogpile.cache 1.3.2 A caching front-end based on the Dogpile lock. 30│dumb-init 1.2.5 Simple wrapper script which proxies signals to a child 31│enrich 1.2.7 enrich ^b/PgUp page up ^f/PgDn page down ↑↓ scroll esc back [0-9] goto :help help
Для просмотра сведений о пакете
cffi
введите строку:17
и нажмите Enter.
Для возврата в предыдущее меню нажмите Esc.
Получение сведений о коллекциях#
Для получения сведения о коллекциях, входящих в образ среды исполнения aa-creator-ee:latest
, выполните следующие действия:
Выполните команду
ansible-navigator
с аргументамиcollections
и--eei
:ansible-navigator collections \ --eei registry.astralinux.ru/aa/aa-creator-ee:latest
В терминал выводится список коллекций, например:
Name Version Shadowed Type Path 0│ansible.builtin 2.15.10 False contained /usr/local/lib/python3.9/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
Для просмотра сведений о коллекции
ansible.posix
нажмите 1.В терминал выводится список модулей и функций обратного вызова (callback), входящих в коллекцию, например:
Ansible.posix Type Added Deprecated Description 0│acl module 1.0.0 False Set and retrieve file ACL information. 1│at module 1.0.0 False Schedule the execution of a command or script file via the at co 2│authorized_key module 1.0.0 False Adds or removes an SSH authorized key 3│cgroup_perf_recap callback None False Profiles system activity of tasks and full execution using cgrou 4│csh shell None False C shell (/bin/csh) 5│debug callback None False formatted stdout/stderr display 6│firewalld module None False Manage arbitrary ports/services with firewalld 7│firewalld_info module None False Gather information about firewalld 8│fish shell None False fish shell (/bin/fish) 9│json callback None False Ansible screen output as JSON 10│jsonl callback None False Ansible screen output as JSONL (lines in json format) 11│mount module 1.0.0 False Control active and configured mount points 12│patch module 1.0.0 False Apply patch files using the GNU patch tool 13│profile_roles callback None False adds timing information to roles 14│profile_tasks callback None False adds time information to tasks 15│rhel_facts module 1.5.0 False Facts module to set or override RHEL specific facts. 16│rhel_rpm_ostree module 1.5.0 False Ensure packages exist in a RHEL for Edge rpm-ostree based system 17│rpm_ostree_upgrade module 1.5.0 False Manage rpm-ostree upgrade transactions 18│seboolean module 1.0.0 False Toggles SELinux booleans 19│selinux module 1.0.0 False Change policy and state of SELinux 20│skippy callback None True Ansible screen output that ignores skipped status 21│synchronize module 1.0.0 False A wrapper around rsync to make common tasks in your playbooks qu 22│sysctl module 1.0.0 False Manage entries in sysctl.conf. 23│timer callback None False Adds time to play stats
Для просмотра сведений о модуле
mount
введите строку:11
и нажмите Enter.Для возврата в предыдущее меню нажмите Esc.