Настройки Ansible можно менять в конфигурационном файле.
Конфигурационный файл Ansible может храниться в разных местах (файлы перечислены в порядке уменьшения приоритета):
Ansible ищет файл конфигурации в указанном порядке и использует первый найденный (конфигурация из разных файлов не совмещается).
В конфигурационном файле можно менять множество параметров. Полный список параметров и их описание можно найти в .
В текущем каталоге должен быть инвентарный файл myhosts:
[cisco-routers] 192.168.100.1 192.168.100.2 192.168.100.3 [cisco-switches] 192.168.100.100
В текущем каталоге надо создать такой конфигурационный файл ansible.cfg:
[defaults] inventory = ./myhosts remote_user = cisco ask_pass = True
Настройки в конфигурационном файле:
[defaults]
- эта секция конфигурации описывает общие параметры по умолчаниюinventory = ./myhosts
- параметр inventory позволяет указать местоположение инвентарного файла.remote_user = cisco
- от имени какого пользователя будет подключаться Ansibleask_pass = True
- этот параметр аналогичен опции --ask-pass в командной строке. Если он выставлен в конфигурации Ansible, то уже не нужно указывать его в командной строке.Теперь вызов ad-hoc команды будет выглядеть так:
$ ansible cisco-routers -m raw -a "sh ip int br"
Теперь не нужно указывать инвентарный файл, пользователя и опцию --ask-pass.
По умолчанию Ansible собирает факты об устройствах.
Факты - это информация о хостах, к которым подключается Ansible. Эти факты можно использовать в playbook и шаблонах как переменные.
Сбором фактов, по умолчанию, занимается модуль .
Но для сетевого оборудования модуль setup не подходит, поэтому сбор фактов надо отключить. Это можно сделать в конфигурационном файле Ansible или в playbook.
Для сетевого оборудования нужно использовать отдельные модули для сбора фактов (если они есть). Это рассматривается в разделе .
Отключение сбора фактов в конфигурационном файле:
gathering = explicit
Параметр host_key_checking отвечает за проверку ключей при подключении по SSH. Если указать в конфигурационном файле host_key_checking=False
, проверка будет отключена.
Это полезно, когда с управляющего хоста Ansible надо подключиться к большому количеству устройств первый раз.
Чтобы проверить этот функционал, надо удалить сохраненные ключи для устройств Cisco, к которым уже выполнялось подключение.
В линукс они находятся в файле ~/.ssh/known_hosts.
Если выполнить ad-hoc команду после удаления ключей, вывод будет таким:
$ ansible cisco-routers -m raw -a "sh ip int br"
Добавляем в конфигурационный файл параметр host_key_checking:
[defaults] inventory = ./myhosts remote_user = cisco ask_pass = True host_key_checking=False
И повторим ad-hoc команду:
$ ansible cisco-routers -m raw -a "sh ip int br"
Обратите внимание на строки:
Warning: Permanently added '192.168.100.1' (RSA) to the list of known hosts.
Ansible сам добавил ключи устройств в файл ~/.ssh/known_hosts. При подключении в следующий раз этого сообщения уже не будет.
Другие параметры конфигурационного файла можно посмотреть в документации. Пример конфигурационного файла в .