Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Теги Основы автоматизации в Ansible

С ростом количества задач плейбуки становятся достаточно большими. И при отладке сценария это может вызывать неудобства. Если нужные задачи будут находиться ближе к концу плейбука, то пройдёт достаточно много времени перед тем, как Ansible доберётся до их выполнения. Для оптимизации процесса существует механизм тегов, который позволяет выполнять задачи выборочно. Мы можем пометить задачи тегами и запускать их, когда это необходимо:

В примере есть задачи, которые отвечают за работу с nginx. Одна из них копирует файл конфигурации, другая перезапускает nginx. Мы их пометили тегом nginx, указав ключ и значение. При этом в любой задаче можно указать несколько тегов. Например, вот так tags: [nginx, config]:

- hosts: webservers
  tasks:
    - name: install nginx
      ansible.builtin.apt:
        name: nginx
        state: latest
      become: yes
      tags: nginx

    - name: install redis server
      ansible.builtin.apt:
        name: redis-server
        state: present
        update_cache: yes
      become: yes

    - name: update cron
      ansible.builtin.cron:
        name: "check dirs"
        minute: "0"
        hour: "5,2"
        job: "ls -alh > /dev/null"

    - name: update nginx config
      ansible.builtin.copy:
        src: files/nginx.conf
        dest: /etc/nginx/nginx.conf
      become: yes
      tags: [nginx, config]

    - name: restart nginx
      ansible.builtin.service:
        name: nginx
        state: reloaded
      become: yes
      tags: nginx

Нужные задачи запускаются с помощью опции -t, которой передаётся название тега. Если мы ошибёмся и укажем несуществующий тег, то Ansible выдаст подсказку со списком тегов, которые можно использовать:

ansible-playbook --check playbook.yml -i inventory.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 inventory.ini --skip-tags nginx

Самостоятельная работа

  1. Добавьте в плейбук с установкой git задачу с обновлением кеша пакетного менеджера Apt.
  2. Добавьте тег к задаче обновления кеша
  3. Выполните плейбук с указанием добавленного тега. Обратите внимание, какие задачи выполнились
  4. Добавьте новый тег задаче установки git. Выполните плейбук с указанием добавленного тега. При выполнении задачи с установкой Git кеш не должен обновляться
  5. Выполните плейбук без указания тегов
  6. Залейте изменения на Github

Дополнительные материалы

  1. Теги / Документация Ansible

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

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

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
900
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 130 курсов, 2000+ часов теории
  • 900 практических заданий в браузере
  • 360 000 студентов
Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»