Желаемое состояние вместо пошаговых скриптов
Почему декларативный подход лучше императивного.
«Желаемое состояние вместо пошаговых скриптов» — бесплатный урок Ansible Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ansible Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ansible Academy содержит 4 уроков всего.
Описывайте результат, а не шаги
Ansible работает декларативно: Вы описываете желаемое конечное состояние, а Ansible определяет шаги, которые приведут к нему из текущего состояния узла.
Императивный подход
Императивный скрипт перечисляет точные команды по порядку. Он предполагает начальное состояние, поэтому ломается, если узел уже частично настроен.
apt-get update
apt-get install -y nginx
systemctl start nginxДекларативный подход
Декларативная задача просто формулирует цель: nginx должен быть установлен и запущен. Ansible проверяет фактическое состояние и действует только при необходимости.
ansible.builtin.package:
name: nginx
state: presentstate называет цель
Ключ state служит для объявления намерения. present, started или absent обозначают желаемое конечное состояние, а не действие, которое нужно выполнить.
ansible.builtin.service:
name: nginx
state: startedСначала Ansible сравнивает состояния
Перед любым изменением модуль сравнивает текущее состояние с объявленным. Если они уже совпадают, он вообще ничего не делает.
Это сходимость
Каждый запуск приближает хост к объявленному Вами состоянию. Это и есть сходимость: независимо от исходной точки хост в итоге оказывается в одном и том же состоянии.
Порядок уже не так важен
Поскольку задачи объявляют цели, повторный запуск наполовину завершённого плейбука просто завершит остальное. Вам не нужно отслеживать, какой шаг завершился ошибкой в прошлый раз.
Безопасно запускать снова
Декларативные задачи безопасно запускать повторно. Хосты, которые уже находятся в нужном состоянии, остаются без изменений — на этом и основана идемпотентность.
Меньше нужно помнить
Вам больше не приходится вручную писать проверки «если установлено, пропустить». Эта логика принадлежит модулю, поэтому Ваш плейбук остаётся коротким и понятным.
Плейбук — источник истины
Декларативный плейбук читается как документация описываемого желаемого состояния сервера: какие пакеты, службы и файлы должны на нём существовать.
- name: Web server desired state
hosts: web
tasks:
- ansible.builtin.package:
name: nginx
state: presentНекоторые задачи всё ещё императивны
Необработанные задачи с командами и оболочкой являются императивными: они выполняются при каждом запуске. Предпочитайте модули, работающие с состоянием, чтобы Ansible оставался декларативным.
Быстрая проверка
Вы пишете задачу, указывающую, что nginx должен присутствовать, а затем запускаете плейбук на хосте, где nginx уже установлен.
Повторение
Вы объявляете желаемое состояние, а Ansible приближает хост к нему, действуя только при расхождении с реальностью. Эта безопасность и есть идемпотентность. 🎯
Часто задаваемые вопросы
Урок «Желаемое состояние вместо пошаговых скриптов» бесплатный?
Да — полный текст урока «Желаемое состояние вместо пошаговых скриптов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ansible Academy, подпишись на CoddyKit PRO. Курс Ansible Academy содержит 4 уроков всего.
Чему я научусь в уроке «Желаемое состояние вместо пошаговых скриптов»?
Почему декларативный подход лучше императивного. Ты практикуешь Ansible Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ansible Academy?
Предыдущий опыт не требуется. Ansible Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Желаемое состояние вместо пошаговых скриптов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ansible Academy?
Да. Каждый урок Ansible Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Желаемое состояние вместо пошаговых скриптов
- Чтение changed и ok в выводе
- Почему command нарушает идемпотентность
- Режим проверки: пробный запуск с --check