Linux Labs

Автоматизация: Git и Ansible / Ступень 5 из 6

Плейбук: задачи, обработчики, шаблоны

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 2 из 6 · на машине · 8 мин

Плейбук и модули состояния

Плейбук — те же разовые команды, записанные в файл. Отчёт о прогоне показывает, какие задачи что-то поменяли.

Плейбук — файл в формате YAML со списком плеев. Плей говорит, на каких машинах работать (hosts: web), от кого (become: true — то же, что ключ -b) и что сделать (tasks). Задача — имя (name) и модуль с аргументами, как в разовой команде:

yaml
- name: Настройки приложения
  hosts: web
  become: true
  tasks:
    - name: Файл окружения
      copy:
        content: "MODE=prod\n"
        dest: /etc/app.env

ansible-playbook site.yml выполняет плеи по порядку. Сначала Ansible собирает сведения о машине — задача Gathering Facts, она всегда ok. В конце — PLAY RECAP: строка на машину, ok — сколько задач прошли без ошибок, changed — сколько из них что-то поменяли; failed, unreachable и skipped — упавшие, недоступные и пропущенные (в Вики).

Модуль shell — тот же command, только через оболочку: в нём работают > и &&. И так же, как command, он отвечает changed при каждом запуске. Модули состояния описывают, какой должна быть машина, и меняют только расхождение:

Задача на shell Модуль состояния
mkdir -p /srv/shop file с path и state: directory
echo … > файл copy с content и dest
systemctl start nginx service с name и state: started
Упражнение · сделать

Перепиши задачи на модули

Перепиши задачи плейбука ~/ansible-lab/site.yml на модули file, copy и service: каталог /srv/shop, страница index.html и конфиг nginx на порт 8080 — с тем же содержимым, что у коллеги, а nginx должен просто работать. Прогони плейбук и посмотри на PLAY RECAP.

Войти и начать Машина доступна после входа

Цели · 0 из 2

  • Описать задачи модулями вместо shell ещё не выполнена
  • Добиться, чтобы прогон ничего не менял, а сайт на 8080 работал ещё не выполнена

Цели шага

0 из 2
  • Описать задачи модулями вместо shell — ещё не выполнена
  • Добиться, чтобы прогон ничего не менял, а сайт на 8080 работал — ещё не выполнена
Ubuntu 24.04

Цели шага

0 из 2
  • Описать задачи модулями вместо shell — ещё не выполнена
  • Добиться, чтобы прогон ничего не менял, а сайт на 8080 работал — ещё не выполнена
Загрузка…