SlideShare uma empresa Scribd logo
1 de 21
Применяем Ansible
Александр Светкин
alex.svetkin@gmail.com
Revision 2017-04-27
Что такое Ansible?
● Ansible — система управления конфигурацией
● Применима для ОС Linux/Unix и Windows
● Бесплатная и open source, лицензия GNU GPL
● “Консольно-ориентированная” (command-line interface)
● Модульная архитектура
● Поддержка сторонних модулей (Ansible Galaxy)
● Коммерческий вариант — Ansible Tower (WebUI, Dashboard etc.)
● Разработчик — Ansible Inc./Red Hat Inc.
2
Как работает Ansible
3
Ansible и Puppet — сравнение
Ansible
Императивный стиль (задачи playbooks)
Push по команде контроллера
Централизованная
Центр: машина инженера (контроллер)
Язык: YAML
В основе: SSH и Python
Puppet
Декларативный стиль (описание в manifests)
Pull периодически (агенты)
Централизованная
Центр: выделенный сервер
Язык: Puppet DSL
В основе: HTTPS и Ruby
4
На контроллере:
● Установка Ansible: http://docs.ansible.com/ansible/intro_installation.html
● Текстовый редактор и командная строка :)
На серверах:
● установка Ansible не требуется
● должен быть установлен python2.7 (для Ubuntu 16: apt-get install
python-minimal)
● должен быть настроен доступ по SSH с контроллера
Установка
5
provision.sh
#!/bin/bash
for host in 192.168.56.211 192.168.56.212; do
ssh root@$host "apt-get update && -y install ntp nginx"
scp nginx_site.conf root@$host:/etc/nginx/sites-enabled/
ssh root@$host "service nginx reload"
rsync …
end
6
От shell scripting к Ansible
● Начнем с создания файла inventory (список хостов):
[webservers]
web1 ansible_host=192.168.56.201
web2 ansible_host=192.168.56.202
● Выполним ad-hoc задачу:
> ansible -i inventory -u root -m shell -a "apt-get install -y ntp" webservers
● Далее: организуем задачи в playbooks
7
Playbooks
● Последовательности команд организуются в playbooks (пьесы)
● Для описания используется нотация YAML
● Playbook содержит не только задачи (tasks), но также может содержать:
○ hosts — шаблон серверов, к которым применяется playbooks
○ vars — переменные
○ handlers — обработчики
○ и др. директивы
● Задачи в playbook выполняются строго последовательно
8
playbook.yml
- hosts: all
user: root
tasks:
- apt: update_cache=yes
- apt: name=ntp
- apt: name=nginx
- apt: name=git
- copy:
src: files/nginx_site.conf
dest: /etc/nginx/sites-enabled/
- file: path=/var/www/ansible-site state=directory
- git:
repo: https://github.com/whisk/ansible-tutorial
dest: /root/ansible-tutorial
depth: 1
- shell: rsync -ru --del /root/ansible-tutorial/www/ /var/www/ansible/
- service: name=nginx state=restarted enabled=yes
9
Устанавливаем пакеты
Клонируем git repo
Копируем конфиг
Advanced Playbooks
● Циклы (with_items, with_nested, with_file, with_fileglob etc.)
● Тэги
● Блоки (block)
● Includes
● Условия (when)
● Handlers
10
playbook-advanced.yml
- hosts: all
user: root
tasks:
- name: install packages update_cache=yes cache_valid_time=86400
apt: name={{item}}
with_items: [ntp, nginx, git]
tags: packages
- copy:
src: files/nginx_site.conf
dest: /etc/nginx/sites-enabled/
notify: restart nginx
- include: deploy-site.yml
tags: deploy
handlers:
- name: restart nginx
service: name=nginx state=restarted
11
Организуем цикл по with_items
Отдельный playbook для code reuse
nginx нужно перезапустить
Обработчик сообщения
Шаблоны
● Используется шаблонизатор Jinja2: http://jinja.pocoo.org/
● Разрабатывался как шаблонизатор для веб-страниц, поэтому
возможностей для создания файлов конфигурации более чем достаточно
● Ansible добавляет еще фильтры — выражения типа:
{{ var | default('5') }} {{ data | to_json }} {{ str | regex_replace('^a', 'b') }}
● Преобразование шаблонов в документы происходит на контроллере
● Большинство фильтров из Jinja2 доступно в playbooks!
12
nginx.conf
worker_processes {{cpus}};
....
{% for item in sites %}
server {
listen {{http_port}};
server_name
{{item.name}};
root {{item.dir}};
...
}
{% endfor %}
13
[webservers]
web1 ansible_host=192.168.56.211 cpus=4
web2 ansible_host=192.168.56.212 cpus=8
[all:vars]
http_port=8080
inventory
playbook.yml
- hosts: all
vars:
sites:
- name: foo.com
dir: /var/www/foo_com
- name: bar.com
dir: /var/www/bar_com
- name: foobar.com
dir: /var/www/foobar_com
tasks:
- template:
src: templates/nginx.conf
dest: /etc/nginx/
- file: name={{item.dir}} state=directory
with_items: "{{sites}}"
14
Переменные, общие для всех серверов
Переменные и факты
● Переменные: определены вами на контроллере
● Факты: определены узлами (автоматически или вручную)
● Переменные/факты можно использовать в playbooks и шаблонах
● Более 20 (!) мест определения переменных/фактов
● Неопределенная переменная — ошибка выполнения (к счастью)
● Типичные места задания: inventory, playbooks, роли, параметры CLI
15
Пример: Multistage
● Три окружения: production, staging и dev
● Создаем отдельный inventory для каждого окружения
○ Переменные окружения задаются в inventory
○ Сервера также перечисляются в inventory
● Остальные переменные задаем в playbook
● Все файлы, кроме файлов inventory, общие для всех окружений
Такой подход позволяет получать идентичную конфигурацию на разных
группах серверов, при этом оставляя возможность вносить необходимые 16
Роли
● Удобная возможность группировать сервера по назначению/функциям
● Один сервер может иметь несколько ролей и такой подход позволяет:
○ Не порождать случайных кросс-зависимостей
○ Легко "расщеплять" или комбинировать сервер при
масштабировании
● Всем серверам может быть прописана "базовая" роль, которая реализует
ваши любимые настройки
● Роли легче повторно использовать (в других проектах и т.п.)
17
Некоторые практики
● Пишите все playbooks так, что их можно применить много раз подряд, и
это не приведет к ошибкам/побочным эффектам (идемпотентность)
● Используйте -C (--check) и -D (--diff) для проверки вносимых
изменений в файлы без реального применения этих изменений:
> ansible-playbook -C -D playbook.yml
● Используйте фильтры по тэгам и именам для выполнения конкретных
задач на конкретных серверах:
> ansible-playbook -t packages -l web1 playbook.yml
● Старайтесь не усложнять иерархию переменных без необходимости
● Используйте систему контроля версий для хранения конфигурации
18
Сильные стороны Ansible
● Простая "императивная" идеология
● Низкий порог входа для автоматизации массовых действий
● Provisioning (ввод в работу) серверов
● Выкатка кода
○ особенно если ваша "экосистема" не имеет готовых инструментов
или они относительно тяжелые
○ встроенная поддержка rolling updates
● Continuous Integration
○ легко вызвать ansible в git hook
19
Материалы по теме
http://docs.ansible.com/ansible/
Отличная документация, написанная с большой любовью к продукту
https://galaxy.ansible.com/
Галактика модулей
https://github.com/whisk/ansible-tutorial
Материалы этой презентации
20
Спасибо за внимание!

Mais conteúdo relacionado

Mais procurados

Ansible Automation to Rule Them All
Ansible Automation to Rule Them AllAnsible Automation to Rule Them All
Ansible Automation to Rule Them AllTim Fairweather
 
Ansible, best practices
Ansible, best practicesAnsible, best practices
Ansible, best practicesBas Meijer
 
Network Automation with Ansible
Network Automation with AnsibleNetwork Automation with Ansible
Network Automation with AnsibleAnas
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to AnsibleKnoldus Inc.
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentationJohn Lynch
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction Robert Reiz
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to AnsibleCoreStack
 
Ansible Tutorial.pdf
Ansible Tutorial.pdfAnsible Tutorial.pdf
Ansible Tutorial.pdfNigussMehari4
 
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육Ji-Woong Choi
 
Red hat ansible automation technical deck
Red hat ansible automation technical deckRed hat ansible automation technical deck
Red hat ansible automation technical deckJuraj Hantak
 

Mais procurados (20)

Ansible - Introduction
Ansible - IntroductionAnsible - Introduction
Ansible - Introduction
 
Ansible
AnsibleAnsible
Ansible
 
Ansible Automation to Rule Them All
Ansible Automation to Rule Them AllAnsible Automation to Rule Them All
Ansible Automation to Rule Them All
 
Accelerating with Ansible
Accelerating with AnsibleAccelerating with Ansible
Accelerating with Ansible
 
Ansible 101
Ansible 101Ansible 101
Ansible 101
 
Ansible, best practices
Ansible, best practicesAnsible, best practices
Ansible, best practices
 
Network Automation with Ansible
Network Automation with AnsibleNetwork Automation with Ansible
Network Automation with Ansible
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to Ansible
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction
 
Ansible
AnsibleAnsible
Ansible
 
ansible why ?
ansible why ?ansible why ?
ansible why ?
 
Ansible Playbook
Ansible PlaybookAnsible Playbook
Ansible Playbook
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to Ansible
 
Ansible Tutorial.pdf
Ansible Tutorial.pdfAnsible Tutorial.pdf
Ansible Tutorial.pdf
 
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
 
Red hat ansible automation technical deck
Red hat ansible automation technical deckRed hat ansible automation technical deck
Red hat ansible automation technical deck
 
Ansible get started
Ansible get startedAnsible get started
Ansible get started
 
Ansible
AnsibleAnsible
Ansible
 
Demystfying container-networking
Demystfying container-networkingDemystfying container-networking
Demystfying container-networking
 

Semelhante a Применяем Ansible

От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к AnsibleIvan Grishaev
 
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 2014Alex Chistyakov
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктуройdddpaul
 
RHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и DockerRHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и DockerAndrey Markelov
 
Зачем программистам Ansible
Зачем программистам AnsibleЗачем программистам Ansible
Зачем программистам AnsibleDenis Honig
 
Application deployment & configuration management
Application deployment & configuration managementApplication deployment & configuration management
Application deployment & configuration managementAlexander Kirillov
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practiceAlexey Lesovsky
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Nikita Borzykh
 
Machine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий ЛапинMachine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий ЛапинIT61
 
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
 
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Dev_Party
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
Как приручить проектное окружение. PHP UG Minsk, июнь'2014
Как приручить проектное окружение. PHP UG Minsk, июнь'2014Как приручить проектное окружение. PHP UG Minsk, июнь'2014
Как приручить проектное окружение. PHP UG Minsk, июнь'2014kamazee
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...IT-Portfolio
 

Semelhante a Применяем Ansible (20)

Rpm5
Rpm5Rpm5
Rpm5
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 
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
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
RHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и DockerRHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и Docker
 
Зачем программистам Ansible
Зачем программистам AnsibleЗачем программистам Ansible
Зачем программистам Ansible
 
Application deployment & configuration management
Application deployment & configuration managementApplication deployment & configuration management
Application deployment & configuration management
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practice
 
Dev collaboration
Dev collaborationDev collaboration
Dev collaboration
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Node.js (RichClient)
 Node.js (RichClient) Node.js (RichClient)
Node.js (RichClient)
 
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.
 
Machine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий ЛапинMachine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий Лапин
 
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.
 
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
 
Vagrant puppet
Vagrant puppetVagrant puppet
Vagrant puppet
 
Кратко о Linux
Кратко о LinuxКратко о Linux
Кратко о Linux
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
Как приручить проектное окружение. PHP UG Minsk, июнь'2014
Как приручить проектное окружение. PHP UG Minsk, июнь'2014Как приручить проектное окружение. PHP UG Minsk, июнь'2014
Как приручить проектное окружение. PHP UG Minsk, июнь'2014
 
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
16 декабря, DEV {highload} - конференция о Highload веб-разработке, "Эксплуат...
 

Применяем Ansible

  • 2. Что такое Ansible? ● Ansible — система управления конфигурацией ● Применима для ОС Linux/Unix и Windows ● Бесплатная и open source, лицензия GNU GPL ● “Консольно-ориентированная” (command-line interface) ● Модульная архитектура ● Поддержка сторонних модулей (Ansible Galaxy) ● Коммерческий вариант — Ansible Tower (WebUI, Dashboard etc.) ● Разработчик — Ansible Inc./Red Hat Inc. 2
  • 4. Ansible и Puppet — сравнение Ansible Императивный стиль (задачи playbooks) Push по команде контроллера Централизованная Центр: машина инженера (контроллер) Язык: YAML В основе: SSH и Python Puppet Декларативный стиль (описание в manifests) Pull периодически (агенты) Централизованная Центр: выделенный сервер Язык: Puppet DSL В основе: HTTPS и Ruby 4
  • 5. На контроллере: ● Установка Ansible: http://docs.ansible.com/ansible/intro_installation.html ● Текстовый редактор и командная строка :) На серверах: ● установка Ansible не требуется ● должен быть установлен python2.7 (для Ubuntu 16: apt-get install python-minimal) ● должен быть настроен доступ по SSH с контроллера Установка 5
  • 6. provision.sh #!/bin/bash for host in 192.168.56.211 192.168.56.212; do ssh root@$host "apt-get update && -y install ntp nginx" scp nginx_site.conf root@$host:/etc/nginx/sites-enabled/ ssh root@$host "service nginx reload" rsync … end 6
  • 7. От shell scripting к Ansible ● Начнем с создания файла inventory (список хостов): [webservers] web1 ansible_host=192.168.56.201 web2 ansible_host=192.168.56.202 ● Выполним ad-hoc задачу: > ansible -i inventory -u root -m shell -a "apt-get install -y ntp" webservers ● Далее: организуем задачи в playbooks 7
  • 8. Playbooks ● Последовательности команд организуются в playbooks (пьесы) ● Для описания используется нотация YAML ● Playbook содержит не только задачи (tasks), но также может содержать: ○ hosts — шаблон серверов, к которым применяется playbooks ○ vars — переменные ○ handlers — обработчики ○ и др. директивы ● Задачи в playbook выполняются строго последовательно 8
  • 9. playbook.yml - hosts: all user: root tasks: - apt: update_cache=yes - apt: name=ntp - apt: name=nginx - apt: name=git - copy: src: files/nginx_site.conf dest: /etc/nginx/sites-enabled/ - file: path=/var/www/ansible-site state=directory - git: repo: https://github.com/whisk/ansible-tutorial dest: /root/ansible-tutorial depth: 1 - shell: rsync -ru --del /root/ansible-tutorial/www/ /var/www/ansible/ - service: name=nginx state=restarted enabled=yes 9 Устанавливаем пакеты Клонируем git repo Копируем конфиг
  • 10. Advanced Playbooks ● Циклы (with_items, with_nested, with_file, with_fileglob etc.) ● Тэги ● Блоки (block) ● Includes ● Условия (when) ● Handlers 10
  • 11. playbook-advanced.yml - hosts: all user: root tasks: - name: install packages update_cache=yes cache_valid_time=86400 apt: name={{item}} with_items: [ntp, nginx, git] tags: packages - copy: src: files/nginx_site.conf dest: /etc/nginx/sites-enabled/ notify: restart nginx - include: deploy-site.yml tags: deploy handlers: - name: restart nginx service: name=nginx state=restarted 11 Организуем цикл по with_items Отдельный playbook для code reuse nginx нужно перезапустить Обработчик сообщения
  • 12. Шаблоны ● Используется шаблонизатор Jinja2: http://jinja.pocoo.org/ ● Разрабатывался как шаблонизатор для веб-страниц, поэтому возможностей для создания файлов конфигурации более чем достаточно ● Ansible добавляет еще фильтры — выражения типа: {{ var | default('5') }} {{ data | to_json }} {{ str | regex_replace('^a', 'b') }} ● Преобразование шаблонов в документы происходит на контроллере ● Большинство фильтров из Jinja2 доступно в playbooks! 12
  • 13. nginx.conf worker_processes {{cpus}}; .... {% for item in sites %} server { listen {{http_port}}; server_name {{item.name}}; root {{item.dir}}; ... } {% endfor %} 13 [webservers] web1 ansible_host=192.168.56.211 cpus=4 web2 ansible_host=192.168.56.212 cpus=8 [all:vars] http_port=8080 inventory
  • 14. playbook.yml - hosts: all vars: sites: - name: foo.com dir: /var/www/foo_com - name: bar.com dir: /var/www/bar_com - name: foobar.com dir: /var/www/foobar_com tasks: - template: src: templates/nginx.conf dest: /etc/nginx/ - file: name={{item.dir}} state=directory with_items: "{{sites}}" 14 Переменные, общие для всех серверов
  • 15. Переменные и факты ● Переменные: определены вами на контроллере ● Факты: определены узлами (автоматически или вручную) ● Переменные/факты можно использовать в playbooks и шаблонах ● Более 20 (!) мест определения переменных/фактов ● Неопределенная переменная — ошибка выполнения (к счастью) ● Типичные места задания: inventory, playbooks, роли, параметры CLI 15
  • 16. Пример: Multistage ● Три окружения: production, staging и dev ● Создаем отдельный inventory для каждого окружения ○ Переменные окружения задаются в inventory ○ Сервера также перечисляются в inventory ● Остальные переменные задаем в playbook ● Все файлы, кроме файлов inventory, общие для всех окружений Такой подход позволяет получать идентичную конфигурацию на разных группах серверов, при этом оставляя возможность вносить необходимые 16
  • 17. Роли ● Удобная возможность группировать сервера по назначению/функциям ● Один сервер может иметь несколько ролей и такой подход позволяет: ○ Не порождать случайных кросс-зависимостей ○ Легко "расщеплять" или комбинировать сервер при масштабировании ● Всем серверам может быть прописана "базовая" роль, которая реализует ваши любимые настройки ● Роли легче повторно использовать (в других проектах и т.п.) 17
  • 18. Некоторые практики ● Пишите все playbooks так, что их можно применить много раз подряд, и это не приведет к ошибкам/побочным эффектам (идемпотентность) ● Используйте -C (--check) и -D (--diff) для проверки вносимых изменений в файлы без реального применения этих изменений: > ansible-playbook -C -D playbook.yml ● Используйте фильтры по тэгам и именам для выполнения конкретных задач на конкретных серверах: > ansible-playbook -t packages -l web1 playbook.yml ● Старайтесь не усложнять иерархию переменных без необходимости ● Используйте систему контроля версий для хранения конфигурации 18
  • 19. Сильные стороны Ansible ● Простая "императивная" идеология ● Низкий порог входа для автоматизации массовых действий ● Provisioning (ввод в работу) серверов ● Выкатка кода ○ особенно если ваша "экосистема" не имеет готовых инструментов или они относительно тяжелые ○ встроенная поддержка rolling updates ● Continuous Integration ○ легко вызвать ansible в git hook 19
  • 20. Материалы по теме http://docs.ansible.com/ansible/ Отличная документация, написанная с большой любовью к продукту https://galaxy.ansible.com/ Галактика модулей https://github.com/whisk/ansible-tutorial Материалы этой презентации 20