Настройка конфигурации Ansible Core#

Настройка конфигурации Ansible Core осуществляется через файлы:

  • глобальный файл конфигурации - обычно находится в /etc/ansible/ansible.cfg;

  • пользовательский файл конфигурации - находится в домашнем каталоге пользователя - ~/.ansible.cfg;

  • локальный файл конфигурации - может находиться в каталоге проекта, в котором запускается Ansible Core, в файле ansible.cfg.

Изменения в файлы конфигурации ansible.cfg можно внести:

  • напрямую с помощью текстового редактора, например, nano (подробнее - в разделе «Утилита nano» Базы знаний);

  • через переопределение переменных окружения (ANSIBLE_CONFIG, ANSIBLE_INVENTORY, ANSIBLE_REMOTE_USER и проч.), например, для указания другого файла конфигурации используйте команду:

    export ANSIBLE_CONFIG=<path_to_custom_file>.cfg
    
  • с помощью команд Ansible Core, например, для переопределения значения поля remote_user, заданного в ansible.cfg, используйте команду:

    ansible-playbook <playbook>.yml -i inventory --user=<username>
    

Порядок обработки источников конфигурации:

  1. ANSIBLE_CONFIG - переменная окружения, если она установлена;

  2. ansible.cfg в текущем каталоге;

  3. ~/.ansible.cfg в домашнем каталоге;

  4. /etc/ansible/ansible.cfg по умолчанию.

Создание ansible.cfg#

  • Создайте конфигурационный файл Ansible Core с настройками по умолчанию:

    ansible-config init --disabled > ansible.cfg
    
  • Включите доступные плагины для создания более полной конфигурации Ansible Core:

    ansible-config init --disabled -t all > ansible.cfg
    

Основные параметры конфигурации#

В файле ansible.cfg можно настроить различные параметры, в том числе:

  • [defaults] - основные настройки по умолчанию:

    • inventory - указывает путь к файлу inventory;

    • remote_user - указывает пользователя, под которым будут выполняться задачи на удаленных хостах;

    • host_key_checking - включает или отключает проверку ключей хостов (по умолчанию включена).

  • [privilege_escalation] - настройки для повышения привилегий:

    • become - указывает, нужно ли использовать повышение привилегий (например, с помощью sudo);

    • become_method - задает метод повышения привилегий (например, sudo, su).

  • [ssh_connection] - настройки для SSH-соединений:

    • ssh_args - задает дополнительные аргументы для SSH;

    • pipelining - включает или отключает использование pipelining (техники, позволяющей ускорить выполнение playbooks посредством уменьшения количества SSH-соединений, необходимых для выполнения задач на удаленных хостах) для ускорения выполнения задач.

Подробнее про параметры файла ansible.cfg - в разделе «Конфигурационные файлы ansible.cfg».

Пример ansible.cfg#

Пример содержимого файла ansible.cfg:

[defaults]
inventory = ./inventory
remote_user = ansible_user
host_key_checking = False

[privilege_escalation]
become = True
become_method = sudo

[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
pipelining = True

Где -o ControlMaster=auto -o ControlPersist=60s в поле ssh_args включает режим управления соединениями, позволяющий использовать одно SSH-соединение для нескольких команд, и указывает, что после завершения последней команды SSH-соединение должно оставаться открытым в течение 60 секунд.

Проверка конфигурации#

Убедитесь, что Ansible Core использует необходимые параметры конфигурации:

ansible-config view

Команда выведет текущие настройки конфигурации Ansible Core. Подробнее о ansible-config - в разделе «Команда ansible-config».