Как использовать теги в Ansible

Kak Ispol Zovat Tegi V Ansible



Игры, роли и задачи представляют собой структуру ansible, и эта структура ansible содержит важный атрибут, который в Ansible называется тегами. Всякий раз, когда мы запускаем playbook в Ansible, вы можете использовать команды -tags и –skip tags, чтобы мы могли выполнять только определенную серию задач, игр и ролей. Если у нас есть плейбук, содержащий так много задач, но мы не хотим выполнять все задачи плейбука, вместо того, чтобы выполнять весь плейбук, мы просто запустим несколько задач с помощью команды tag в плейбуке Ansible.

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







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



Предпосылки использования тегов в Ansible Playbook

Для размещения практических примеров в программном обеспечении ansible мы должны выполнить следующие требования.



Для внесения изменений требуется управляющий сервер Ansible. Чтобы использовать параметр тега в программном обеспечении Ansible, нам нужны локальные хосты для связи с ними. В этом случае мы используем локальный хост на протяжении всего выполнения в качестве целевого удаленного сервера. Мы будем создавать плейбуки, выполнять команды тега Ansible и отслеживать результаты на удаленных хостах с устройства ansible-controller.





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

Пример 01: Доступ к одной задаче в Ansible Playbook

Мы собираемся реализовать в Ansible, предоставив несколько задач в playbook, а затем мы получим доступ только к одной задаче, используя в ней теги. Для этого мы сначала создадим playbook, написав следующую команду:



[root@master ansible]# нано ansible_tags.yml

После создания и запуска плейбука ansible_tags.yml. Теперь мы начнем писать команды в playbook. Во-первых, мы передадим предоставленные хосты в параметре «hosts», который мы будем использовать «localhost». Затем мы пропишем значение «false» в параметре «gather_facts», чтобы мы не могли получить дополнительную информацию о локальном хосте при выполнении плейбука.

После этого мы начнем перечислять действия в параметре «задачи» одно за другим, которые мы хотим выполнить. Мы определим, есть ли документ на локальной машине в первом процессе. Если он доступен, мы сохраним его в параметре «register», а затем дадим уникальное имя тегу, чтобы при выполнении плейбука нам было легко получить доступ к тегу. Во второй задаче мы будем делать то же самое, что и в первой задаче, но тег должен быть уникальным, а затем мы будем использовать параметр отладки, чтобы продемонстрировать задачу вместе с соответствующим сообщением.

- хозяева:

- локальный хост
сбор_фактов: ложь


задания:
- имя: Проверить существование файла x`
статистика: путь=./host.yml
зарегистрироваться: файл существует
теги: check_file


- отладка:
msg: '{{ 'Файл существует' if fileExists.stat.exists else 'Файл не найден' }}'
теги: check_file


- имя: проверить, доступен ли host.yml текущему пользователю
оболочка: stat -c '%a'./host.yml
зарегистрироваться: путь доступа
теги: check_access


- отладка:
msg: '{{ 'Файл доступен' if (accessPath.stdout|int) < 660 else 'Файл недоступен' }}'
теги: check_access

Теперь мы сохраним playbook, а затем закроем его. Мы хотим запустить плейбук ansible_tags.yml, поэтому мы напишем следующую команду в терминале Ansible, чтобы продемонстрировать вывод пользователям.

[root@master ansible]# ansible-playbook ansible_tags.yml –теги check_file

После выполнения приведенной выше команды мы получим желаемый результат взамен. Как показано ниже, выполняется только одна задача, которая отображается в выводе «проверка существования файла».

Пример 02: игнорировать определенный тег в Ansible Playbook

Вот второй пример тега Ansible, где мы переходим к тегу «пропустить». Вам решать, хотите ли вы игнорировать все задачи или хотите игнорировать конкретную задачу плейбука в Ansible. Мы используем реализацию примера 1, а затем просто пропустим задачу, просто написав приведенный ниже оператор в терминале Ansible.

[root@master ansible]# ansible-playbook ansible_tags.yml --skip-tags check_file

В приведенной выше команде мы просто проигнорировали задачу «проверить существование файла». Теперь в выводе отображается только одна задача, которая «доступна для файлов» зеленым шрифтом.

Пример 03: всегда продолжайте выполнять задачу в Ansible Playbook

Мы собираемся реализовать третий пример на основе тега Ansible. В этом примере мы будем использовать тег «всегда», что означает, что определенный тег всегда будет выполняться в Ansible Playbook. Чтобы запустить playbook, используйте следующую команду:

[root@master ansible]# нано ansible_tags.yml

В playbook мы создали несколько задач для запуска, но мы передали тег «всегда» в последней задаче, которая называется «удалить пароль из инвентаря». Ниже приведены команды, реализованные в playbook:

- хозяева: все

сбор_фактов: ложь


задания:
- имя: Проверить существование файла
статистика: путь=./host.yml
зарегистрироваться: файл существует
делегат_к: локальный
теги: check_file


- отладка:
msg: '{{ 'Файл существует' if fileExists.stat.exists else 'Файл не найден' }}'
теги: check_file


- имя: проверить, доступен ли host.yml текущему пользователю
оболочка: stat -c '%a'./host.yml
зарегистрироваться: путь доступа
делегат_к: локальный
теги: check_access


- отладка:
msg: '{{ 'Файл доступен' if (accessPath.stdout|int) < 660 else 'Файл недоступен' }}'
теги: check_access


- название: Удалить пароль из инвентаря
линейный файл:
путь: '{{inventory_file}}'
регулярное выражение: '\b{{item}}.*\b'
состояние: отсутствует
делегат_к: локальный
стать: ложным
тэги: всегда
with_items:
- доступный_пароль

После этого мы создадим файл инвентаризации для установления соединения между контроллером и целевым удаленным хостом. Ниже приведена команда:

[root@master ansible]# nano host.yml

Вот файл инвентаризации, который содержит информацию, связанную с «Linux_host» в Ansible.

Все:

хосты:
Linux_хост:
доступный_хост: 192.168.3.229
ansible_user: доступный
доступный_пароль: ******
ansible_connection: ssh
доступный_порт: 22

Чтобы получить желаемый результат, мы выполним следующую команду в терминале Ansible:

[root@master ansible]# ansible-playbook ansible_tags.yml --tags check_file -i host.yml

Заключение

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