Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

381 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

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

×