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