Ansible hosts


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

Группу серверов можно выбирать из файла и передавать в playbook или в командной строке. Операции в этом случае будут выполняться для этой группы.



Ansible playbook hosts


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



Группировка может выполняться по любому признаку. Чаще всего используют группировку по назначению: веб-сервера, сервера баз данных, сервера приложений и так далее.

В примере две группы: сервера приложений app и сервера баз данных db. В каждой группе по одному хосту.


mcedit /etc/ansible/hosts

[app]

node1
123.123.123.123
[db]
node2
123.123.123.124


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 заданы все машины. Командная строка в этом случае имеет больший приоритет, чем playbook.

Ansible распознав команду заходит на подконтрольные сервера по ssh, выполняет необходимые действия и возвращает результат.


Самые используемые команды Ansbile собраны в этом материале.

Сказать спасибо