DevOps Bootcamp · Урок

delegate_to и run_once для оркестрации

Запускайте задачу на одном узле для нескольких узлов

Урок 2 из 413 шагов

«delegate_to и run_once для оркестрации» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Задачи выполняются не всегда там, где Вы ожидаете

По умолчанию каждая задача выполняется на целевом узле. Для оркестрации иногда требуется, чтобы задача выполнялась совсем в другом месте. 🎯

Знакомство с delegate_to

Ключевое слово delegate_to запускает задачу на другом узле, а не на текущем, при этом используются переменные этого узла.

- name: Add web node to load balancer
  community.general.haproxy:
    host: "{{ inventory_hostname }}"
    state: enabled
  delegate_to: lb01

Классический сценарий использования

При переборе веб-узлов делегируйте изменение балансировщика нагрузки узлу LB. Проигрывание остаётся поузловым, но действие выполняется на LB.

Делегирование на localhost

Запустите задачу на управляющем узле, делегировав её на localhost. Это удобно для вызова API или отправки уведомления из одного места.

- name: Notify chat
  ansible.builtin.uri:
    url: "{{ webhook }}"
    method: POST
  delegate_to: localhost

Переменные остаются у исходного узла

Делегирование меняет место выполнения задачи, но не набор фактов, которые она видит. inventory_hostname по-прежнему обозначает исходный целевой узел, а не делегат.

Знакомство с run_once

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

- name: Run database migration
  ansible.builtin.command: ./migrate.sh
  run_once: true

Зачем нужен run_once

Некоторые действия должны выполняться только один раз, например миграция или выбор лидера. run_once не позволяет каждому узлу повторять один и тот же общий шаг.

Используйте их вместе

Объедините run_once с delegate_to, чтобы выполнить одно действие на одном выбранном узле, например запустить миграцию с одного узла приложения.

- name: Migrate db once
  ansible.builtin.command: ./migrate.sh
  run_once: true
  delegate_to: app01

Результаты общие для всех

При использовании run_once зарегистрированный результат становится общим для всех узлов в группе. Все они видят вывод этого единственного выполнения.

- ansible.builtin.command: cat /etc/version
  run_once: true
  register: ver

Сбор фактов с делегата

Используйте delegate_facts, если хотите прикрепить собранные факты к узлу-делегату, а не к текущему узлу. По умолчанию эта возможность отключена.

Оркестрация, а не только настройка

Вместе эти ключевые слова превращают поузловую настройку в настоящую оркестрацию: координацию одного действия на всём парке узлов из единой точки.

Быстрая проверка

Проверим эти ключевые слова для оркестрации.

Итоги

Используйте delegate_to, чтобы запустить задачу на другом узле, а run_once — чтобы выполнить её только один раз на группу узлов: это основа оркестрации. ✅

Можно начать бесплатно

Изучай DevOps Bootcamp с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
142
Уроки
568

Часто задаваемые вопросы

Урок «delegate_to и run_once для оркестрации» бесплатный?

Да — полный текст урока «delegate_to и run_once для оркестрации» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «delegate_to и run_once для оркестрации»?

Запускайте задачу на одном узле для нескольких узлов Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «delegate_to и run_once для оркестрации»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Автоматизация сетевых устройств с cli_command
  2. delegate_to и run_once для оркестрации
  3. Координация уровней веб-сервера, приложения и DB
  4. Вывод узлов из балансировщика и повторное включение
← Назад к DevOps Bootcamp