ansible.cfg

Тема дорожной карты · Ansible

Файл ansible.cfg является ключевым конфигурационным файлом Ansible, который определяет поведение системы при выполнении playbook и ad hoc команд. Он играет важную роль в обеспечении согласованности настроек и поведения Ansible в рамках одного каталога или пользовательского контекста. Ansible ищет ansible.cfg в следующем порядке: сначала в переменной окружения ANSIBLE_CONFIG, затем в текущем рабочем каталоге (./ansible.cfg), затем в домашнем каталоге пользователя (~/.ansible.cfg), и наконец в системном каталоге (/etc/ansible/ansible.cfg).

Секция [defaults] в ansible.cfg содержит наиболее часто изменяемые параметры, такие как inventory, remote_user, private_key_file, forks, host_key_checking и callback_plugins. Эти параметры позволяют настроить основные аспекты работы Ansible, такие как управление инвентарем, настройка пользователя для подключения к удаленным хостам, использование приватных ключей для SSH-соединений, количество одновременных задач и настройка проверки ключей хоста. Секция [ssh_connection] предоставляет доступ к параметру pipelining, который может значительно ускорить выполнение команд, особенно при работе с большими количествами хостов.

Поскольку Ansible автоматически подхватывает конфигурационный файл уровня проекта, если он находится в корне проекта, добавление ansible.cfg в корневой каталог проекта является стандартным способом обеспечения единых настроек Ansible для всей команды.

Как это работает

ansible.cfg на control-node: установка Ansible через pip install ansible (рекомендуется, так как это обеспечивает более свежую версию) или через установку дистрибутивных пакетов apt install ansible или dnf install ansible. Конфигурационные параметры Ansible могут быть настроены в файле ansible.cfg (переходящему проекту), ~/.ansible.cfg или /etc/ansible/ansible.cfg. Ключевые параметры включают inventory, roles_path, collections_path, host_key_checking, pipelining, gathering. Соединение требует Python на таргете (любая современная версия), SSH-доступ и sudo при эскалации.

Когда применять

ansible.cfg следует использовать для настройки проекта в virtualenv (python -m venv .venv && pip install ansible) для каждого проекта — пиннинг версии критичен для воспроизводимости. Параметр pipelining = true для ускорения выполнения команд (требует отключения requiretty в sudoers). Параметр host_key_checking = false следует использовать только в доверенных средах, либо установите ansible-galaxy collection install ansible.utils для управления ключами. Используйте ansible-playbook --syntax-check в CI для проверки синтаксиса playbook.

Типичные ошибки

Типичные ошибки при использовании ansible.cfg включают использование дистрибутивного Ansible, который может отставать от коллекций, что приводит к ошибкам типа TypeError или module-not-found. Установка host_key_checking = false повсеместно увеличивает риск MITM-атак. Коллизия между pip и системным Python часто приводит к конфликтам, поэтому всегда следует использовать virtualenv. Наконец, отсутствие параметра ssh_args для прыжкового хоста может привести к ошибкам соединения.

Связанные понятия

Полезные ресурсы