SlideShare a Scribd company logo
Опыт использования Ansible
для управления
конфигурацией
Место для смешного подзаголовка
Александр Чистяков,
главный инженер Git in Sky,
2014
Кто я?
§ Меня зовут Саша
§ Я главный инженер в компании Git in Sky
§ Ночью — разработчик ПО
§ Днем — инженер отдела эксплуатации
§ Или наоборот
Опыт использования Ansible для управления конфигурацией. 2014
Кто вы?
§ С вами все ясно
Опыт использования Ansible для управления конфигурацией. 2014
Доклад о том, как Ansible помогает мне
§ Объективное сравнение невозможно
§ Поэтому сравнения не будет вообще
§ Я расскажу о своих use cases
§ Начну с того, что расскажу о себе
§ Такой вот я эгоист
Опыт использования Ansible для управления конфигурацией. 2014
Феерическая расстановка точек над всеми
§ Набор навыков: “Разработчик”
§ Набор навыков: “Системный администратор”
§ Набор навыков: “Автоматизатор”
§ Все три абилки смешать нельзя, будет взрыв
§ “Ой, у меня засорилась труба!”
§ ^ Кого из трех обычно вызывают? (никого)
Опыт использования Ansible для управления конфигурацией. 2014
Пара слов обо мне
§ Я не автоматизатор
§ Скучно, нету драйва и челленджа
§ Не пытайтесь повторить дома =>
§ (если что — я на мотоцикле не езжу,
не люблю экстрим)
§ Меня вызывают! (это про прошлый слайд)
Опыт использования Ansible для управления конфигурацией. 2014
Как устроен Ansible
§ Это программа на языке Python
§ Она умеет применять playbooks к хостам
§ На хостах не нужны никакие агенты
§ Все, что нужно на хосте — Python
§ Коммуникация между управляющей
машиной и хостом идет по SSH
Опыт использования Ansible для управления конфигурацией. 2014
Мой типичный use case
§ Хочу на всех машинах пользователя chistyakov
§ Хочу, чтобы у него shell был zsh
§ Хочу oh-my-zsh с моей темой
§ ^ Промпт синенького цвета ОБЯЗАТЕЛЬНО!
§ Хочу UID 0 у chistyakov
§ atop с интервалом 30 сек, tmux, другие
приятные мелочи
Опыт использования Ansible для управления конфигурацией. 2014
Доп. условия
§ Кастомеров много, а я одна
§ ^ отлично, playbook храним у меня
§ На машинах везде Ubuntu 12.04/14.04
§ ^ отлично, сценарий будет один и тот же
§ Цели ясны, задачи определены
Опыт использования Ansible для управления конфигурацией. 2014
Инвентаризация
§ Inventory file — файл в формате INI, группы:хосты
§ Штатно - /etc/ansible/hosts, может быть где угодно
Опыт использования Ansible для управления конфигурацией. 2014
Необходимые приготовления на хостах
§ Завести везде пользователя (пусть он сразу будет chistyakov)
§ Добавить его в /etc/sudoers, разрешить sudo без пароля
§ Прописать ему в ~/.ssh/authorized_keys мой ключ
§ ^ Приготовления логичны, должен же я туда как-то попасть?
Опыт использования Ansible для управления конфигурацией. 2014
Анатомия playbook
§ Это YAML-файл, определяющий что и где запускать, от кого
запускать и в каком порядке
Опыт использования Ansible для управления конфигурацией. 2014
Анатомия задачи
§ У задачи есть имя (лучше делать его уникальным), название
модуля, который будет выполняться, параметры этого
модуля (у каждого — свои) и атрибуты самой задачи
§ После исполнения задача может нотифицировать хэндлеры,
если они указаны
Опыт использования Ansible для управления конфигурацией. 2014
Анатомия хэндлера
§ У хэндлера есть имя (оно точно должно быть уникальным), а
в остальном хэндлер это просто обычная задача,
объявленная в секции handlers
§ Не нотифицировали — не будет вызван
Опыт использования Ansible для управления конфигурацией. 2014
Порядок применения хэндлеров
§ Обычно хэндлеры запускаются в самом конце, после
выполнения всех задач
§ Бывает необходимым запустить уже нотифицированные
хэндлеры до какой-то задачи, иначе она не пройдет
Опыт использования Ansible для управления конфигурацией. 2014
Условное выполнение
§ Некоторые задачи нужно сделать только один раз
(Например — перестать писать на PHP)
§ Регистрируем результат выполнения задачи в переменной, и
в следующей задаче проверяем ее значение
Опыт использования Ansible для управления конфигурацией. 2014
Что не попало в этот use case?
§ Можно использовать переменные и связывать их с
конкретными хостами
§ Это делается через файлы вида host_vars/hostname, где
hostname — FQDN хоста
§ Выглядит так:
Опыт использования Ansible для управления конфигурацией. 2014
Что было хорошо?
§ Нет необходимости разворачивать и поддерживать сервер
§ Нет необходимости разворачивать на хостах клиент
§ И, кстати, клиент потребляет ровно 0 мегабайт RSS
§ Модуль service умеет обращаться с SMF-сервисами (это в
Solaris)
§ Местный DSL очень немногословен
Опыт использования Ansible для управления конфигурацией. 2014
Что еще было хорошо?
§ SmartOS — достаточно капризная система
§ Это не просто клон Solaris, а клон Solaris, работающий с USB-
устройства
§ Поэтому некоторые конфиги при рестартах он просто теряет (это
ожидаемое поведение)
§ Другие коллеги используют bash-скрипты, я использую Ansible,
запускаемый при старте хоста
“Взять файлы в git, натравить на них Ansible”
Опыт использования Ansible для управления конфигурацией. 2014
Это не все, не расходитесь!
§ Поменять UID у того же пользователя, под которым
открыта сессия - это не совсем просто
§ Особенно, если вы хотите потом залогинится еще раз
§ usermod так не умеет
§ Зато так умеет Augeas, для которого есть модуль для
Ansible! (Всего две CM системы из известных мне
знают про Augeas)
Опыт использования Ansible для управления конфигурацией. 2014
Что вызывало вопросы?
§ А достаточно ли быстр SSH для массового удаленного
выполнения команд?
§ Есть еще один файл — ansible.cfg и параметр в нем
(по умолчанию выключен, надо сначала убрать requiretty в
/etc/sudoers, иначе сломаете sudo):
Опыт использования Ansible для управления конфигурацией. 2014
Снимем показания счетчика
§ Без pipelining
§ С pipelining
Опыт использования Ansible для управления конфигурацией. 2014
Что было ужасно?
§ При выполнении playbook на одной из машин со SmartOS его
исполнение намертво зависло
§ Проблема в core library — модуль service разрешает и
запускает SMF-сервисы рекурсивно, что при определенном
стечении обстоятельств приводит к попыткам запустить на
выполнение в бесконечном цикле конфигурационный
файл
Опыт использования Ansible для управления конфигурацией. 2014
Что ужасно до сих пор?
§ Фреймворк юнит-тестирования плейбуков отсутствует
§ В документации вообще нет ни слова про юнит-тесты
§ Привычка присваивать ролям номера версий отсутствует
§ Да, роли — я о них не рассказал, так как не пользуюсь, но они
есть
§ “Роль” это просто переиспользуемый кусок плейбука
(ну почти)
Опыт использования Ansible для управления конфигурацией. 2014
Выводы:
§ Некоторые еще и лимонад добавляют
§ ^ Ничего не имею против
§ Больше систем, хороших и разных!
§ Ключевое слово: “хороших”, а не “разных”
§ ^ Не поваляешь — не поешь
Опыт использования Ansible для управления конфигурацией. 2014
С вами был Александр Чистяков,
главный инженер Git in Sky
alex@gitinsky.com
http://gitinsky.com
http://meetup.com/DevOps-40
Пожалуйста, ваши вопросы.
Спасибо за внимание!
http://devconf.ru/offers/ - ПРОГОЛОСУЙТЕ, ПОЖАЛУЙСТА,
ЗА МОИ ЗАЯВКИ!

More Related Content

What's hot

Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
Provectus
 
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разRootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
Timur Batyrshin
 
My talk on administering PostgreSQL
My talk on administering PostgreSQLMy talk on administering PostgreSQL
My talk on administering PostgreSQL
Alex Chistyakov
 
My talk on PgDay Russia 2014
My talk on PgDay Russia 2014My talk on PgDay Russia 2014
My talk on PgDay Russia 2014
Alex Chistyakov
 
Using Ansible
Using AnsibleUsing Ansible
Using Ansible
Alex Chistyakov
 
Fabric для управления серверами
Fabric для управления серверамиFabric для управления серверами
Fabric для управления серверами
Maxim Kulsha
 
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Moscow.pm
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web Workers
Aleksey Fomkin
 
My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014
Alex Chistyakov
 
dont badmouth mojo
dont badmouth mojodont badmouth mojo
dont badmouth mojoAnton Ukolov
 
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Ontico
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)
Ontico
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
ITCrowd Almaty
 
"Fault tolerant workflow orchestration on PHP", Anton Tsitou
"Fault tolerant workflow orchestration on PHP", Anton Tsitou"Fault tolerant workflow orchestration on PHP", Anton Tsitou
"Fault tolerant workflow orchestration on PHP", Anton Tsitou
Fwdays
 
Perl Debugger и mod_perl
Perl Debugger и mod_perlPerl Debugger и mod_perl
Perl Debugger и mod_perl
Иван mrRico
 
Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.
Alexey Lesovsky
 
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)Ontico
 
REPL в Node.js: улучшаем быт разработчик
REPL в Node.js: улучшаем быт разработчикREPL в Node.js: улучшаем быт разработчик
REPL в Node.js: улучшаем быт разработчик
IT61
 
My talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ruMy talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ru
Alex Chistyakov
 

What's hot (20)

Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
 
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разRootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
 
My talk on administering PostgreSQL
My talk on administering PostgreSQLMy talk on administering PostgreSQL
My talk on administering PostgreSQL
 
My talk on PgDay Russia 2014
My talk on PgDay Russia 2014My talk on PgDay Russia 2014
My talk on PgDay Russia 2014
 
Using Ansible
Using AnsibleUsing Ansible
Using Ansible
 
Fabric для управления серверами
Fabric для управления серверамиFabric для управления серверами
Fabric для управления серверами
 
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
Perl для не программистов. Николай Мишин. Moscow.pm 4 июля 2013
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web Workers
 
My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014
 
dont badmouth mojo
dont badmouth mojodont badmouth mojo
dont badmouth mojo
 
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
Производительность WebGL-приложений / Дмитренко Кирилл (Яндекс)
 
Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)Конструктор / Денис Паясь (Яндекс)
Конструктор / Денис Паясь (Яндекс)
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
 
"Fault tolerant workflow orchestration on PHP", Anton Tsitou
"Fault tolerant workflow orchestration on PHP", Anton Tsitou"Fault tolerant workflow orchestration on PHP", Anton Tsitou
"Fault tolerant workflow orchestration on PHP", Anton Tsitou
 
Perl Debugger и mod_perl
Perl Debugger и mod_perlPerl Debugger и mod_perl
Perl Debugger и mod_perl
 
Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.Highload 2014. PostgreSQL: ups, DevOps.
Highload 2014. PostgreSQL: ups, DevOps.
 
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
 
REPL в Node.js: улучшаем быт разработчик
REPL в Node.js: улучшаем быт разработчикREPL в Node.js: улучшаем быт разработчик
REPL в Node.js: улучшаем быт разработчик
 
My talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ruMy talk on Graphite stack on 58it.ru
My talk on Graphite stack on 58it.ru
 

Similar to Ansible on a great Moscow DevOps CM battle

My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014
Alex Chistyakov
 
Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014
Alex Chistyakov
 
Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)
Alex Chistyakov
 
Perl, и с чем его едят. Доклад нашего Главного Инженера (ГИ) Александра Чистя...
Perl, и с чем его едят. Доклад нашего Главного Инженера (ГИ) Александра Чистя...Perl, и с чем его едят. Доклад нашего Главного Инженера (ГИ) Александра Чистя...
Perl, и с чем его едят. Доклад нашего Главного Инженера (ГИ) Александра Чистя...
Serguei Gitinsky
 
Применяем Ansible
Применяем AnsibleПрименяем Ansible
Применяем Ansible
Alexander Svetkin
 
Application deployment & configuration management
Application deployment & configuration managementApplication deployment & configuration management
Application deployment & configuration managementAlexander Kirillov
 
Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.
Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.
Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.
DrupalSib
 
My talk on Hadoop stack operations engineering at OSPCon
My talk on Hadoop stack operations engineering at OSPConMy talk on Hadoop stack operations engineering at OSPCon
My talk on Hadoop stack operations engineering at OSPCon
Alex Chistyakov
 
Зачем программистам Ansible
Зачем программистам AnsibleЗачем программистам Ansible
Зачем программистам Ansible
Denis Honig
 
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
FDConf
 
Масштабируемый DevOps
Масштабируемый DevOpsМасштабируемый DevOps
Масштабируемый DevOps
Minsk Linux User Group
 
Ansible in the enterprise
Ansible in the enterpriseAnsible in the enterprise
Ansible in the enterprise
Alex Chistyakov
 
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
Serguei Gitinsky
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
Yehor Herasymchuk
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
IT-Portfolio
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
Ivan Grishaev
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
it-people
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
WrikeTechClub
 

Similar to Ansible on a great Moscow DevOps CM battle (20)

My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014My talk on Salt and Ansible from DevConf 2014
My talk on Salt and Ansible from DevConf 2014
 
Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014Chef, Puppet, Salt, Ansible on SECON 2014
Chef, Puppet, Salt, Ansible on SECON 2014
 
Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)Мой modern Perl (весенняя встреча Piter United)
Мой modern Perl (весенняя встреча Piter United)
 
Perl, и с чем его едят. Доклад нашего Главного Инженера (ГИ) Александра Чистя...
Perl, и с чем его едят. Доклад нашего Главного Инженера (ГИ) Александра Чистя...Perl, и с чем его едят. Доклад нашего Главного Инженера (ГИ) Александра Чистя...
Perl, и с чем его едят. Доклад нашего Главного Инженера (ГИ) Александра Чистя...
 
Применяем Ansible
Применяем AnsibleПрименяем Ansible
Применяем Ansible
 
Application deployment & configuration management
Application deployment & configuration managementApplication deployment & configuration management
Application deployment & configuration management
 
Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.
Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.
Sergey Cherebedov. Deployment of the environment for Drupal using Ansible.
 
My talk on Hadoop stack operations engineering at OSPCon
My talk on Hadoop stack operations engineering at OSPConMy talk on Hadoop stack operations engineering at OSPCon
My talk on Hadoop stack operations engineering at OSPCon
 
Зачем программистам Ansible
Зачем программистам AnsibleЗачем программистам Ansible
Зачем программистам Ansible
 
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
 
Масштабируемый DevOps
Масштабируемый DevOpsМасштабируемый DevOps
Масштабируемый DevOps
 
Chef @DevWeb
Chef @DevWebChef @DevWeb
Chef @DevWeb
 
Ansible in the enterprise
Ansible in the enterpriseAnsible in the enterprise
Ansible in the enterprise
 
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
CFEngine, Puppet, Chef, SAltStack and Ansible Failover'14
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
 
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
13 октября, DEV {web} - конференция о Highload веб-разработке. "Управление ок...
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»Артём Ерошенко «Рецепт приготовления облачных тестингов»
Артём Ерошенко «Рецепт приготовления облачных тестингов»
 

More from Alex Chistyakov

My slides from DevOpsDays 2019
My slides from DevOpsDays 2019My slides from DevOpsDays 2019
My slides from DevOpsDays 2019
Alex Chistyakov
 
My slides from BMM №3 May 2019
My slides from BMM №3 May 2019My slides from BMM №3 May 2019
My slides from BMM №3 May 2019
Alex Chistyakov
 
My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019
Alex Chistyakov
 
My slides from SECR'2018
My slides from SECR'2018My slides from SECR'2018
My slides from SECR'2018
Alex Chistyakov
 
My slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtMy slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArt
Alex Chistyakov
 
My slides from CC'2019
My slides from CC'2019My slides from CC'2019
My slides from CC'2019
Alex Chistyakov
 
My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019
Alex Chistyakov
 
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019
Alex Chistyakov
 
My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019
Alex Chistyakov
 
Configuration management and Kubernetes
Configuration management and KubernetesConfiguration management and Kubernetes
Configuration management and Kubernetes
Alex Chistyakov
 
Ansible and other stuff
Ansible and other stuffAnsible and other stuff
Ansible and other stuff
Alex Chistyakov
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017
Alex Chistyakov
 
My talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMMy talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGM
Alex Chistyakov
 
My talk at SECR 2017
My talk at SECR 2017My talk at SECR 2017
My talk at SECR 2017
Alex Chistyakov
 
On scaling teams
On scaling teamsOn scaling teams
On scaling teams
Alex Chistyakov
 
MariaDB workshop
MariaDB workshopMariaDB workshop
MariaDB workshop
Alex Chistyakov
 
Docker for JS people
Docker for JS peopleDocker for JS people
Docker for JS people
Alex Chistyakov
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
Alex Chistyakov
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10
Alex Chistyakov
 
My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017
Alex Chistyakov
 

More from Alex Chistyakov (20)

My slides from DevOpsDays 2019
My slides from DevOpsDays 2019My slides from DevOpsDays 2019
My slides from DevOpsDays 2019
 
My slides from BMM №3 May 2019
My slides from BMM №3 May 2019My slides from BMM №3 May 2019
My slides from BMM №3 May 2019
 
My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019 My slides from DevOps-40 meetup Jun 2019
My slides from DevOps-40 meetup Jun 2019
 
My slides from SECR'2018
My slides from SECR'2018My slides from SECR'2018
My slides from SECR'2018
 
My slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArtMy slides from the first SPb SRE community meetup at DataArt
My slides from the first SPb SRE community meetup at DataArt
 
My slides from CC'2019
My slides from CC'2019My slides from CC'2019
My slides from CC'2019
 
My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019My slides from BMM №4 Nov 2019
My slides from BMM №4 Nov 2019
 
My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019My slides from DevOps-40 meetup Oct 2019
My slides from DevOps-40 meetup Oct 2019
 
My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019My slides from DevOps-40 meetup Dec 2019
My slides from DevOps-40 meetup Dec 2019
 
Configuration management and Kubernetes
Configuration management and KubernetesConfiguration management and Kubernetes
Configuration management and Kubernetes
 
Ansible and other stuff
Ansible and other stuffAnsible and other stuff
Ansible and other stuff
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017
 
My talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGMMy talk at SPb SQA sub-meetup of ITGM
My talk at SPb SQA sub-meetup of ITGM
 
My talk at SECR 2017
My talk at SECR 2017My talk at SECR 2017
My talk at SECR 2017
 
On scaling teams
On scaling teamsOn scaling teams
On scaling teams
 
MariaDB workshop
MariaDB workshopMariaDB workshop
MariaDB workshop
 
Docker for JS people
Docker for JS peopleDocker for JS people
Docker for JS people
 
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
 
My talk on GitHub open data at ITGM #10
 My talk on GitHub open data at ITGM #10 My talk on GitHub open data at ITGM #10
My talk on GitHub open data at ITGM #10
 
My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017
 

Ansible on a great Moscow DevOps CM battle

  • 1. Опыт использования Ansible для управления конфигурацией Место для смешного подзаголовка Александр Чистяков, главный инженер Git in Sky, 2014
  • 2. Кто я? § Меня зовут Саша § Я главный инженер в компании Git in Sky § Ночью — разработчик ПО § Днем — инженер отдела эксплуатации § Или наоборот Опыт использования Ansible для управления конфигурацией. 2014
  • 3. Кто вы? § С вами все ясно Опыт использования Ansible для управления конфигурацией. 2014
  • 4. Доклад о том, как Ansible помогает мне § Объективное сравнение невозможно § Поэтому сравнения не будет вообще § Я расскажу о своих use cases § Начну с того, что расскажу о себе § Такой вот я эгоист Опыт использования Ansible для управления конфигурацией. 2014
  • 5. Феерическая расстановка точек над всеми § Набор навыков: “Разработчик” § Набор навыков: “Системный администратор” § Набор навыков: “Автоматизатор” § Все три абилки смешать нельзя, будет взрыв § “Ой, у меня засорилась труба!” § ^ Кого из трех обычно вызывают? (никого) Опыт использования Ansible для управления конфигурацией. 2014
  • 6. Пара слов обо мне § Я не автоматизатор § Скучно, нету драйва и челленджа § Не пытайтесь повторить дома => § (если что — я на мотоцикле не езжу, не люблю экстрим) § Меня вызывают! (это про прошлый слайд) Опыт использования Ansible для управления конфигурацией. 2014
  • 7. Как устроен Ansible § Это программа на языке Python § Она умеет применять playbooks к хостам § На хостах не нужны никакие агенты § Все, что нужно на хосте — Python § Коммуникация между управляющей машиной и хостом идет по SSH Опыт использования Ansible для управления конфигурацией. 2014
  • 8. Мой типичный use case § Хочу на всех машинах пользователя chistyakov § Хочу, чтобы у него shell был zsh § Хочу oh-my-zsh с моей темой § ^ Промпт синенького цвета ОБЯЗАТЕЛЬНО! § Хочу UID 0 у chistyakov § atop с интервалом 30 сек, tmux, другие приятные мелочи Опыт использования Ansible для управления конфигурацией. 2014
  • 9. Доп. условия § Кастомеров много, а я одна § ^ отлично, playbook храним у меня § На машинах везде Ubuntu 12.04/14.04 § ^ отлично, сценарий будет один и тот же § Цели ясны, задачи определены Опыт использования Ansible для управления конфигурацией. 2014
  • 10. Инвентаризация § Inventory file — файл в формате INI, группы:хосты § Штатно - /etc/ansible/hosts, может быть где угодно Опыт использования Ansible для управления конфигурацией. 2014
  • 11. Необходимые приготовления на хостах § Завести везде пользователя (пусть он сразу будет chistyakov) § Добавить его в /etc/sudoers, разрешить sudo без пароля § Прописать ему в ~/.ssh/authorized_keys мой ключ § ^ Приготовления логичны, должен же я туда как-то попасть? Опыт использования Ansible для управления конфигурацией. 2014
  • 12. Анатомия playbook § Это YAML-файл, определяющий что и где запускать, от кого запускать и в каком порядке Опыт использования Ansible для управления конфигурацией. 2014
  • 13. Анатомия задачи § У задачи есть имя (лучше делать его уникальным), название модуля, который будет выполняться, параметры этого модуля (у каждого — свои) и атрибуты самой задачи § После исполнения задача может нотифицировать хэндлеры, если они указаны Опыт использования Ansible для управления конфигурацией. 2014
  • 14. Анатомия хэндлера § У хэндлера есть имя (оно точно должно быть уникальным), а в остальном хэндлер это просто обычная задача, объявленная в секции handlers § Не нотифицировали — не будет вызван Опыт использования Ansible для управления конфигурацией. 2014
  • 15. Порядок применения хэндлеров § Обычно хэндлеры запускаются в самом конце, после выполнения всех задач § Бывает необходимым запустить уже нотифицированные хэндлеры до какой-то задачи, иначе она не пройдет Опыт использования Ansible для управления конфигурацией. 2014
  • 16. Условное выполнение § Некоторые задачи нужно сделать только один раз (Например — перестать писать на PHP) § Регистрируем результат выполнения задачи в переменной, и в следующей задаче проверяем ее значение Опыт использования Ansible для управления конфигурацией. 2014
  • 17. Что не попало в этот use case? § Можно использовать переменные и связывать их с конкретными хостами § Это делается через файлы вида host_vars/hostname, где hostname — FQDN хоста § Выглядит так: Опыт использования Ansible для управления конфигурацией. 2014
  • 18. Что было хорошо? § Нет необходимости разворачивать и поддерживать сервер § Нет необходимости разворачивать на хостах клиент § И, кстати, клиент потребляет ровно 0 мегабайт RSS § Модуль service умеет обращаться с SMF-сервисами (это в Solaris) § Местный DSL очень немногословен Опыт использования Ansible для управления конфигурацией. 2014
  • 19. Что еще было хорошо? § SmartOS — достаточно капризная система § Это не просто клон Solaris, а клон Solaris, работающий с USB- устройства § Поэтому некоторые конфиги при рестартах он просто теряет (это ожидаемое поведение) § Другие коллеги используют bash-скрипты, я использую Ansible, запускаемый при старте хоста “Взять файлы в git, натравить на них Ansible” Опыт использования Ansible для управления конфигурацией. 2014
  • 20. Это не все, не расходитесь! § Поменять UID у того же пользователя, под которым открыта сессия - это не совсем просто § Особенно, если вы хотите потом залогинится еще раз § usermod так не умеет § Зато так умеет Augeas, для которого есть модуль для Ansible! (Всего две CM системы из известных мне знают про Augeas) Опыт использования Ansible для управления конфигурацией. 2014
  • 21. Что вызывало вопросы? § А достаточно ли быстр SSH для массового удаленного выполнения команд? § Есть еще один файл — ansible.cfg и параметр в нем (по умолчанию выключен, надо сначала убрать requiretty в /etc/sudoers, иначе сломаете sudo): Опыт использования Ansible для управления конфигурацией. 2014
  • 22. Снимем показания счетчика § Без pipelining § С pipelining Опыт использования Ansible для управления конфигурацией. 2014
  • 23. Что было ужасно? § При выполнении playbook на одной из машин со SmartOS его исполнение намертво зависло § Проблема в core library — модуль service разрешает и запускает SMF-сервисы рекурсивно, что при определенном стечении обстоятельств приводит к попыткам запустить на выполнение в бесконечном цикле конфигурационный файл Опыт использования Ansible для управления конфигурацией. 2014
  • 24. Что ужасно до сих пор? § Фреймворк юнит-тестирования плейбуков отсутствует § В документации вообще нет ни слова про юнит-тесты § Привычка присваивать ролям номера версий отсутствует § Да, роли — я о них не рассказал, так как не пользуюсь, но они есть § “Роль” это просто переиспользуемый кусок плейбука (ну почти) Опыт использования Ansible для управления конфигурацией. 2014
  • 25. Выводы: § Некоторые еще и лимонад добавляют § ^ Ничего не имею против § Больше систем, хороших и разных! § Ключевое слово: “хороших”, а не “разных” § ^ Не поваляешь — не поешь Опыт использования Ansible для управления конфигурацией. 2014
  • 26. С вами был Александр Чистяков, главный инженер Git in Sky alex@gitinsky.com http://gitinsky.com http://meetup.com/DevOps-40 Пожалуйста, ваши вопросы. Спасибо за внимание! http://devconf.ru/offers/ - ПРОГОЛОСУЙТЕ, ПОЖАЛУЙСТА, ЗА МОИ ЗАЯВКИ!