DevOps и системы управления конфигурацией. SECON 2015

Preview:

Citation preview

DevOps и системы управления

конфигурациейИван Евтухович

Надежные решения для сложной инфраструктуры

Надежные решения для сложной инфраструктуры

План• Что такое DevOps?

• Практики DevOps

• Что такое системы управления конфигурацией

• Chef/Ansible — сходства и различия

Надежные решения для сложной инфраструктуры

DevOps — это…

• DevOps — это методология в разработке ПО, нацеленная на общение, взаимодействие и интеграцию специалистов по разработке ПО и специалистов в информационных технологиях.

• https://ru.wikipedia.org/wiki/DevOps

Надежные решения для сложной инфраструктуры

Зачем?

• Перебрасывание релиза через стену

• Конфликт между отделами

• Медленный и нестабильный релизный цикл

Надежные решения для сложной инфраструктуры

CAMS• Культура (Culture)

• Автоматизация (Automation)

• Измерения (Measurement)

• Распространение знаний (Knowledge Sharing)

Надежные решения для сложной инфраструктуры

Автоматизация• инструменты для передачи ценности и смысла, помощь в командной работе

• критерий эффективного использования —больше порядка в системе

• Bash скрипты vs Chef/Ansible

Надежные решения для сложной инфраструктуры

Измерения• графики

• логированное и сбор эксепшенов

• визуализация статистики

• визуализация и аналитика воркфлоу (канбан)

Надежные решения для сложной инфраструктуры

Распространение знаний

• Всевозможные обратные связи

• Смешивание команд

Надежные решения для сложной инфраструктуры

Культура• честность

• открытость

• искренность

Надежные решения для сложной инфраструктуры

Пример про гребцов

Надежные решения для сложной инфраструктуры

DevOps сисадмин

• Звучит как Agile Java-разработчик

• Релиз-инженер

• Админ, который знает Chef/Puppet

• DevOps отделы

Надежные решения для сложной инфраструктуры

Практики DevOps• Post Mortem

• Админ на стендапах

• Дежурный программист

• Общедоступный мониторинг и логи

• Все знают цели бизнеса

Надежные решения для сложной инфраструктуры

Continuous Delivery

• Непрерывная поставка ПО — это процесс разработки и эксплуатации ПО, при котором каждое изменение может быть выкачено в боевую среду

Надежные решения для сложной инфраструктуры

Надежные решения для сложной инфраструктуры

Надежные решения для сложной инфраструктуры

CM• Configuration Management System

• Системы управления конфигурацией

• Цель — поддержание всех окружений в максимально идентичном состоянии

• “Инфраструктура как код”

Надежные решения для сложной инфраструктуры

Инфраструктура как код

• Подход, при котором инфраструктура описана в виде кода и хранится в СКВ

• Применимы практики разработчиков:

• ревью

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

• Контроль: предсказуемость и повторяемость

Надежные решения для сложной инфраструктуры

Популярные CMS• CFEngine

• Puppet

• Chef

• SaltStack

• Ansible

Надежные решения для сложной инфраструктуры

КартинкаDevOps

Continuous Delivery

Configuration Management

Надежные решения для сложной инфраструктуры

Chef• Mar 6, 2008 – первый комит

• Клиент/серверная модель

• Ruby DSL

• Огромное комьюнити

• Поддержка коммерческой компании

Надежные решения для сложной инфраструктуры

• Более 2000 открытых кукбуков (supermarket.chef.io)

• Развитый воркфлоу по командной разработке

• Куча инструментов для работы и тестирования

• Поддержка ведущих вендоров (IBM, HP и т.д.)

• Поддержка Windows

Надежные решения для сложной инфраструктуры

Chef-server

developmentdev01 dev02 dev03

testtest01 test02 test03

stagingweb01.stage db01.stage

cache01.stage

productionweb01.prod

…. web25.prod db01.prod db02.prod

cache01.prod …

cache05.prod

Надежные решения для сложной инфраструктуры

ruby_install ruby_version do action :installend

ruby_set ruby_version do action :set username userend

directory "#{application_directory}/" do owner user group userend

key = Chef::EncryptedDataBagItem.load('deploy-key', 'key')

file "/home/#{user}/.ssh/id_rsa" do content key['private_key'] owner user group user mode '0600'end

%w(libmagickwand-dev libmagickcore-dev libpq-dev imagemagick).each do |pack| package packend

Надежные решения для сложной инфраструктуры

Ansible• Feb 23, 2012 - первый коммит (Michael DeHaan)

• Модель без агента/клиентская модель

• Декларативный язык (Yaml)

• Огромное комьюнити

• Поддержка коммерческой компании

Надежные решения для сложной инфраструктуры

• Более 2000 открытых ролей (galaxy.ansible.com)

• Проблемы с командной разработкой

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

• Нет поддержки ведущих вендоров

• Слабая поддержка Windows

• Встроенная оркестрация

Надежные решения для сложной инфраструктуры

- name: Load encrypted key include_vars: group_vars/deploy-key.yml

- name: Create content deploy keys template: src=id_rsa_content.j2 dest=/home/{{app_user}}/.ssh/id_rsa_content mode=0600 owner={{app_user}} group={{app_user}}

- name: Create worker deploy keys template: src=id_rsa_worker.j2 dest=/home/{{app_user}}/.ssh/id_rsa_worker mode=0600 owner={{app_user}} group={{app_user}}

- stat: path={{app_dir}} register: worker_dir

- name: Create git.sh template: src=git.sh.j2 dest=/home/{{app_user}}/git.sh owner={{app_user}} mode=0700 group={{app_user}}

- name: Clone worker repo shell: GIT_SSH=/home/{{app_user}}/git.sh git clone git@github.com:uchiru/workers.git {{app_dir}} sudo: no when: worker_dir.stat.exists == False

Надежные решения для сложной инфраструктуры

DevOps сообщество• devopsru.com

• http://www.meetup.com/DevOps-Moscow-in-Russian

• https://groups.google.com/forum/#!forum/devopsru

• http://hangops.ru

• http://devopsdeflope.ru

Надежные решения для сложной инфраструктуры

Надежные решения для сложной инфраструктуры

Надежные решения для сложной инфраструктуры

Книги• Непрерывное развертывание ПО. Автоматизация процессов сборки, тестирования и внедрения новых версий программ. Джез Хамбл, Давид Фарли

• Проект “Феникс”. Роман о том, как DevOps меняет бизнес к лучшему. Джин Ким и др.

Надежные решения для сложной инфраструктуры

Ржакаhttp://devopsreactions.tumblr.com

Надежные решения для сложной инфраструктуры

http://express42.com

+7 499 918 67 34@evtuhovich

evtuhovich@gmail.com

Recommended