Spec-Zone.ru › Ansible 2.4

Шаблоны

Шаблоны в Ansible определяют, какие хосты будут управляться. Это может означать, с какими хостами нужно взаимодействовать, но в контексте Playbook это означает, к каким хостам нужно применить конкретную конфигурацию или процесс IT.

Мы рассмотрим использование командной строки в разделе Введение в ад-хок команды, однако, в целом, это выглядит так:

ansible <pattern_goes_here> -m <module_name> -a <arguments>

Например:

ansible webservers -m service -a "name=httpd state=restarted"

Шаблон обычно относится к набору групп (которые являются наборами хостов) – в данном случае, к машинам в группе «webservers».

В любом случае, для использования Ansible, вам сначала нужно узнать, как указать Ansible, с какими хостами в вашем инвентаре нужно взаимодействовать. Это делается путём указания конкретных имён хостов или групп хостов.

Следующие шаблоны эквивалентны и нацелены на все хосты в инвентаре:

all
*

Также возможно указать конкретный хост или набор хостов по имени:

one.example.com
one.example.com:two.example.com
192.0.2.50
192.0.2.*

Следующие шаблоны охватывают одну или несколько групп. Группы, разделённые двоеточием, указывают конфигурацию «ИЛИ». Это означает, что хост может принадлежать либо одной группе, либо другой:

webservers
webservers:dbservers

Вы также можете исключить группы, например, все машины должны принадлежать группе webservers, но не группе phoenix:

webservers:!phoenix

Вы также можете указать пересечение двух групп. Это означает, что хосты должны принадлежать группе webservers и также группе staging:

webservers:&staging

Вы можете комбинировать:

webservers:dbservers:&staging:!phoenix

Вышеуказанная конфигурация означает: «все машины из групп ‘webservers’ и ‘dbservers’, которые также находятся в группе ‘staging’, должны быть управляемы, но машины не должны управляться, если они находятся в группе ‘phoenix’ ... уф!

Вы также можете использовать переменные, если хотите передать некоторые спецификаторы групп через аргумент «-e» в ansible-playbook, но это используется нечасто:

webservers:!{{excluded}}:&{{required}}

Также не обязательно управлять строго определёнными группами. Индивидуальные имена хостов, IP-адреса и группы также могут быть указаны с использованием подстановочных символов.

*.example.com
*.com

Также можно смешивать шаблоны с подстановочными символами и группы одновременно:

one*.com:dbservers

Вы можете выбрать хост или подмножество хостов из группы по их позиции. Например, задана следующая группа:

[webservers]
cobweb
webbing
weber

Вы можете ссылаться на хосты внутри группы, добавив индекс к имени группы:

webservers[0]       # == cobweb
webservers[-1]      # == weber
webservers[0:1]     # == webservers[0],webservers[1]
                    # == cobweb,webbing
webservers[1:]      # == webbing,weber

Большинство людей не указывают шаблоны как регулярные выражения, но вы можете. Просто начните шаблон с символа ‘~’:

~(web|db).*\.example\.com

Хотя мы немного опережаем, вы можете добавить критерии исключения, просто указав флаг --limit для /usr/bin/ansible или /usr/bin/ansible-playbook:

ansible-playbook site.yml --limit datacenter2

И если вы хотите прочитать список хостов из файла, добавьте перед именем файла символ ‘@’. Начиная с Ansible 1.2:

ansible-playbook site.yml --limit @retry_hosts.txt

Достаточно просто. Смотрите Введение в ад-хок команды, а затем Playbooks, чтобы узнать, как применять эти знания.

Примечание

За исключением версии 1.9, вы можете использовать запятую (’,’) вместо двоеточия (’:’) в качестве разделителя списка хостов. Запятая предпочтительнее, особенно при работе с диапазонами и ipv6.

Примечание

Начиная с версии 2.0, разделитель списка хостов «;» устарел.

См. также

Введение в ад-хок команды
Примеры основных команд
Playbooks
Изучение языка управления конфигурациями Ansible
Список рассылки
Вопросы? Помощь? Идеи? Обратитесь к списку на Google Groups
irc.freenode.net
#ansible IRC чат-канал

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/intro_patterns.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API