Ansible Navigator#

Ansible Navigator предоставляет удобный единый интерфейс для использования возможностей многих утилит Ansible в командной строке. Ansible Navigator может вызывать эти утилиты из среды исполнения (основной рекомендуемый вариант использования) или непосредственно из рабочей станции.

Установка#

Для установки Ansible Navigator выполните следующие действия:

  1. Подключите репозиторий Astra Automation.

    Инструкция по подключению репозитория
    1. В каталоге /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.

      Доступные версии продукта опубликованы в таблице История обновлений.

    2. Обновите список доступных пакетов:

      sudo apt update
      
  2. Выполните команду:

    sudo apt-get install ansible-navigator --yes
    

Вместе с Ansible Navigator также устанавливаются:

  • Ansible Builder;

  • Ansible Lint;

  • Ansible Runner;

  • Docker.

    Совет

    Вместо Docker рекомендуется использовать Podman. Необходимо учесть, что для корректной работы Podman следует провести дополнительные настройки.

Установка при отсутствии доступа к интернету описана в документе Средства разработки.

Команды и утилиты#

Основу Ansible Navigator составляет утилита ansible-navigator, вызов которой имеет следующий вид:

ansible-navigator <command> [<arguments>]

Здесь:

  • <command> – команда;

  • <arguments> – аргументы.

Команды, используемые для вызова других утилит Ansible:

Команда

Вызываемая утилита

Пример

builder

ansible-builder

ansible-navigator builder build --tag ee:0.0.1

config

ansible-config

ansible-navigator config init

doc

ansible-doc

ansible-navigator doc ansible.builtin.apt

inventory

ansible-inventory

ansible-navigator inventory -i ./inventory.ini

lint

ansible-lint

ansible-navigator lint ./playbooks/*.yml

run

ansible-playbook

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 предоставляет псевдографический интерфейс следующего вида:

 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

Этот интерфейс состоит из следующих элементов, сверху вниз:

  1. Заголовки столбцов. Первый столбец не имеет названия и используется для вывода номера пункта списка.

  2. Список записей.

  3. Строка с подсказками.

Интерактивный режим обладает следующими особенностями:

  • Для прокрутки списка используются клавиши , , PgUp и PgDn.

  • Для завершения работы с Ansible Navigator или перехода на уровень выше используется клавиша Esc.

  • Для ввода команд и перехода к пунктам списка используется следующая последовательность действий:

    1. Ввести символ : и сразу же после него название команды или номер строки, например, :help или :19.

    2. Нажать Enter.

    Совет

    Для перехода к строкам с номерами от 0 до 9 можно использовать быстрый ввод – достаточно нажать соответствующую клавишу цифрового ряда клавиатуры.

  • При работе с некоторыми разделами можно использовать клавиши - и + для перехода к предыдущему и следующему пунктам списка соответственно.

Интерактивный режим может быть полезен для получения детальных сведений о действующих настройках Ansible Navigator, образах среды исполнения, коллекциях и так далее.

Неинтерактивный режим работы#

При запуске в неинтерактивном режиме Ansible Navigator выполняет команды без взаимодействия с пользователем. Вывод выполняемых команд направляется в стандартный поток вывода stdout.

Неинтерактивный режим может быть полезен при использовании Ansible Navigator в сценариях командной строки, когда взаимодействие с пользователем не требуется.

Настройки#

Значения настроек Ansible Navigator могут быть заданы следующими способами:

  • аргументы командной строки;

  • переменные окружения;

  • конфигурационный файл.

При запуске Ansible Navigator выполняет поиск своего конфигурационного файла в следующем порядке:

  1. Путь, указанный в переменной окружения ANSIBLE_NAVIGATOR_CONFIG.

  2. Файл ansible-navigator.<ext> в каталоге проекта.

  3. Файл .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:
  #     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-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.

Получение сведений об образах среды исполнения#

Для получения сведения о составе образов среды исполнения выполните следующие действия:

  1. Выполните команду 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
    
  2. Для просмотра сведений об образе aa-full-ee:0.1.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
      
    2. Нажмите соответствующую клавишу для перехода в нужный раздел. Например, для выбора раздела 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
      
    3. Для просмотра сведений о пакете cffi введите строку :11 и нажмите Enter.

  3. Для возврата в предыдущее меню нажмите Esc.

Получение сведений о коллекциях#

Для получения сведения о коллекциях, входящих в образ среды исполнения aa-full-ee:latest, выполните следующие действия:

  1. Выполните команду 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
    
  2. Для просмотра сведений о коллекции astra.grafana введите строку :15 и нажмите Enter.

    В терминал выводится список модулей и ролей, входящих в коллекцию.

  3. Для просмотра сведений о нужном модуле или роли введите : и номер нужной строки, после чего нажмите Enter.

  4. Для возврата в предыдущее меню нажмите Esc.