>_ IzzyLab

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

Ansible: idempotent-строка в файле

средне

В конфиге /etc/app/hosts.conf уже есть записи. Напиши плейбук /root/line.yml, который гарантирует наличие строки db.local 127.0.0.1 в этом файле (модуль lineinfile — добавит, если строки нет, и не продублирует при повторном прогоне), не трогая остальные строки. Прогони его. Проверка сама уберёт строку и прогонит плейбук дважды.

Что потренируешь:
  • ansible
  • lineinfile
  • идемпотентность
  • правка конфигов
  • iac

Разбор темы

Модуль lineinfile гарантирует, что в текстовом файле присутствует нужная строка: если её нет — добавит, если есть — оставит как есть. Это ядро идемпотентности в подходе «инфраструктура как код»: сколько раз ни прогоняй плейбук, результат один и тот же, дубликатов не появляется. Модулю указывают целевой файл и саму строку, а параметр create заведёт файл, если его ещё нет — проверять на повтор вручную не нужно, модуль делает это сам.

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

  1. плейбук добавляет строку
  2. строка db.local 127.0.0.1 есть ровно один раз
  3. остальные строки конфига на месте
  4. повторный прогон ничего не меняет и не дублирует

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