Общие сведения#
Группы серверов#
Список групп серверов, которыми нужно управлять, Ansible может получать двумя основными способами: - из специального текстового файла hosts; - с помощью внешнего скрипта, возвращающего нужный нам список серверов, например из MongoDB. В официальном github-репозитории есть готовые скрипты для получения списка из Cobbler, Digital Ocean, EC2, Linode, OpenStack Nova, Openshift, Spacewalk, Vagrant, Zabbix.
Инвентарный файл (hosts)#
Инвентарный файл - это файл, в котором описываются устройства, к которым Ansible будет подключаться.
Дефолтное расположение файла
—/etc/ansible/hosts
но оно может также быть задано параметром окружения $ANSIBLE_HOSTS или параметром -i при запуске ansible и ansible-playbook.
Содержимое этого файла может выглядеть, например, так (в квадратных скобках указаны имена групп управляемых узлов, ниже перечисляются входящие в эти группы серверы):
[centos]
192.168.20.10
[dbservers]
one.example.com
two.example.com
three.example.com
[dnsservers]
rs1.example.com ansible_ssh_port=5555 ansible_ssh_host=192.168.1.50
rs2.example.com
ns[01:50].example.com
Помимо списка управляемых узлов, в файле hosts могут быть указаны и другие сведения, необходимые для работы: номера портов для подключения по SSH, способ подключения, пароль для подключения по SSH, имя пользователя, объединения групп и т.п. В некоторых случаях — в частности, при работе с большими и сложными конфигурациями, — различные параметры можно выносить в отдельные файлы и каталоги.
Один и тот же адрес или имя хоста, можно помещать в разные группы.
При этом обычно лучше создавать свой инвентарный файл и использовать его. Для этого нужно, либо указать его при запуске ansible, используя опцию -i <путь>, либо указать файл в конфигурационном файле Ansible.
Если в группу надо добавить несколько устройств с однотипными именами, можно использовать такой вариант записи:
[web-servers]
192.168.20.[1:5]
Такая запись означает, что в группу попадут устройства с адресами 192.168.20.1-192.168.20.5.
Этот формат записи поддеживается и для имен хостов:
[dbservers]
one.example[A:D].com