Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
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
development
dev01
dev02
dev03
test
test01
test02
test03
staging
web01.stage
db01.stage
cache01.stage
production
web01.prod
….
web25.prod
db01.prod
db02.prod
cache01.prod
…
cache05.prod
Надежные решения для сложной инфраструктуры
ruby_install ruby_version do
action :install
end
ruby_set ruby_version do
action :set
username user
end
directory "#{application_directory}/" do
owner user
group user
end
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 pack
end
Надежные решения для сложной инфраструктуры
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

More Related Content

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

  • 2. Надежные решения для сложной инфраструктуры
  • 3. Надежные решения для сложной инфраструктуры План • Что такое DevOps? • Практики DevOps • Что такое системы управления конфигурацией • Chef/Ansible — сходства и различия
  • 4. Надежные решения для сложной инфраструктуры DevOps — это… • DevOps — это методология в разработке ПО, нацеленная на общение, взаимодействие и интеграцию специалистов по разработке ПО и специалистов в информационных технологиях. • https://ru.wikipedia.org/wiki/DevOps
  • 5. Надежные решения для сложной инфраструктуры Зачем? • Перебрасывание релиза через стену • Конфликт между отделами • Медленный и нестабильный релизный цикл
  • 6. Надежные решения для сложной инфраструктуры CAMS • Культура (Culture) • Автоматизация (Automation) • Измерения (Measurement) • Распространение знаний (Knowledge Sharing)
  • 7. Надежные решения для сложной инфраструктуры Автоматизация • инструменты для передачи ценности и смысла, помощь в командной работе • критерий эффективного использования — больше порядка в системе • Bash скрипты vs Chef/Ansible
  • 8. Надежные решения для сложной инфраструктуры Измерения • графики • логированное и сбор эксепшенов • визуализация статистики • визуализация и аналитика воркфлоу (канбан)
  • 9. Надежные решения для сложной инфраструктуры Распространение знаний • Всевозможные обратные связи • Смешивание команд
  • 10. Надежные решения для сложной инфраструктуры Культура • честность • открытость • искренность
  • 11. Надежные решения для сложной инфраструктуры Пример про гребцов
  • 12. Надежные решения для сложной инфраструктуры DevOps сисадмин • Звучит как Agile Java-разработчик • Релиз-инженер • Админ, который знает Chef/Puppet • DevOps отделы
  • 13. Надежные решения для сложной инфраструктуры Практики DevOps • Post Mortem • Админ на стендапах • Дежурный программист • Общедоступный мониторинг и логи • Все знают цели бизнеса
  • 14. Надежные решения для сложной инфраструктуры Continuous Delivery • Непрерывная поставка ПО — это процесс разработки и эксплуатации ПО, при котором каждое изменение может быть выкачено в боевую среду
  • 15. Надежные решения для сложной инфраструктуры
  • 16. Надежные решения для сложной инфраструктуры
  • 17. Надежные решения для сложной инфраструктуры CM • Configuration Management System • Системы управления конфигурацией • Цель — поддержание всех окружений в максимально идентичном состоянии • “Инфраструктура как код”
  • 18. Надежные решения для сложной инфраструктуры Инфраструктура как код • Подход, при котором инфраструктура описана в виде кода и хранится в СКВ • Применимы практики разработчиков: • ревью • тестирование • Контроль: предсказуемость и повторяемость
  • 19. Надежные решения для сложной инфраструктуры Популярные CMS • CFEngine • Puppet • Chef • SaltStack • Ansible
  • 20. Надежные решения для сложной инфраструктуры Картинка DevOps Continuous Delivery Configuration Management
  • 21. Надежные решения для сложной инфраструктуры Chef • Mar 6, 2008 – первый комит • Клиент/серверная модель • Ruby DSL • Огромное комьюнити • Поддержка коммерческой компании
  • 22. Надежные решения для сложной инфраструктуры • Более 2000 открытых кукбуков (supermarket.chef.io) • Развитый воркфлоу по командной разработке • Куча инструментов для работы и тестирования • Поддержка ведущих вендоров (IBM, HP и т.д.) • Поддержка Windows
  • 23. Надежные решения для сложной инфраструктуры Chef-server development dev01 dev02 dev03 test test01 test02 test03 staging web01.stage db01.stage cache01.stage production web01.prod …. web25.prod db01.prod db02.prod cache01.prod … cache05.prod
  • 24. Надежные решения для сложной инфраструктуры ruby_install ruby_version do action :install end ruby_set ruby_version do action :set username user end directory "#{application_directory}/" do owner user group user end 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 pack end
  • 25. Надежные решения для сложной инфраструктуры Ansible • Feb 23, 2012 - первый коммит (Michael DeHaan) • Модель без агента/клиентская модель • Декларативный язык (Yaml) • Огромное комьюнити • Поддержка коммерческой компании
  • 26. Надежные решения для сложной инфраструктуры • Более 2000 открытых ролей (galaxy.ansible.com) • Проблемы с командной разработкой • Тестирование не развито • Нет поддержки ведущих вендоров • Слабая поддержка Windows • Встроенная оркестрация
  • 27. Надежные решения для сложной инфраструктуры - 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
  • 28. Надежные решения для сложной инфраструктуры DevOps сообщество • devopsru.com • http://www.meetup.com/DevOps-Moscow-in- Russian • https://groups.google.com/forum/#!forum/devopsru • http://hangops.ru • http://devopsdeflope.ru
  • 29. Надежные решения для сложной инфраструктуры
  • 30. Надежные решения для сложной инфраструктуры
  • 31. Надежные решения для сложной инфраструктуры Книги • Непрерывное развертывание ПО. Автоматизация процессов сборки, тестирования и внедрения новых версий программ. Джез Хамбл, Давид Фарли • Проект “Феникс”. Роман о том, как DevOps меняет бизнес к лучшему. Джин Ким и др.
  • 32. Надежные решения для сложной инфраструктуры Ржака http://devopsreactions.tumblr.com
  • 33. Надежные решения для сложной инфраструктуры http://express42.com +7 499 918 67 34 @evtuhovich evtuhovich@gmail.com