
Файл ansible.cfg управляет поведением Ansible на уровне проекта, пользователя или системы. Он задаёт пути к инвентарям, параметры подключения к удалённым хостам, настройки логирования и управление плагинами. Правильное понимание его расположения позволяет избегать конфликтов конфигураций и ускоряет отладку плейбуков.
По умолчанию Ansible ищет конфигурационный файл в четырёх местах, начиная с локальной директории проекта. Если локальный файл отсутствует, система проверяет домашнюю директорию пользователя, затем системный путь, обычно /etc/ansible/ansible.cfg. Этот порядок критичен: настройки из файла с более высоким приоритетом перекрывают предыдущие.
Настройка собственного ansible.cfg требует внимательного подхода: важно корректно задавать пути к инвентарям и ролям, а также параметры ssh-подключений. Несоблюдение этих правил может привести к ошибкам при выполнении задач или к неконсистентному поведению плейбуков. Регулярная проверка через ansible-config list помогает убедиться, что изменения применились корректно.
Основные пути поиска ansible.cfg

Ansible проверяет наличие конфигурационного файла в четырёх ключевых местах, соблюдая строгий порядок приоритета. Первым проверяется локальный файл в директории проекта: ./ansible.cfg. Этот файл имеет наивысший приоритет и перекрывает все последующие настройки.
Если локального файла нет, Ansible обращается к домашней директории пользователя, обычно ~/.ansible.cfg. Здесь удобно хранить персональные настройки для всех проектов, не вмешиваясь в системные параметры.
Следующий путь – системный конфигурационный файл, чаще всего /etc/ansible/ansible.cfg. Он применим ко всем пользователям на сервере и служит базовой конфигурацией. Любые изменения в этом файле затрагивают все плейбуки, запускаемые на системе.
Дополнительно Ansible учитывает переменную окружения ANSIBLE_CONFIG. Если она указана, путь к файлу, заданный в переменной, имеет высший приоритет и используется независимо от локальных, пользовательских и системных файлов.
Файл конфигурации в домашней директории пользователя

Файл ~/.ansible.cfg предназначен для хранения персональных настроек Ansible. Он применяется ко всем проектам текущего пользователя, если в локальной директории проекта нет собственного ansible.cfg. Использование этого файла позволяет задать индивидуальные пути к инвентарям, ролям, модулям и плагинам.
Рекомендуется явно указывать параметры подключения через SSH, таймауты и настройки логирования, чтобы избежать конфликтов с системной конфигурацией. Например, для ускорения работы с удалёнными хостами удобно задать forks и remote_user, которые будут действовать для всех плейбуков пользователя.
Для проверки, что Ansible использует именно этот файл, можно выполнить команду ansible —version и убедиться, что путь к конфигурации совпадает с ~/.ansible.cfg. В случае необходимости локальные файлы проекта перекроют пользовательскую конфигурацию, поэтому изменения в домашней директории влияют только при отсутствии локального ansible.cfg.
При создании или редактировании этого файла важно соблюдать синтаксис INI и корректно задавать секции [defaults], [ssh_connection] и другие, чтобы все параметры применялись без ошибок. Регулярная проверка через ansible-config list помогает убедиться, что все изменения активны.
Локальный ansible.cfg в проектной папке
Локальный файл ansible.cfg, расположенный в корне проекта, имеет наивысший приоритет среди всех конфигурационных файлов. Он позволяет задавать параметры, специфичные для конкретного проекта, без воздействия на системные или пользовательские настройки.
Основные параметры, которые часто настраиваются в локальном ansible.cfg, включают пути к инвентарям, ролям и плагинам, а также настройки логирования и управления подключениями. Это удобно для командной работы, когда необходимо, чтобы все участники проекта использовали одинаковую конфигурацию.
Пример базовой структуры локального ansible.cfg:
| Секция | Параметры | Назначение |
|---|---|---|
| [defaults] | inventory = ./hosts roles_path = ./roles remote_user = ubuntu |
Указывает основной инвентарь, путь к ролям и пользователя по умолчанию для подключений |
| [ssh_connection] | pipelining = True timeout = 30 |
Настройки SSH-подключений, ускорение выполнения плейбуков и установка таймаута |
| [logging] | log_path = ./ansible.log | Определяет путь к файлу логов выполнения задач |
Для проверки применения локального файла рекомендуется выполнить команду ansible —version, которая покажет путь к используемому ansible.cfg. Любые изменения в этом файле вступают в силу сразу при следующем запуске плейбуков, что позволяет быстро адаптировать конфигурацию под нужды проекта.
Системный файл конфигурации Ansible
Системный файл /etc/ansible/ansible.cfg применяется ко всем пользователям на сервере и задаёт базовую конфигурацию Ansible. Он активен только при отсутствии локального или пользовательского файла с более высоким приоритетом.
В системном файле удобно указывать глобальные параметры, которые должны быть одинаковыми для всех проектов: стандартные инвентари, пути к общим ролям, плагины и настройки логирования. Это снижает вероятность ошибок при работе нескольких пользователей на одной системе.
Пример параметров, которые часто задаются в системном ansible.cfg:
[defaults] – inventory, roles_path, retry_files_enabled, callback_whitelist.
[ssh_connection] – control_path, timeout, pipelining.
[paramiko_connection] – host_key_checking, look_for_keys.
Изменения в системном файле требуют прав администратора и влияют на всех пользователей. Для тестирования рекомендуется создавать локальный ansible.cfg в проекте или в домашней директории, чтобы убедиться, что параметры применяются корректно и не нарушают работу других плейбуков.
Как определить используемый конфигурационный файл

Если переменная окружения ANSIBLE_CONFIG установлена, Ansible использует указанный путь независимо от наличия локального, пользовательского или системного файла. Проверка переменной выполняется командой echo $ANSIBLE_CONFIG в Linux или echo %ANSIBLE_CONFIG% в Windows.
Дополнительно для детального анализа всех применяемых настроек удобно использовать команду ansible-config list —only-changed. Она показывает параметры, отличающиеся от значений по умолчанию, и помогает понять, какие настройки были загружены из конфигурационного файла.
Использование этих инструментов позволяет избежать неожиданных конфликтов при работе с разными проектами и обеспечивает точный контроль за тем, какие параметры Ansible применяет в текущей среде.
Приоритеты и порядок загрузки ansible.cfg
Ansible загружает конфигурационные файлы по строгому порядку приоритета. Понимание этого порядка важно для корректной настройки плейбуков и предотвращения конфликтов параметров.
- Переменная окружения ANSIBLE_CONFIG – если задана, путь к файлу в переменной имеет наивысший приоритет и используется независимо от других конфигураций.
- Локальный файл проекта – ./ansible.cfg в директории плейбука. Настройки из этого файла перекрывают пользовательские и системные параметры.
- Файл в домашней директории пользователя – ~/.ansible.cfg. Применяется, если локальный файл отсутствует, обеспечивает персональные настройки для всех проектов пользователя.
- Системный файл – /etc/ansible/ansible.cfg. Задаёт глобальные параметры для всех пользователей, используется только при отсутствии вышеуказанных файлов.
Рекомендации по применению приоритетов:
- Для проектов с уникальными настройками создавайте локальный ansible.cfg.
- Для общесистемных правил используйте системный файл, избегая изменений локальных файлов других пользователей.
- Для персональных конфигураций и тестирования применяйте домашний файл ~/.ansible.cfg.
- При необходимости временного переопределения используйте переменную ANSIBLE_CONFIG.
Проверка актуального файла выполняется командой ansible —version, которая показывает путь к конфигурации, фактически используемой в текущей сессии.
Советы по настройке и созданию собственного ansible.cfg
Создание собственного ansible.cfg позволяет точно управлять поведением Ansible для конкретного проекта или пользователя. Для корректной настройки рекомендуется соблюдать структуру INI и учитывать приоритеты загрузки конфигурационных файлов.
- Определите уровень конфигурации – локальный для проекта, пользовательский в домашней директории или системный. Локальный файл предпочтителен для индивидуальных проектов.
- Задайте пути к ресурсам – указывайте инвентари, роли и плагины через параметры inventory, roles_path, library. Например:
- inventory = ./hosts
- roles_path = ./roles
- library = ./library
- Настройте SSH-подключения – используйте remote_user, pipelining, timeout для ускорения выполнения задач и уменьшения числа соединений.
- Используйте проверку синтаксиса – команда ansible-config list —only-changed покажет, какие параметры отличаются от значений по умолчанию и реально применяются.
- Документируйте настройки – комментируйте изменения в файле, чтобы другие участники проекта понимали назначение каждого параметра.
- Тестируйте конфигурацию – перед применением плейбуков убедитесь, что настройки не вызывают конфликтов с другими уровнями конфигурации, используя ansible —version для проверки активного файла.
Следуя этим рекомендациям, можно создать стабильный и предсказуемый ansible.cfg, который ускоряет работу и облегчает поддержку проектов.
Вопрос-ответ:
Где Ansible ищет файл конфигурации по умолчанию?
Ansible проверяет несколько мест в определённом порядке. Сначала ищется локальный файл ./ansible.cfg в директории проекта. Если его нет, проверяется файл пользователя ~/.ansible.cfg, затем системный файл /etc/ansible/ansible.cfg. При наличии переменной окружения ANSIBLE_CONFIG Ansible использует путь из неё, игнорируя остальные файлы.
Как узнать, какой ansible.cfg используется в данный момент?
Для определения активного файла используется команда ansible —version. В выводе будет строка config file = /путь/к/ansible.cfg, показывающая фактический путь. Дополнительно можно использовать ansible-config list —only-changed для проверки, какие настройки были загружены из файла.
Можно ли создать собственный ansible.cfg для конкретного проекта?
Да, создание локального ansible.cfg в корне проекта позволяет задавать настройки, которые будут применяться только для этого проекта. Это включает пути к инвентарям и ролям, параметры SSH-подключений и логирование. Локальный файл имеет приоритет над пользовательским и системным.
Какие параметры обычно задают в пользовательском файле ~./ansible.cfg?
В пользовательском файле удобно задавать параметры, которые применяются ко всем проектам текущего пользователя. Чаще всего настраивают inventory для стандартного списка хостов, roles_path для общих ролей, SSH-подключения через remote_user и timeout, а также путь для логирования через log_path. Это упрощает работу с несколькими проектами без изменения системного конфигурационного файла.
