Инфраструктура как код
Описываешь инфру файлами, а не кликами. Terraform-подход и Ansible.
Основы IaC
Почему серверы и сети описывают кодом в git: декларативность, воспроизводимость, ревью и дрейф.
Провайдеры, ресурсы, plan и apply, state-файл. Как Terraform приводит облако к описанию.
Pull-деплой из git, агент в кластере, drift detection и чем GitOps отличается от обычного push-CI.
Как переиспользовать инфраструктуру: переменные на вход, outputs наружу и модули как функции для ресурсов.
Почему локальный state ломает командную работу, как вынести его в общий бэкенд и зачем нужны блокировки.
Ansible
Agentless push-модель, control node и managed nodes по SSH. Зачем нужен и что вообще ставить.
Inventory в ini и yaml, группы хостов, ad-hoc через -m, модули ping/command/shell/copy.
Где живёт ansible.cfg и порядок поиска. host_key_checking, inventory, remote_user, become.
Managed node обычно требует python. Модуль raw, gather_facts: no, bootstrap python и модуль script.
changed vs ok, почему command/shell не идемпотентны, creates/removes, changed_when, --check и --diff.
Структура yaml-плейбука: hosts, become, tasks, handlers, notify, vars, when, loop, Jinja2-шаблоны и block/rescue/always. Запуск ansible-playbook.
tasks/handlers/templates/files/vars/defaults/meta, автозагрузка main.yml, ansible-galaxy init, defaults vs vars.
Где объявлять переменные, что такое facts (ansible_facts), register, set_fact и как Ansible разрешает конфликты по приоритету.
Dry-run через --check и --diff, точечный --limit, теги, и постепенный rolling update через serial. Как катить изменения, не уронив прод.
Статический inventory не масштабируется в облаке. Inventory-плагины (AWS, Yandex Cloud), группировка по тегам, и коллекции из Galaxy.
Пароли и ключи нельзя класть в git в открытом виде. ansible-vault шифрует файлы и отдельные значения, а в CI пароль приходит из защищённой переменной.
Десять вопросов: agentless-модель, идемпотентность, ad-hoc, playbook, роли, rolling update и динамический inventory. Можно перепроходить.