Вебинар на тему знакомство с ansible. популярные практики...
TRANSCRIPT
![Page 1: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/1.jpg)
Devops.Events
Вебинар на тему:Знакомство с Ansible.
Популярные практики и ошибки
Спикер: Павел Егоров - DevOps инженер в DataRobot
![Page 2: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/2.jpg)
Кто я?
Павел Егоров
• DevOps инженер• приверженец автоматизации• люблю Ansible• люблю когда работа делает
себя сама
Devops.Events
![Page 3: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/3.jpg)
Плюсы и минусы Ansible
Плюсы:• простота• SSH• модульность• agentless• open source
Минусы:• agentless• ручная работа• нет контроля
Devops.Events
![Page 4: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/4.jpg)
Из чего состоит Ansible?
• плейбуки• роли• инвентари• групповые переменные• переменные хостов
Devops.Events
![Page 5: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/5.jpg)
Playbook
---
- name: "Install LAMP server" hosts: lamp user: ubuntu gather_facts: true vars_files: - ../vars/lamp.yml roles: - role: apache tags: webserver
- role: mysql tags: database
- role: php tags: php
Devops.Events
![Page 6: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/6.jpg)
Role
• defaults• handlers• meta• tasks• templates• files
Devops.Events
![Page 7: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/7.jpg)
Role: defaults
Хранит переменные по-умолчанию
---
apache_log_path: /mnt/logs/apacheapache_data_path: /mnt/apache/dataapache_port: 8080
Devops.Events
![Page 8: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/8.jpg)
Role: handlers
Хранит обработчики
---
- name: "Restart Apache" sudo: yes service: name: apache state: restarted
Devops.Events
![Page 9: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/9.jpg)
Role: meta
Хранит зависимости от других ролей
---
dependencies: - { role: java } - { role: basic }
Devops.Events
![Page 10: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/10.jpg)
Role: tasks
Делает всю работу---
- name: "Install Apache" sudo: yes apt: name: apache state: present update_cache: yes
- name: "Configure Apache" template: src: apache.conf.j2
Devops.Events
![Page 11: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/11.jpg)
Role: templates
Хранит шаблоны создаваемых файловListen {{ apache_port }}<VirtualHost *:{{ apache_port }}> DocumentRoot "{{ apache_site_data }}" ServerName {{ site_name }}
# Other directives here</VirtualHost>
Devops.Events
![Page 12: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/12.jpg)
Inventory
Хранит группы серверов[lamp]10.20.30.40
[elasticsearch-cluster-1]10.20.40.4110.20.40.4210.20.40.43
Devops.Events
![Page 13: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/13.jpg)
Group/Host vars
Group vars - для групп хостов
Host vars - для отдельных хостов
Devops.Events
![Page 14: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/14.jpg)
Patterns & Anti-patterns
Devops.Events
![Page 15: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/15.jpg)
Anti-pattern: Писать все задачи в плейбук без разбивки на роли
- name: "Install LAMP server" hosts: lamp user: ubuntu gather_facts: true vars_files: - ../vars/lamp.yml tasks: - name: "install apache" ... - name: "configure mysql" ... - name: "install php" ... - name: "install mysql" ... - name: "kill Sarah Connor"
Devops.Events
![Page 16: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/16.jpg)
Pattern:
Использовать в плейбуке роли и теги, делать его модульным
- name: "Install LAMP server" hosts: lamp user: ubuntu gather_facts: true vars_files: - ../vars/lamp.yml roles: - role: apache tags: webserver
- role: mysql tags: database
Devops.Events
![Page 17: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/17.jpg)
Anti-pattern:
Описывать задачи в одну строку:
Devops.Events
- lineinfile: dest=/opt/jboss-as/bin/standalone.conf regexp='^(.*)Xms(\d+)m(.*)$' line='\1Xms${xms}m\3' ba
Такая строка даже не поместилась в слайд, как видите
![Page 18: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/18.jpg)
Pattern:
При описании задачи записывать каждый параметр в отдельную строку
- lineinfile:
dest: /opt/jboss-as/bin/standalone.conf
regexp: '^(.*)Xms(\d+)m(.*)$'
line: '\1Xms${xms}m\3'
backrefs: yes
Devops.Events
![Page 19: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/19.jpg)
Anti-pattern:
Использовать один inventory файл для всей инфраструктуры
Devops.Events
![Page 20: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/20.jpg)
Pattern:Создавать отдельные файлы инвентаря для различных окружений и частей системы:
Devops.Events
![Page 21: Вебинар на тему знакомство с Ansible. популярные практики и ошибки](https://reader036.vdocuments.mx/reader036/viewer/2022062316/58897eb11a28ab461b8b543f/html5/thumbnails/21.jpg)
Ansible-lint и код-ревью
• Ansible-linthttps://github.com/willthames/ansible-lint• Yaml-lint
https://github.com/Pryz/yaml-lint
Devops.Events