0Pricing
DevOps Bootcamp · Урок

Желаемое состояние вместо пошаговых скриптов

Почему декларативный подход лучше императивного.

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

Описывайте результат, а не шаги

Ansible работает декларативно: Вы описываете желаемое конечное состояние, а Ansible определяет шаги, которые приведут к нему из текущего состояния узла.

Императивный подход

Императивный скрипт перечисляет точные команды по порядку. Он предполагает начальное состояние, поэтому ломается, если узел уже частично настроен.

apt-get update
apt-get install -y nginx
systemctl start nginx

Декларативный подход

Декларативная задача просто формулирует цель: nginx должен быть установлен и запущен. Ansible проверяет фактическое состояние и действует только при необходимости.

ansible.builtin.package:
  name: nginx
  state: present

state называет цель

Ключ 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) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Желаемое состояние вместо пошаговых скриптов»?

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

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

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

Сколько времени занимает урок «Желаемое состояние вместо пошаговых скриптов»?

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

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

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

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

  1. Желаемое состояние вместо пошаговых скриптов
  2. Чтение changed и ok в выводе
  3. Почему command нарушает идемпотентность
  4. Режим проверки: пробный запуск с --check
← Назад к DevOps Bootcamp