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

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

Embed Size (px)

Citation preview

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

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

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

О себе

• Express 42 • Qik/Skype/Microsoft

• Chef/Puppet • Ansible/SaltStack

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

О чем доклад?

• Тестирование • Инструменты • Автоматизация • Наш опыт

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

Тесты?

• Качество • Обратная связь • Автоматизация • Документация

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

Тесты?

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

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

• Изменения • Коллектив • Сложная логика • Чужой код

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

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

• Chef • Puppet • Ansible • SaltStack

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

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

• Кукбуки (Chef ) • Модули (Puppet) • Роли (Ansible) • Формулы (SaltStack)

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

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

• Стиль языка и кода • Функционал • Интеграцию • Результат

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

Стиль языка

• Ruby • rubocop • Python • pep8

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

Стиль кода

• Chef Foodcritic • Puppet-lint • Ansible-lint • Salt-lint

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

Функционал

• Фикстуры или тестовые данные: • кукбук (Chef) • модуль (Puppet) • плейбук (Ansible) • формула (SaltStack)

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

Интеграция

• Vagrant • Test Kitchen • Chef/Puppet/Ansible/Salt • Vagrant/Docker/LXC • Clouds • Serverspec

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

Результат

• Serverspec - тесты для инфраструктуры: • Linux/BSD/Windows • Встроенные ресурсы • Замена bash

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

Результат

• Chef • Audit mode • Ansible • Assert, URI, Script, Fail

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

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

• CI система • Travis CI • Другие CI системы

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

Travis CI• SaaS для GitHub проектов • Ограничения • Окружение • Ubuntu 12.04 • Пакеты • Переменные

• Ресурсы

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

Test Kitchen + Travis CI

• Два инструмента • Облачные провайдеры

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

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

• Jenkins • TeamCity • Bamboo • Ваша CI система

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

А продакшн?

• Dry run (Chef) • Noop mode (Puppet) • Check mode (Ansible) • State testing (SaltStack)

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

Что еще?

• Ревью кода • Делимся с сообществом

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

Делимся

• Chef Supermarket • Puppet Forge • Ansible Galaxy • Salt Formulas

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

Не забываем

• Приватная информация • Тесты и статус сборки • История изменений и документация

• Совместимость и конфликты • Синхронизация с платформой • Лицензия

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

Как это делаем мы• GitHub • Travis CI • Rubocop + Foodcritic • Test Kitchen + Digital Ocean • Serverspec • Chef Supermarket • Slack

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

Выводы

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

• Автоматизируйте • Делитесь с сообществом

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

Контакты• github.com/express42-cookbooks • habrahabr.ru/company/express42/ • devopsdeflope.ru • devopsru.com • @express42_ru

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

Подарок

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

Вопросы?• github.com/express42-cookbooks • habrahabr.ru/company/express42/ • devopsdeflope.ru • devopsru.com • @express42_ru