30
Тестируем инфраструктуру как код Игорь Курочкин

Devconf-2015 Тестируем инфраструктуру как код

Embed Size (px)

Citation preview

Page 1: Devconf-2015 Тестируем инфраструктуру как код

Тестируем инфраструктуру как код

Игорь Курочкин

Page 2: Devconf-2015 Тестируем инфраструктуру как код

О себе

• Express 42

• Qik/Skype/Microsoft

• Chef/Puppet

• Ansible/SaltStack

Page 3: Devconf-2015 Тестируем инфраструктуру как код

О чем доклад?

• Тестирование

• Инструменты

• Автоматизация

• Наш опыт

Page 4: Devconf-2015 Тестируем инфраструктуру как код

Тесты?

• Качество

• Обратная связь

• Автоматизация

• Документация

Page 5: Devconf-2015 Тестируем инфраструктуру как код

Когда актуально?

• Изменения

• Коллектив

• Сложная логика

• Чужой код

Page 6: Devconf-2015 Тестируем инфраструктуру как код

Какие системы?

• Chef

• Puppet

• Ansible

• SaltStack

Page 7: Devconf-2015 Тестируем инфраструктуру как код

Что тестировать?

• Кукбуки (Chef)

• Модули (Puppet)

• Роли (Ansible)

• Формулы (SaltStack)

Page 8: Devconf-2015 Тестируем инфраструктуру как код

Что уже есть?

• Why run (Chef)

• Noop mode (Puppet)

• Check mode (Ansible)

• State testing (SaltStack)

Page 9: Devconf-2015 Тестируем инфраструктуру как код

Что проверяем?

• Стиль языка и кода

• Функционал

• Интеграцию

• Результат

Page 10: Devconf-2015 Тестируем инфраструктуру как код

Стиль языка

• Ruby

• rubocop

• Python

• pep8

Page 11: Devconf-2015 Тестируем инфраструктуру как код

Стиль кода

• Chef Foodcritic

• Puppet-lint

• Ansible-lint

• Salt-lint

Page 12: Devconf-2015 Тестируем инфраструктуру как код

Функционал

• Фикстуры или тестовые данные:

• кукбук (Chef)

• модуль (Puppet)

• плейбук (Ansible)

• формула (SaltStack)

Page 13: Devconf-2015 Тестируем инфраструктуру как код

Интеграция

• Vagrant

• Test Kitchen

Page 14: Devconf-2015 Тестируем инфраструктуру как код

Vagrant

• Mac/Linux/Windows

• Chef/Puppet/Ansible/Salt

• Много плагинов

• Vagrantfile

Page 15: Devconf-2015 Тестируем инфраструктуру как код

Test Kitchen

• Chef/Puppet/Ansible/Salt

• Vagrant/Docker/LXC

• Облачные провайдеры

• Наборы тестов

• Тестовые фреймворки

Page 16: Devconf-2015 Тестируем инфраструктуру как код

Результат

• Serverspec - тесты для инфраструктуры:

• Linux/BSD/Windows

• Встроенные ресурсы

• Замена bash

Page 17: Devconf-2015 Тестируем инфраструктуру как код

Результат

• Chef

• Audit mode

• Ansible

• Assert, URI, Script, Fail

• Puppet

• puppet-retrospec

Page 18: Devconf-2015 Тестируем инфраструктуру как код

Автоматизируем

• Система непрерывной интеграции (CI)

• Travis CI

• Другие системы

Page 19: Devconf-2015 Тестируем инфраструктуру как код

Travis CI

• SaaS система для GitHub проектов

• Бесплатна для public репозиториев

• Интеграция

• Chef Supermarket

• Puppet Forge

Page 20: Devconf-2015 Тестируем инфраструктуру как код

Travis CI

• Ограничения

• Окружение

• Ubuntu 12.04

• Пакеты

• Переменные

• Ресурсы

Page 21: Devconf-2015 Тестируем инфраструктуру как код

Travis CI + Test Kitchen

• Объединяем два инструмента

• Облачные провайдеры

• Один набор тестов

Page 22: Devconf-2015 Тестируем инфраструктуру как код

Другие CI системы

• Jenkins

• TeamCity

• Bamboo

• Ваша CI система

Page 23: Devconf-2015 Тестируем инфраструктуру как код

Что еще?

• Ревью кода

• Передача знаний

• Общие практики

• Делимся с сообществом

• Экспертиза и взгляд со стороны

• Развитие и поддержка

Page 24: Devconf-2015 Тестируем инфраструктуру как код

Делимся

• Chef Supermarket

• Puppet Forge

• Ansible Galaxy

• Salt Formulas

Page 25: Devconf-2015 Тестируем инфраструктуру как код

Не забываем

• Приватная информация

• Тесты и статус сборки

• История изменений и документация

• Совместимость и конфликты

• Синхронизация с платформой

• Лицензия

Page 26: Devconf-2015 Тестируем инфраструктуру как код

Как это делаем мы

• Любое изменение на GitHub

• Запуск тестов в Travis CI

• Вызов Rubocop и Foodcritic проверок

• Запуск виртуалки в Digital Ocean через Test Kitchen

• Выполнение Serverspec тестов

• Загрузка в Chef Supermarket

• Нотификация в Slack чат и обновление статуса сборки

Page 27: Devconf-2015 Тестируем инфраструктуру как код

Выводы

• Тестируйте инфраструктуру

• Автоматизируйте

• Делитесь с сообществом

Page 28: Devconf-2015 Тестируем инфраструктуру как код

Контакты

• github.com/express42-cookbooks

• habrahabr.ru/company/express42/

• devopsdeflope.ru

• devopsru.com

• @express42_ru

Page 29: Devconf-2015 Тестируем инфраструктуру как код

Подарок

Page 30: Devconf-2015 Тестируем инфраструктуру как код

Вопросы?

• github.com/express42-cookbooks

• habrahabr.ru/company/express42/

• devopsdeflope.ru

• devopsru.com

• @express42_ru