Наш эксперт, 
Игорь Курочкин, рассказал про практику Infrastructure as code (Инфраструктура как код) на открытом уроке курса DevOps практики и инструменты в 2018 году. 
В ходе выступления затронуты следующие темы:
1. Введение в практику 
Infrastructure as code (Инфраструктура как код) и модель технических практик;
2. Проблемы управления конфигурацией: 
Server Sprawl (рост числа серверов), 
Configuration drift (неконсистентное состояние), 
Snowflake servers (сервера снежинки), 
Fragile infrastructure (хрупкая инфраструктра), 
Erosion (эрозия), 
Automation Fear (страх автоматизации);
3. История сервисов и инструментов: 
CFEngine (1993), 
Puppet (2005), 
AWS (2006), 
Chef/Opscode (2009), 
DevOps (2009), 
Vagrant (2010), 
CloudFormation (2011), 
Salt (2011), 
Ansible (2012), 
HashiCorp (2012), 
Docker (2013), 
Terraform (2014), 
Kubernetes (2014), 
Vespene (2018), 
OpsMop (2018);
4. Книги по практике и инструментам: Infrastructure as code: Managing Infrastructure with Puppet, Test-Driven Infrastructure with Chef, Customizing Chef, Ansible: Up and Running, Salt Essentials, 
Infrastructure as Code, Terraform: Up and Running, Puppet Best practices;
5. Состояние практики в индустрии и технологических радарах на 2018 год: 
Manual infrastructure management (2012),
 Infrastructure as code (2012), 
Immutable servers (2013), 
Docker (2016), 
Pipelines as Code (2017), 
Pipelines for Infrastructure as Code (2018);
6. Цели внедрения и развития практики Infrastructure as code: 
ускорение процесса поставки, 
снижение количества ошибок и 
улучшение взаимодействия команд;
7. Определение практики как автоматизация инфраструктуры с использованием практик из разработки;
8. Принципы практики: 
воспроизводимая инфраструктура, 
повторяемые процессы, 
изменяемая инфраструктура и процессы;
9. Модели управления инфраструктурой (Ad Hoc, Configuration synchronisation, Immutable Infrastructure, Immutable Delivery), 
инфраструктурный код (YAML, JSON, HCL, DSL, Erb, Epp, j2, tpl), 
инфраструктурный репозиторий (Иерархия и слои, окружения, роли, модули, внешние зависимости, переменные, конфигурация для инструментов, тесты и документация), инфраструктурные слои (stacks, layers, base-service-app), 
общий язык и способы взаимодействия (PR, MR, API, CDK, Development kit, CLI);
10. Практики из разработки: организация кода, политики версионирования (
Semantic Versioning 2.0.0) и ветвления (
Trunk-based Development, GitFlow, GitHub flow, GitLab flow), управление артефактами (сборка, публикация, хранение, маркетплейс) и внешние зависимости, тестирование и ревью изменений, CI/CD для инфраструктурного кода (pipelines для модуля, репозитория, внешних зависимостей, сборки образов и создания окружений), среда разработки (Development Kit);
11. Классификация, выбор и сравнение инструментов управления конфигурацией по следующим критериям: язык, DSL, опыт работы, модель управления, иерархия и изоляция, безопасность, масштабирование, интеграция в текущий стек, наличие инструментария, поддержка community, поддержка практик из разработки, командная работа;
12. Жизненный цикл управления конфигурацией, границы применимости, примеры из индустрии и сложные кейсы.
Подробнее в 
презентации и записи выступления ниже: