SlideShare a Scribd company logo
Инфраструктура
как код
Игорь Курочкин
Express 42
Введение
2
Infrastructure as a Service
Platform as a Service
Culture
Continuous Delivery
InfrastructureasCode
Applications
Production/SRE
MonitoringandObservability
Инфраструктура как
код
3
Infrastructure as a Service
Platform as a Service
Culture
Continuous Delivery
InfrastructureasCode
Applications
Production/SRE
MonitoringandObservability
План
• Проблемы, история и цели
• Определение, принципы и подходы
• Практики из разработки
• Инструменты
Надежные решения для сложной инфраструктуры
4
План
• Проблемы, история и цели
• Определение, принципы и подходы
• Практики из разработки
• Инструменты
Надежные решения для сложной инфраструктуры
5
Проблемы
• Server Sprawl (рост числа серверов)
• Configuration drift (неконсистентное состояние)
• Snowflake servers (сервера снежинки)
• Fragile infrastructure (хрупкая инфраструктра)
• Erosion (эрозия)
• Automation Fear (страх автоматизации)
Надежные решения для сложной инфраструктуры
6
История
• …
• 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)
Надежные решения для сложной инфраструктуры
7
Книги
• 2011 Managing Infrastructure with Puppet
• 2011 Test-Driven Infrastructure with Chef
• 2014 Customizing Chef
• 2015 Ansible: Up and Running
• 2015 Salt Essentials
• 2016 Infrastructure as Code
• 2017 Terraform: Up and Running
• 2018 Puppet Best practices
Надежные решения для сложной инфраструктуры
8
Индустрия
• Технологический радар:
• 2012 Manual infrastructure management HOLD
• 2012 Infrastructure as code ADOPT
• 2013 Immutable servers ADOPT
• 2016 Docker ADOPT
• 2017 Pipelines as Code ADOPT
• 2018 Pipelines for Infrastructure as Code TRIAL
Надежные решения для сложной инфраструктуры
9
Цели
• Ускорение процесса поставки
• Снижение количества ошибок
• Улучшение взаимодействия команд
Надежные решения для сложной инфраструктуры
10
Инфраструктура как
код
11
Infrastructure as a Service
Platform as a Service
Culture
Continuous Delivery
InfrastructureasCode
Applications
Production/SRE
MonitoringandObservability
План
• Проблемы, история и цели
• Определение, принципы и подходы
• Практики из разработки
• Инструменты
Надежные решения для сложной инфраструктуры
12
Инфраструктура как
код
Надежные решения для сложной инфраструктуры
13
•Автоматизация инфраструктуры с
использованием практик из разработки
Общие принципы
• Воспроизводимая инфраструктура
• Повторяемые процессы
• Изменяемая инфраструктура и процессы
Надежные решения для сложной инфраструктуры
14
Подходы
Надежные решения для сложной инфраструктуры
15
• Модели управления инфраструктурой
• Инфраструктурный код
• Инфраструктурный репозиторий
• Инфраструктурные слои (stack/layers)
• Общий язык общения
Модели управления
инфраструктурой
Надежные решения для сложной инфраструктуры
16
• Ad Hoc
• Configuration synchronisation
• Immutable Infrastructure
• Immutable Delivery (Containerized Services)
Инфраструктурный
код
Надежные решения для сложной инфраструктуры
17
• Код, шаблоны, конфигурация:
• YAML, JSON, HCL
• DSL (Chef, Puppet, RSpec*)
• Erb, Epp, j2, tpl
• Ruby, Python, Go, PowerShell, …
Инфраструктурный
репозиторий
• Репозиторий с инфраструктурным кодом
• Иерархия и слои - окружения, роли, модули
• Внешние зависимости
• Переменные
• Инструменты и конфигурация для инструментов
• Тесты и документация
Надежные решения для сложной инфраструктуры
18
Инфраструктурные
слои
Надежные решения для сложной инфраструктуры
19
Base
Service
Culture
Continuous Delivery
InfrastructureasCode
Application
Production/SRE
MonitoringandObservability
Общий язык
общения
• Инфраструктурный код
• Общие инструменты и модули
• Практики из разработки:
• Pull requests и diff изменений
• API и development kit (Среда разработки)
Надежные решения для сложной инфраструктуры
20
План
• Проблемы, история и цели
• Определение, принципы и подходы
• Практики из разработки
• Инструменты
Надежные решения для сложной инфраструктуры
21
Практики из
разработки
22
• Организация кода
• Политики версионирования и ветвления
• Управление артефактами и внешние зависимости
• Тестирование и ревью изменений
• CI/CD для инфраструктурного кода
• Среда разработки
Практики из
разработки
23
• Организация кода
• Политики версионирования и ветвления
• Управление артефактами и внешние зависимости
• Тестирование и ревью изменений
• CI/CD для инфраструктурного кода
• Среда разработки
Структура
репозиториев
• Моно репозиторий
• Мульти репозиторий
• Инфраструктурный код:
• вместе с кодом приложений
• отдельно
Надежные решения для сложной инфраструктуры
24
Иерархия
• На уровне практик:
• Отдельные репозитории
• На уровне инструментов:
• Environments, Roles, Profiles, Groups, ENC
Надежные решения для сложной инфраструктуры
25
Chef
Надежные решения для сложной инфраструктуры
26
Puppet
Надежные решения для сложной инфраструктуры
27
Практики из
разработки
28
• Организация кода
• Политики версионирования и ветвления
• Управление артефактами и внешние зависимости
• Тестирование и ревью изменений
• CI/CD для инфраструктурного кода
• Среда разработки
Версионирование
• Semantic Versioning 2.0.0 https://semver.org
• Tom Preston-Werner (GitHub)
• X.X.X:
• MAJOR - несовместимые изменения
• MINOR - новый функционал
• PATCH - исправления
Надежные решения для сложной инфраструктуры
29
Ветвление
30
• Trunk Based Development
• https://trunkbaseddevelopment.com
• GitHub Flow
• Gitflow
Практики из
разработки
31
• Организация кода
• Политики версионирования и ветвления
• Управление артефактами и внешние зависимости
• Тестирование и ревью изменений
• CI/CD для инфраструктурного кода
• Среда разработки
Управление артефактами
и внешние зависимости
Надежные решения для сложной инфраструктуры
32
• Инфраструктурный модуль как артефакт
• Сборка, публикация и хранение модулей
• Маркетплейс инфраструктурных модулей
• Управление внешними зависимостями
Практики из
разработки
33
• Организация кода
• Политики версионирования и ветвления
• Управление артефактами и внешние зависимости
• Тестирование и ревью изменений
• CI/CD для инфраструктурного кода
• Среда разработки
Тестирование
Надежные решения для сложной инфраструктуры
34
• Стиль языка и инфраструктурного кода
• Валидацию шаблонов и кода
• Функционал
• Результат
Стиль языка
Надежные решения для сложной инфраструктуры
35
• Линтеры для языка:
• Rubocop (Ruby)
• Pylint, flake8 (Python)
• Надстройки для Chef, Puppet, Salt, Ansible:
• Cookstyle
Стиль кода
Надежные решения для сложной инфраструктуры
36
• Проверяем соответствие Style Guides
• Линтеры для кода:
• Chef Foodcritic
• Puppet-lint
• Ansible-lint
• Salt-lint
Валидация
Надежные решения для сложной инфраструктуры
37
•Валидация ERB, JSON, YAML
•puppet parser validate, puppet-syntax, metadata-json-
lint
•ansible-playbook --syntax-check
•salt-call
Функциональные
тесты
Надежные решения для сложной инфраструктуры
38
•Тестируем функционал:
•ChefSpec
•rspec-puppet, rspec-puppet-facts, puppet-retrospec
•Ansible script, stat, uri, assert
Интеграционные
тесты
Надежные решения для сложной инфраструктуры
39
• Проверяем результат:
• Serverspec (Ruby)
• InSpec (Ruby)
• Testinfra (Python)
• Goss (Go)
Практики из
разработки
40
• Организация кода
• Политики версионирования и ветвления
• Управление артефактами и внешние зависимости
• Тестирование и ревью изменений
• CI/CD для инфраструктурного кода
• Среда разработки
CI/CD для
инфраструктрного кода
• Pipeline для модуля
• Pipeline для инфраструктурного репозитория
• Pipeline для внешних зависимостей
• Pipeline для сборки образов
• Pipeline для создания окружений
• …
Надежные решения для сложной инфраструктуры
41
CI/CD для
инфраструктрного кода
Надежные решения для сложной инфраструктуры
42
• Инструменты:
• Vagrant
• Test Kitchen (Chef, …)
• Molecule (Ansible)
• Beaker (Puppet)
Практики из
разработки
43
• Организация кода
• Политики версионирования и ветвления
• Управление артефактами и внешние зависимости
• Тестирование и ревью изменений
• CI/CD для инфраструктурного кода
• Среда разработки
Проблемы
Надежные решения для сложной инфраструктуры
44
• Разные версии инструментов
• Разные практики из разработки
Development Kit
• Локальная разработка и тестирование
• Одно окружение для Linux, OS X, Windows
• Набор CLI инструментов, библиотек и API
• Workflows и best practices
• Часть CI
Надежные решения для сложной инфраструктуры
45
Chef DK
Надежные решения для сложной инфраструктуры
46
Puppet DK
Надежные решения для сложной инфраструктуры
47
Puppet DK
Надежные решения для сложной инфраструктуры
48
План
• Проблемы, история и цели
• Определение, принципы и подходы
• Практики из разработки
• Инструменты
Надежные решения для сложной инфраструктуры
49
Проблемы с
инструментами
Надежные решения для сложной инфраструктуры
50
•Какие инструменты выбрать?
•Как их сравнить?
•Какие границы применимости?
•Как их использовать совместно?
Инструменты
Надежные решения для сложной инфраструктуры
51
•Dynamic Infrastructure Platforms
•Infrastructure definition
•Server configuration
•Infrastructure services
Инструменты
Надежные решения для сложной инфраструктуры
52
•Dynamic Infrastructure Platforms (Cloud)
•Infrastructure definition (Terraform, CloudFormation)
•Server configuration (Chef, Puppet, Ansible, Salt)
•Infrastructure services (…)
Система управления
конфигурацией
• DSL, декларативное или императивное описание
• Push или Pull модель
• Встроенные модули и ресурсы
• Иерархия, изоляция, сбор фактов
• Шаблонизаторы
• Идемпотентность
Надежные решения для сложной инфраструктуры
53
Жизненный цикл
Надежные решения для сложной инфраструктуры
54
Как выбрать?
• Посмотреть на индустрию
• Оценить самостоятельно
• Сделать MVP
Надежные решения для сложной инфраструктуры
55
Индустрия
Надежные решения для сложной инфраструктуры
56
Оценка
Надежные решения для сложной инфраструктуры
57
• Язык программирования и DSL

• Опыт работы

• Модель управления

• Иерархия и изоляция

• Безопасность

• Масштабирование

• Интеграция в текущий стек

• Наличие инструментария

• Поддержка community

• Поддержка практик из разработки

• Командная работа

• Примеры из индустрии и сложные кейсы

• …
Границы
применимости
Надежные решения для сложной инфраструктуры
58
•Уровни Base, Service, Application
•Service Discovery и Failover
•Управление секретами
•Деплой
•Cloud, Database, Security, Containers
Современный стек
Надежные решения для сложной инфраструктуры
59
• Chef 14
• Puppet 6
• Ansible 2.7
• Salt 2018
• Terraform 0.12
Кейсы
• Смена стека или передача сервиса
• Новый дата-центр
• Синхронизация окружений
• Тестовые окружения по требованию
• API инфраструктурной платформы и командная работа
• Мониторинг в виде кода
• …
Надежные решения для сложной инфраструктуры
60
Итого
• Автоматизация инфраструктуры с использованием
практик из разработки
• Помогает:
• Ускорить процесс поставки
• Снизить количество ошибок
• Улучшить взаимодействие команд
Надежные решения для сложной инфраструктуры
61
Онлайн курс OTUS
Надежные решения для сложной инфраструктуры
62
•DevOps практики и инструменты:
•20 ноября - День открытых дверей
•27 ноября - Начало занятий
•5 месяцев - Длительность курса
Вакансия
63
• Мы ищем людей, которым это интересно
• Пишите на dontpanic@express42.com
Ссылки
64
• Митапы DevOps Meetup Moscow
• Подкаст и телеграм канал DevOps Deflope
• Конференции по DevOps
• Книги из презентации
• Рассылка DevOps Weekly
Вопросы?

More Related Content

PDF
How to draw DevOps
PDF
DevOps vs SRE
PPT
непрерывная интеграция шаг к непрерывному деплою родионов игорь
PPTX
Типовая сборка и деплой продуктов в Positive Technologies
PDF
Непрерывная интеграция - шаг к непрерывному деплойменту
PPTX
Развитие сообщества Open DevOps Community
PDF
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
PDF
О фреймворках / Роман Ивлиев (Банки.ру)
How to draw DevOps
DevOps vs SRE
непрерывная интеграция шаг к непрерывному деплою родионов игорь
Типовая сборка и деплой продуктов в Positive Technologies
Непрерывная интеграция - шаг к непрерывному деплойменту
Развитие сообщества Open DevOps Community
Highway to Сontinuous Integration, Денис Трифонов (2GIS)
О фреймворках / Роман Ивлиев (Банки.ру)

What's hot (19)

PPTX
Как мы собираем проекты в выделенном окружении в Windows Docker
PPTX
Как сделать свой SDK и первые 50 расширений от подпольных технологий к интегр...
PPTX
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
PDF
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
PPTX
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
PPTX
Использование анализатора кода SonarQube
PPTX
Аналитика в проектах: TFS + Qlik
PPTX
Вебинар о конференции HighLoad++
PDF
Сергей Белов
PPTX
Cтатические анализаторы систем 1с AgileDays 2015
PDF
Константин Назаров – Распараллеливание сборки Parallels Desktop для Mac
PPTX
DevOps Skills DevConf 2016
PPTX
Oleynikov sqa days 8_deck
PDF
Микросервисы: откуда столько шума?
PDF
Развитие DevOps/NoOps инструментов. Что было, что есть, что будет.
PDF
Микросервисы: откуда столько шума?
PPTX
Самодиагностика сервисов на базе платформы .NET
PPTX
Развитие навыков 1С облачно-мобильного специалиста до 5-го уровня
PPTX
Python tools for web development (Python meetup Almaty #ALAPY)
Как мы собираем проекты в выделенном окружении в Windows Docker
Как сделать свой SDK и первые 50 расширений от подпольных технологий к интегр...
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Использование анализатора кода SonarQube
Аналитика в проектах: TFS + Qlik
Вебинар о конференции HighLoad++
Сергей Белов
Cтатические анализаторы систем 1с AgileDays 2015
Константин Назаров – Распараллеливание сборки Parallels Desktop для Mac
DevOps Skills DevConf 2016
Oleynikov sqa days 8_deck
Микросервисы: откуда столько шума?
Развитие DevOps/NoOps инструментов. Что было, что есть, что будет.
Микросервисы: откуда столько шума?
Самодиагностика сервисов на базе платформы .NET
Развитие навыков 1С облачно-мобильного специалиста до 5-го уровня
Python tools for web development (Python meetup Almaty #ALAPY)
Ad

Similar to OTUS Infrastructure as Code (20)

PDF
Puppet development kit and best practices
PDF
DevOps и системы управления конфигурацией. SECON 2015
PPTX
Продуктовое направление проектирования и разработки ПАК
PPTX
продуктовое направление опир пак
ODP
Архитектура программных систем на Node.js
PDF
Вадим Мадисон "Опыт разработки через микросервисы"
PDF
Workflows в Express 42
PDF
Проектирование архитектуры крупных веб-систем
PDF
Точка кипения: проектирование крупных веб-систем
PPTX
Лучшие практики на практике
PPTX
Промышленная разработка ПО. Лекция 2. Инструменты
PDF
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
PDF
Fors и big data appliance
PDF
Обзор перспективных баз данных для highload / Юрий Насретдинов
PPTX
Wargaming.net: Архитектура современных 3D движков
PDF
Как запустить виртуализированный ЦОД за час?
PDF
Микросервисная архитектура на базе CoreOS и Kubernetes
PDF
Корпоративный Linux: осваиваем с нуля Red Hat Enterprise Linux
PDF
Тестирование ПО, основанного на сторонних компонентах, на примере дистрибут...
Puppet development kit and best practices
DevOps и системы управления конфигурацией. SECON 2015
Продуктовое направление проектирования и разработки ПАК
продуктовое направление опир пак
Архитектура программных систем на Node.js
Вадим Мадисон "Опыт разработки через микросервисы"
Workflows в Express 42
Проектирование архитектуры крупных веб-систем
Точка кипения: проектирование крупных веб-систем
Лучшие практики на практике
Промышленная разработка ПО. Лекция 2. Инструменты
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
Fors и big data appliance
Обзор перспективных баз данных для highload / Юрий Насретдинов
Wargaming.net: Архитектура современных 3D движков
Как запустить виртуализированный ЦОД за час?
Микросервисная архитектура на базе CoreOS и Kubernetes
Корпоративный Linux: осваиваем с нуля Red Hat Enterprise Linux
Тестирование ПО, основанного на сторонних компонентах, на примере дистрибут...
Ad

OTUS Infrastructure as Code