>_ IzzyLab

Практическое задание

Ansible против localhost

сложно

Инфраструктура как код, кухонная версия. Напиши плейбук /root/site.yml, нацеленный на localhost (local connection), который: создаёт пользователя deploy, создаёт каталог /opt/app, принадлежащий deploy, с правами 750, и пишет в /etc/motd строку Managed by Ansible. Прогони его до сходимости. Проверка сама откатит результат и прогонит плейбук с нуля, а потом ещё раз — второй прогон ничего не должен менять.

Что потренируешь:
  • ansible
  • iac
  • плейбук
  • идемпотентность
  • модули

Разбор темы

Ansible — инструмент управления конфигурацией по принципу IaC: ты описываешь желаемое состояние системы в плейбуке (YAML), а движок сам приводит машину к нему через специализированные модули (user, file, copy и т.д.). Обычно Ansible ходит на хосты по SSH, но цель можно замкнуть на саму машину, указав в плее hosts: localhost и connection: local — тогда инвентарь не нужен. Ключевое свойство модулей — идемпотентность: повторный прогон не ломает уже достигнутое состояние, а показывает changed=0, что и означает сходимость.

Что проверяется

  1. плейбук разворачивает всё с нуля
  2. пользователь deploy создан
  3. /opt/app принадлежит deploy, права 750
  4. /etc/motd содержит Managed by Ansible
  5. повторный прогон ничего не меняет (changed=0)

Как это выглядит