Тестируем
инфраструктуру
как код
Игорь Курочкин
Express 42
Slide 2
Slide 2 text
О себе
Express 42
Qik/Skype/Microsoft
Chef/Puppet
Надежные решения для сложной инфраструктуры
2
Slide 3
Slide 3 text
О чем доклад?
Тестирование инфраструктуры
Инструменты
Автоматизация
Наш опыт
Надежные решения для сложной инфраструктуры
3
Slide 4
Slide 4 text
Тесты?
Поиск ошибок
Совместимость
Документация
Надежные решения для сложной инфраструктуры
4
Slide 5
Slide 5 text
Когда актуально?
Сторонний код
Сложная логика
Частые изменения
Надежные решения для сложной инфраструктуры
5
Slide 6
Slide 6 text
Какие системы?
Надежные решения для сложной инфраструктуры
6
Slide 7
Slide 7 text
Что тестировать?
Кукбуки (Chef)
Модули (Puppet)
Роли (Ansible)
Формулы (Salt)
Надежные решения для сложной инфраструктуры
7
Slide 8
Slide 8 text
Что проверяем?
Cтиль
Функционал
Результат
Интеграцию
Надежные решения для сложной инфраструктуры
8
Slide 9
Slide 9 text
Cтиль языка
Ruby
• rubocop
Python
• pep8
Надежные решения для сложной инфраструктуры
9
Slide 10
Slide 10 text
Стиль кода
Chef Foodcritic
Puppet-lint
Ansible-lint
Salt-lint
Надежные решения для сложной инфраструктуры
10
Slide 11
Slide 11 text
Функционал
Фикстуры - тестовые данные:
• кукбук
• модуль
• плейбук
Надежные решения для сложной инфраструктуры
11
Slide 12
Slide 12 text
Результат
Надежные решения для сложной инфраструктуры
12
Serverspec - тесты для инфраструктуры:
• Linux/BSD/Windows
• Встроенные ресурсы
Slide 13
Slide 13 text
Как тестируют?
Выполнить проверки
Запустить код в Vagrant
Посмотреть изменения
Зайти на машину
Проверить состояние
Надежные решения для сложной инфраструктуры
13
Slide 14
Slide 14 text
Автоматизируем
Kitchen CI
Travis CI
Другие CI системы
Надежные решения для сложной инфраструктуры
14
Slide 15
Slide 15 text
Test Kitchen
Но это только для Chef?
Уже нет.
Надежные решения для сложной инфраструктуры
15
Slide 16
Slide 16 text
Test Kitchen
Chef/Puppet/Ansible/Salt
Vagrant
Cloud
Serverspec
Надежные решения для сложной инфраструктуры
16
Slide 17
Slide 17 text
Travis CI
CI система для GitHub
SaaS
Ubuntu 12.04
Надежные решения для сложной инфраструктуры
17
Slide 18
Slide 18 text
Kitchen+Travis CI
Два инструмента
Облачные провайдеры
Надежные решения для сложной инфраструктуры
18
Slide 19
Slide 19 text
Другие CI системы
Jenkins
TeamCity
Bamboo
Ваша CI система
Надежные решения для сложной инфраструктуры
19
Slide 20
Slide 20 text
Что еще?
Делимся с сообществом
Надежные решения для сложной инфраструктуры
20
Slide 21
Slide 21 text
Делимся
Chef Supermarket
Puppet Forge
Ansible Galaxy
Salt Formulas
Надежные решения для сложной инфраструктуры
21
Slide 22
Slide 22 text
Не забываем
Приватная информация
Версии и теги
Тесты и статус сборки
История изменений и документация
Совместимость и конфликты
Лицензия
Надежные решения для сложной инфраструктуры
22
Slide 23
Slide 23 text
Как это делаем мы
Chef cookbooks + GitHub
Travis CI
Rubocop + Foodcritic
Test Kitchen + Digital Ocean + Serverspec
Chef Supermarket
Статус сборки и нотификации в Slack чат
Надежные решения для сложной инфраструктуры
23
Slide 24
Slide 24 text
Выводы
Тестируйте инфраструктуру
Автоматизируйте
Делитесь с сообществом
Надежные решения для сложной инфраструктуры
24