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 заданы все машины.