$30 off During Our Annual Pro Sale. View Details »

Тестирование деплоя

Тестирование деплоя

О современных подходах к проверки вашего CI/CD, который вы только собираетесь настроить и внедрить.

Avatar for Yuri Khrustalev

Yuri Khrustalev

July 31, 2017
Tweet

More Decks by Yuri Khrustalev

Other Decks in Programming

Transcript

  1. Пока команда с непрерывной интеграцией ожидает прохождения тестов, команда с

    непрерывным деливери уже успела накатить версию, откатить ее и фиксит баги.
  2. Какие проблемы? • Мало кто следует всем рекомендациям Спольски •

    Отсутствует staging среда • Фиксация на монолитных приложениях с монолитным тестированием • Мало кто пишет инфраструктурный код да и мало кому он интересен • Неопределенность процесса • Нет интеграционного тестирования
  3. TestOps • Установка приложения по сценариям продакшена • Использование вашего

    любимого Chef/Puppet/Ansible/Stonic • Проверка чистой установки • Проверка обновления • Тестирование инфраструктуры • Тестирование сценариев • Интеграционное тестирование
  4. Оркестрирование Kitchen • Знает AWS/Vagrant/OpenStack/Libvirt/... • Не используйте Docker! (деплоить

    не бросайте) • Умеет Ansible/Chef/Puppet/... (кроме Stonic) ◦ (https://github.com/neillturner/kitchen-ansible) • Serverspec/Inspec/bats/... • Написано на ruby • Тесно интегрировано с chef
  5. Пример Kitchen --- driver: name: vagrant synced_folders: - ['.', '/home/app]

    provisioner: playbook: provisioning/setup.yml name: ansible_playbook roles_path: provisioning/roles hosts: workers require_chef_for_busser: false require_ruby_for_busser: true additional_copy_path: - "provisioning" requirements_path: provisioning/requirements.ym .... .... platforms: - name: debian-stretch suites: - name: default verifier: name: busser ruby_bindir: '/usr/bin'
  6. Верификация • http://serverspec.org/ ◦ ruby, rspec ◦ может проверять удаленный

    хост • https://www.inspec.io/ ◦ лучше чем rspec (по словам создателей) ◦ официально от chef ◦ умеет меньше • https://github.com/sstephenson/bats ◦ 100% shell ◦ давно не обновлялся (февраль 2016)
  7. Итог • Проверка инфраструктурного кода как шаг в CI •

    CI поверх CI • CI на CD • Больше уверенности • Релизы инфраструктурного кода • Ревью инфраструктурного кода • Больше инфраструктурного кода • Реже роняем сервера (но это не точно)
  8. Пример из жизни: CM role/cookbook/module • Поддержка нескольких ОС •

    Вариации логики через параметры • Установка с нуля или обновление • CircleCI/TravisCI не смогут помочь с сервисами • Старые системы не поддерживают провиженеры • Нужно поднимать свой CI (не бросайте это дело)
  9. Пример из жизни: AWS AMI • Packer • Запускается VM

    • Устанавливается софт • Последним шагом проверяется целостность установки • Локальные провиженеры ◦ Ansible установлен локально ◦ Serverspec - тоже локально ◦ Проверка с локальной машины удаленной • Не прошла верификация, нет ami
  10. Вопросы? • Что значит без автоматизации инфраструктуры? • Часики-то тикают!

    • Что значит "не хочу" писать деплой скрипты, все хотят! • Деплоить нечем? Отговорки, дал бог Ansible даст и Stonic!