DevOps и системы управления конфигурацией. SECON 2015
-
Upload
ivan-evtukhovich -
Category
Software
-
view
360 -
download
4
Transcript of DevOps и системы управления конфигурацией. SECON 2015
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 [email protected]: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