SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
Приключения DevOps
инженера в мире BSOD
Alex Chistyakov, ex-Principal Eng. @ Git in Sky
Что такое DevOps?
2
Что такое DevOps?
- Человек?
3
Что такое DevOps?
- Человек?
- Практика?
4
Что такое DevOps?
- Человек?
- Практика?
- Методология?
5
Что такое DevOps?
- Человек?
- Практика?
- Методология?
- Идеология?
6
Что такое DevOps?
- CAMS
7
Что такое DevOps?
- Culture
- Automation
- Measurement
- Sharing
8
О чем будет этот доклад?
- Culture
- Automation
- Measurement
- Sharing
9
О чем будет этот доклад?
- Culture
- Automation
- Measurement
- Sharing
- И немного личных переживаний
10
О чем будет этот доклад?
11
Выводы
- В Windows есть свой собственный configuration
management фреймворк
- Он работает на удивление хорошо
- Это ПОЧТИ не больно
12
Прекрасная снежинка прекрасна
13
Или нет
14
Повторимость
15
Список ингредиентов
- Vagrant (http://vagrantup.com)
16
Vagrant
- Написан на Ruby командой Митчелла Хашимото
- Представляет собой eDSL для организации связи
между провайдером виртуализации и системой
провижнинга (той самой CM system)
- Неплохо подходит для создания переносных
повторимых лабораторий
17
Список ингредиентов
- Vagrant (https://vagrantup.com)
- Packer (https://www.packer.io)
18
Packer
- Написан на Go командой Митчелла Хашимото
- Представляет собой утилиту создания базовых образов
для различных провайдеров виртуализации по их
условно-декларативному описанию
19
Список ингредиентов
- Vagrant (https://vagrantup.com)
- Packer (https://www.packer.io)
- CM system (система управления конфигурацией)
20
CM system
- Написана без участия Митчелла Хашимото
- Чтобы было не скучно, их написано много* разных
* несколько
21
Список ингредиентов
- Vagrant (https://vagrantup.com)
- Packer (https://www.packer.io)
- CM system (система управления конфигурацией)
- Магия!
22
Магия!
- Магия вызывает удивление (и 5 стадий принятия)
- Ненавижу магию
- Удивлялся я в этом проекте постоянно
23
CM systems: 4 основные
- Puppet (Ruby)
- Chef (Ruby)
- SaltStack (Python)
- Ansible (Python)
24
CM systems: 4 основные
- Puppet (Ruby)
- Chef (Ruby)
- SaltStack (Python)
- Ansible (Python)
Agent-based vs. agentless
25
Выбор: SaltStack
- Выбирал не я, а заказчик
- Выбор неожиданно хорош, SaltStack точно
использовался коллегами для управления Windows-
инфраструктурой
- (Все 4 системы могут быть использованы)
26
Краткий курс SaltStack
- modules: кусочки кода на Python для исполнения
команд вручную
- state modules: идемпотентные {{modules}} не вручную
- states: списки того, что нужно применить
- pillars: структуры данных для states
алгоритмы + структуры данных
27
Краткий курс SaltStack
- Сервер на управляющей ноде
- Клиент на управляемых нодах
- Транспортом является ZeroMQ
- Это большой плюс* - файлы точно доедут
* если инфраструктура не очень велика
28
SaltStack и Windows
- Есть набор state и non-state модулей для Windows
- Я использовал модули:
- dsc.set_lcm_config (non-state)
- dsc.run_config (non-state)
- Что именно они делают, будет ясно позже
- Любой non-state модуль дергается из state module.run
29
Как собрать базовый образ
- Инсталляционный CD
- Boxcutter (https://github.com/boxcutter/windows)
- Магия!
- Примерно 40 минут на попытку
- Примерно 2 раза из 3 VirtualBox падал из-за драйвера
видеокарты
30
Как собрать базовый образ
- Мы делаем лабораторию с AD
- Одна машина - domain controller, вторую вводим в
домен
- Проблема duplicate SID
- Решение: при первом запуске с базового образа
менять SID
31
Как собрать базовый образ
- Я модифицировал конфиги boxcutter под наши нужды
- Конфиги boxcutter:
- По сути, императивная свалка cmd и PowerShell-
скриптов, монтируемая через виртуальный floppy
drive и запускаемая в нужном порядке
32
Воркфлоу
- vagrant up
- Машина с CentOS 7 и salt server на ней
- Две машины с Windows на которых провижнером типа
shell установлен salt client, NuGet и DSC ресурсы из
PowerShell Gallery
- salt '*' state.highstate на сервере
33
Магия! PowerShell DSC
- PowerShell DSC - декларативное описание состояния
- По сути - встроенная CM system для Windows
- DSC Resource Kit
(https://github.com/PowerShell/DscResources)
34
Конфигурация в стиле DSC
- Файл с описанием узлов и описанием необходимых
DSC resources с установлением связей между списком
ресурсов и узлами
- В одном таком файле можно описать конфигурацию
всего домена (я этим не пользовался, SaltStack такое
не поддерживал, но я заставил)
35
Анатомия DSC ресурса
- Обычный PS скрипт, к которому приписана
метаинформация
- В скрипте по соглашению функции
- Get-TargetResource, Set-TargetResource,
Test-TargetResource
- “Если не test, то set”
36
Особенности error handling в PS
- Terminating и non-terminating errors
- Нужно все non-terminating сделать terminating
- В начале скрипта:
- $ErrorActionPreference = "Stop"
- Иначе non-terminating error терминирует DSC скрипт
O_O
37
SaltStack и Windows еще раз
- dsc.set_lcm_config - конфигурирует LCM
- dsc.run_config - компилирует PS DSC скрипт в набор
MOF-файлов и передает их в LCM
- LCM - Local Configuration Manager
38
Как сконфигурировать LCM
- Разрешить автоматический рестарт
- Разрешить продолжать конфигурирование системы
после автоматического рестарта
39
Что именно сделал я
- Поставил AD services
- Создал новый домен
- Поставил DNS и DHCP services
- Ввел клиента в домен (выключить DHCP в Vagrant)
- Поставил Exchange
- Завел distribution groups
40
Что именно сделал я
- Запатчил dsc.run_config (файл win_dsc.py)
- Запатчил DSC модуль MSFT_xExchInstall
- Написал свой DSC ресурс xDistributionGroup
- С боями прорывался к своим
41
Воркфлоу еще раз
- vagrant раскидывает файлы
- SaltStack раскидывает файлы
- Всю настоящую работу делает PS DSC LCM
- К привычному нормальному человеку миру Unix это не
имеет никакого отношения
42
Повторимость: ну и как оно?
43
Повторимость: ну и как оно?
- ЭТО НЕ ДОЛЖНО ПОВТОРИТЬСЯ
- НЕ ДЕЛАЙТЕ ЭТО СО МНОЙ
- NEVER AGAIN!
44
Повторимость: ну и как оно?
- Объективно, несмотря на некоторые неочевидные для
нормального человека проблемы, добиться результата
можно
45
Ваши вопросы?
- alexclear@gmail.com
- Skype, Telegram: demeliorator
- У меня есть канал в Telegram:
http://t.me/lhommequipleure
46
Спасибо, что были со мной!
- Есть чувства, которые лучше переживать не в
одиночку
47

Más contenido relacionado

La actualidad más candente

Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеAlexandr Krasheninnikov
 
Why we did not choose Hadoop
Why we did not choose HadoopWhy we did not choose Hadoop
Why we did not choose HadoopSerguei Gitinsky
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013Roman Pavlushko
 
My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014Alex Chistyakov
 
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)Ontico
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Николай Лавлинский
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Fwdays
 
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Ontico
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин ОсиповCodeFest
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примереSergey Xek
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012Roman Pavlushko
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). Badoo Development
 
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)Ontico
 
My talk on administering PostgreSQL
My talk on administering PostgreSQLMy talk on administering PostgreSQL
My talk on administering PostgreSQLAlex Chistyakov
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиBadoo Development
 
My talk on PgDay Russia 2014
My talk on PgDay Russia 2014My talk on PgDay Russia 2014
My talk on PgDay Russia 2014Alex Chistyakov
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Ontico
 
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)Ontico
 

La actualidad más candente (20)

Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Why we did not choose Hadoop
Why we did not choose HadoopWhy we did not choose Hadoop
Why we did not choose Hadoop
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
 
My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014
 
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
 
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примере
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
 
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)RTB DSP на языке Go укрощение buzzwords /  Даниил Подольский (Qmobi.Com)
RTB DSP на языке Go укрощение buzzwords / Даниил Подольский (Qmobi.Com)
 
On Docker
On DockerOn Docker
On Docker
 
My talk on administering PostgreSQL
My talk on administering PostgreSQLMy talk on administering PostgreSQL
My talk on administering PostgreSQL
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитики
 
My talk on PgDay Russia 2014
My talk on PgDay Russia 2014My talk on PgDay Russia 2014
My talk on PgDay Russia 2014
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
 
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
 
Ryazan
RyazanRyazan
Ryazan
 

Similar a My talk on DevOps engineer's adventures in the Windows world at UWDC 2017

DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)Ontico
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Веб-сервер Phantom
Веб-сервер PhantomВеб-сервер Phantom
Веб-сервер Phantomyaevents
 
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Ontico
 
"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)SPB SQA Group
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiAlexander Makarov
 
мониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBAмониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBASlach
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, ParallelsNikolay Samokhvalov
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Yandex
 
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)SPB SQA Group
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Vladimir Bakhov
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...Nikolay Samokhvalov
 
Visual Studio Team Services /TFS helps doing devops
Visual Studio Team Services /TFS helps doing devops Visual Studio Team Services /TFS helps doing devops
Visual Studio Team Services /TFS helps doing devops Konstantin Neradovsky
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3Computer Science Club
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализацияYandex
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...IT-Portfolio
 
Bitrix clouds without_admins
Bitrix clouds without_adminsBitrix clouds without_admins
Bitrix clouds without_adminsAlexander Demidov
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Badoo Development
 

Similar a My talk on DevOps engineer's adventures in the Windows world at UWDC 2017 (20)

DC/OS more than PAAS
DC/OS more than PAASDC/OS more than PAAS
DC/OS more than PAAS
 
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Веб-сервер Phantom
Веб-сервер PhantomВеб-сервер Phantom
Веб-сервер Phantom
 
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
 
"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем Yii
 
мониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBAмониторинг производительности приложения на PINBA
мониторинг производительности приложения на PINBA
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"
 
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
"Опыт создания системы управления сборкой и тестированием" (слайдкаст)
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)
 
Chef @DevWeb
Chef @DevWebChef @DevWeb
Chef @DevWeb
 
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва... Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
 
Visual Studio Team Services /TFS helps doing devops
Visual Studio Team Services /TFS helps doing devops Visual Studio Team Services /TFS helps doing devops
Visual Studio Team Services /TFS helps doing devops
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
 
Bitrix clouds without_admins
Bitrix clouds without_adminsBitrix clouds without_admins
Bitrix clouds without_admins
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
 

Más de Alex Chistyakov

My slides from DevOpsDays 2019
My slides from DevOpsDays 2019My slides from DevOpsDays 2019
My slides from DevOpsDays 2019Alex Chistyakov
 
My slides from BMM №3 May 2019
My slides from BMM №3 May 2019My slides from BMM №3 May 2019
My slides from BMM №3 May 2019Alex Chistyakov
 
My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 Alex Chistyakov
 
My slides from SECR'2018
My slides from SECR'2018My slides from SECR'2018
My slides from SECR'2018Alex Chistyakov
 
My slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtMy slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtAlex Chistyakov
 
My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019Alex Chistyakov
 
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019Alex Chistyakov
 
My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019Alex Chistyakov
 
Configuration management and Kubernetes
Configuration management and KubernetesConfiguration management and Kubernetes
Configuration management and KubernetesAlex Chistyakov
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017Alex Chistyakov
 
My talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMMy talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMAlex Chistyakov
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10Alex Chistyakov
 
My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017Alex Chistyakov
 
My talk on programming languages at SPbLUG Mar 2017
My talk on programming languages at SPbLUG Mar 2017My talk on programming languages at SPbLUG Mar 2017
My talk on programming languages at SPbLUG Mar 2017Alex Chistyakov
 

Más de Alex Chistyakov (20)

My slides from DevOpsDays 2019
My slides from DevOpsDays 2019My slides from DevOpsDays 2019
My slides from DevOpsDays 2019
 
My slides from BMM №3 May 2019
My slides from BMM №3 May 2019My slides from BMM №3 May 2019
My slides from BMM №3 May 2019
 
My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019
 
My slides from SECR'2018
My slides from SECR'2018My slides from SECR'2018
My slides from SECR'2018
 
My slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtMy slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArt
 
My slides from CC'2019
My slides from CC'2019My slides from CC'2019
My slides from CC'2019
 
My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019
 
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019
 
My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019
 
Configuration management and Kubernetes
Configuration management and KubernetesConfiguration management and Kubernetes
Configuration management and Kubernetes
 
Ansible and other stuff
Ansible and other stuffAnsible and other stuff
Ansible and other stuff
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017
 
My talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMMy talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGM
 
My talk at SECR 2017
My talk at SECR 2017My talk at SECR 2017
My talk at SECR 2017
 
On scaling teams
On scaling teamsOn scaling teams
On scaling teams
 
MariaDB workshop
MariaDB workshopMariaDB workshop
MariaDB workshop
 
Docker for JS people
Docker for JS peopleDocker for JS people
Docker for JS people
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10
 
My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017
 
My talk on programming languages at SPbLUG Mar 2017
My talk on programming languages at SPbLUG Mar 2017My talk on programming languages at SPbLUG Mar 2017
My talk on programming languages at SPbLUG Mar 2017
 

My talk on DevOps engineer's adventures in the Windows world at UWDC 2017

  • 1. Приключения DevOps инженера в мире BSOD Alex Chistyakov, ex-Principal Eng. @ Git in Sky
  • 3. Что такое DevOps? - Человек? 3
  • 4. Что такое DevOps? - Человек? - Практика? 4
  • 5. Что такое DevOps? - Человек? - Практика? - Методология? 5
  • 6. Что такое DevOps? - Человек? - Практика? - Методология? - Идеология? 6
  • 8. Что такое DevOps? - Culture - Automation - Measurement - Sharing 8
  • 9. О чем будет этот доклад? - Culture - Automation - Measurement - Sharing 9
  • 10. О чем будет этот доклад? - Culture - Automation - Measurement - Sharing - И немного личных переживаний 10
  • 11. О чем будет этот доклад? 11
  • 12. Выводы - В Windows есть свой собственный configuration management фреймворк - Он работает на удивление хорошо - Это ПОЧТИ не больно 12
  • 17. Vagrant - Написан на Ruby командой Митчелла Хашимото - Представляет собой eDSL для организации связи между провайдером виртуализации и системой провижнинга (той самой CM system) - Неплохо подходит для создания переносных повторимых лабораторий 17
  • 18. Список ингредиентов - Vagrant (https://vagrantup.com) - Packer (https://www.packer.io) 18
  • 19. Packer - Написан на Go командой Митчелла Хашимото - Представляет собой утилиту создания базовых образов для различных провайдеров виртуализации по их условно-декларативному описанию 19
  • 20. Список ингредиентов - Vagrant (https://vagrantup.com) - Packer (https://www.packer.io) - CM system (система управления конфигурацией) 20
  • 21. CM system - Написана без участия Митчелла Хашимото - Чтобы было не скучно, их написано много* разных * несколько 21
  • 22. Список ингредиентов - Vagrant (https://vagrantup.com) - Packer (https://www.packer.io) - CM system (система управления конфигурацией) - Магия! 22
  • 23. Магия! - Магия вызывает удивление (и 5 стадий принятия) - Ненавижу магию - Удивлялся я в этом проекте постоянно 23
  • 24. CM systems: 4 основные - Puppet (Ruby) - Chef (Ruby) - SaltStack (Python) - Ansible (Python) 24
  • 25. CM systems: 4 основные - Puppet (Ruby) - Chef (Ruby) - SaltStack (Python) - Ansible (Python) Agent-based vs. agentless 25
  • 26. Выбор: SaltStack - Выбирал не я, а заказчик - Выбор неожиданно хорош, SaltStack точно использовался коллегами для управления Windows- инфраструктурой - (Все 4 системы могут быть использованы) 26
  • 27. Краткий курс SaltStack - modules: кусочки кода на Python для исполнения команд вручную - state modules: идемпотентные {{modules}} не вручную - states: списки того, что нужно применить - pillars: структуры данных для states алгоритмы + структуры данных 27
  • 28. Краткий курс SaltStack - Сервер на управляющей ноде - Клиент на управляемых нодах - Транспортом является ZeroMQ - Это большой плюс* - файлы точно доедут * если инфраструктура не очень велика 28
  • 29. SaltStack и Windows - Есть набор state и non-state модулей для Windows - Я использовал модули: - dsc.set_lcm_config (non-state) - dsc.run_config (non-state) - Что именно они делают, будет ясно позже - Любой non-state модуль дергается из state module.run 29
  • 30. Как собрать базовый образ - Инсталляционный CD - Boxcutter (https://github.com/boxcutter/windows) - Магия! - Примерно 40 минут на попытку - Примерно 2 раза из 3 VirtualBox падал из-за драйвера видеокарты 30
  • 31. Как собрать базовый образ - Мы делаем лабораторию с AD - Одна машина - domain controller, вторую вводим в домен - Проблема duplicate SID - Решение: при первом запуске с базового образа менять SID 31
  • 32. Как собрать базовый образ - Я модифицировал конфиги boxcutter под наши нужды - Конфиги boxcutter: - По сути, императивная свалка cmd и PowerShell- скриптов, монтируемая через виртуальный floppy drive и запускаемая в нужном порядке 32
  • 33. Воркфлоу - vagrant up - Машина с CentOS 7 и salt server на ней - Две машины с Windows на которых провижнером типа shell установлен salt client, NuGet и DSC ресурсы из PowerShell Gallery - salt '*' state.highstate на сервере 33
  • 34. Магия! PowerShell DSC - PowerShell DSC - декларативное описание состояния - По сути - встроенная CM system для Windows - DSC Resource Kit (https://github.com/PowerShell/DscResources) 34
  • 35. Конфигурация в стиле DSC - Файл с описанием узлов и описанием необходимых DSC resources с установлением связей между списком ресурсов и узлами - В одном таком файле можно описать конфигурацию всего домена (я этим не пользовался, SaltStack такое не поддерживал, но я заставил) 35
  • 36. Анатомия DSC ресурса - Обычный PS скрипт, к которому приписана метаинформация - В скрипте по соглашению функции - Get-TargetResource, Set-TargetResource, Test-TargetResource - “Если не test, то set” 36
  • 37. Особенности error handling в PS - Terminating и non-terminating errors - Нужно все non-terminating сделать terminating - В начале скрипта: - $ErrorActionPreference = "Stop" - Иначе non-terminating error терминирует DSC скрипт O_O 37
  • 38. SaltStack и Windows еще раз - dsc.set_lcm_config - конфигурирует LCM - dsc.run_config - компилирует PS DSC скрипт в набор MOF-файлов и передает их в LCM - LCM - Local Configuration Manager 38
  • 39. Как сконфигурировать LCM - Разрешить автоматический рестарт - Разрешить продолжать конфигурирование системы после автоматического рестарта 39
  • 40. Что именно сделал я - Поставил AD services - Создал новый домен - Поставил DNS и DHCP services - Ввел клиента в домен (выключить DHCP в Vagrant) - Поставил Exchange - Завел distribution groups 40
  • 41. Что именно сделал я - Запатчил dsc.run_config (файл win_dsc.py) - Запатчил DSC модуль MSFT_xExchInstall - Написал свой DSC ресурс xDistributionGroup - С боями прорывался к своим 41
  • 42. Воркфлоу еще раз - vagrant раскидывает файлы - SaltStack раскидывает файлы - Всю настоящую работу делает PS DSC LCM - К привычному нормальному человеку миру Unix это не имеет никакого отношения 42
  • 44. Повторимость: ну и как оно? - ЭТО НЕ ДОЛЖНО ПОВТОРИТЬСЯ - НЕ ДЕЛАЙТЕ ЭТО СО МНОЙ - NEVER AGAIN! 44
  • 45. Повторимость: ну и как оно? - Объективно, несмотря на некоторые неочевидные для нормального человека проблемы, добиться результата можно 45
  • 46. Ваши вопросы? - alexclear@gmail.com - Skype, Telegram: demeliorator - У меня есть канал в Telegram: http://t.me/lhommequipleure 46
  • 47. Спасибо, что были со мной! - Есть чувства, которые лучше переживать не в одиночку 47