Ansible hosts

Ansible playbook hosts — файл, в котором задается на каких из подконтрольных серверов должны быть выполнены команды. Также группу серверов можно выбирать из файла и передавать в командной строке.

 

Ansible playbook hosts

В первом материале по Ansible в /etc/ansible/hosts задавались две машины. Их может быть больше, машины делятся на группы, в каждой возможно неограниченное количество IP адресов или hostname

 

mcedit /etc/ansible/hosts

[app]

node1
123.123.123.123

[db]
node2

 

ansible all -m shell -a 'hostname' -v

123.123.123.123 | CHANGED | rc=0 >>
test1

node1 | CHANGED | rc=0 >>
node1

node2 | CHANGED | rc=0 >>
node2

 

 

 

Сейчас в командной строке передан аргумент all, поэтому выполняется действие на всех серверах.

 

Если указать db — команда уйдет на одну машину в одноименной группе.

 

ansible all -m shell -a 'hostname' -v

node2 | CHANGED | rc=0 >>
node2

 

Использование в  playbook

Таким же образом hosts работают с playbook.

 

Синтаксис может быть аналогичен, в httpd.yml , но в поле hosts задается all. Вызывая playbook ключем -l можно передать нужную группы.

 

Так, если в httpd.yml прописано all, -i задает путь к файлу, -l — группу в нем.

ansible-playbook httpd.yml -i /etc/ansible/hosts -l db

 

Любая команда направляется на сервера группы db, несмотря на то, что в playbook заданы все машины.