Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.
Загляните в раздел «Обсуждение»:
С ростом количества задач плейбуки становятся достаточно большими. И при отладке сценария это может вызывать неудобства. Если нужные задачи будут находиться ближе к концу плейбука, то пройдёт достаточно много времени перед тем, как Ansible доберётся до их выполнения. Для оптимизации процесса существует механизм тегов, который позволяет выполнять задачи выборочно. Мы можем пометить задачи тегами и запускать их, когда это необходимо:
В примере две задачи, которые отвечают за работу с докером. Одна из них копирует файл конфигурации, вторая перезапускает докер. Мы их пометили тегом nginx
, указав ключ и значение. При этом в любой задаче можно указать несколько тегов. Например, вот так tags: [nginx, config]
:
- hosts: webservers
tasks:
- name: install nginx
apt: name=nginx state=latest
become: yes
tags: nginx
- name: install redis server
apt: name=redis-server state=present update_cache=yes
become: yes
- name: update cron
cron: name="check dirs" minute="0" hour="5,2" job="ls -alh > /dev/null"
- name: update nginx config
copy: src=files/nginx.conf dest=/etc/nginx/nginx.conf
become: yes
tags: [nginx, config]
- name: restart nginx
service: name=nginx state=reloaded
become: yes
tags: nginx
Нужные задачи запускаются с помощью опции -t
, которой передаётся название тега. Если мы ошибёмся и укажем несуществующий тег, то Ansible выдаст подсказку со списком тегов, которые можно использовать:
$ ansible-playbook --check playbook.yml -i production.ini -t nginx
Обратите внимание, что используется параметр --check
. Так мы проверяем возможность изменений, не выполняя непосредственно сами задачи. После ввода команды мы увидим, что выполнились только три задачи с тегом nginx
:
TASK [install nginx] ****************************************
ok: [ec2-18-216-178-214.us-east-2.compute.amazonaws.com]
TASK [update nginx config] **********************************
ok: [ec2-18-216-178-214.us-east-2.compute.amazonaws.com]
TASK [restart nginx] ****************************************
changed: [ec2-18-216-178-214.us-east-2.compute.amazonaws.com]
Также используя теги, можно исключать из сценария задачи, которые мы не хотим выполнять. Для этого существует опция --skip-tags
. С помощью вот такой команды будут запущены все таски, не связанные с Nginx:
$ ansible-playbook --check playbook.yml -i production.ini --skip-tags nginx
Вам ответят команда поддержки Хекслета или другие студенты.
Профессиональная подписка откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
или войти в аккаунт
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.
Наши выпускники работают в компаниях:
Зарегистрируйтесь или войдите в свой аккаунт