Ansible
t.me/dev_playbookДля чего нужен:
Система конфигурации, кратко - массовое управление хостами\серверами на Linux\MacOS\Windows (в Теории)
Используется язык описания YAML
Схема работы:
Есть сервер, на котором стоит Ansible
На хостах, должен уже стоять ssh-ключ от сервера Ansible, т.к. все действия идут через ssh.
Благодаря этому, на хостах не нужно ставить никаких агентов, приложений и т.д.
Основные понятия:
Tasks: список заданий
Hosts: список, у кого все задания будут выполняться
Playbook: некая книга заданий. Вместо того, чтобы указывать кучу Tasks, проще их объединить в один Playbook
Roles: роли в Playbook. Например, нужно поставить Jenkins сразу на 100 компьютерах. но запустить его только на 30
Создается Playbook, в котором указывается 2 роли - установка Jenkins, запуск веб-сервера Jenkins.
И уже под Roles указывается нужный файл Hosts.
Пример Playbook'a:
Поднимем Wordpress CRM хоть на 100 компьютеров одновременно за 2 минуты:
И основной файл, в котором прописываются какие роли использовать, где и т.д. : site.yml
---
- name: Install WordPress, MySQL, Nginx, and PHP-FPM
hosts: all
remote_user: root
roles:
- common
- mysql
- nginx
- php-fpm
- wordpress
И файлик hosts где прописано - кто есть кто, в каких группах и т.д.
[wordpress-server]
webserver2
[home-servers]
#можно просто указать сервер, его IP
192.168.0.10
#можно присвоить имя, указать пользователя и его пароль
debi ansible_host=192.168.0.20 ansible_user=debiuser ansible_pass=password123
И чтобы запустить всю эту магию, нужно вбить:
ansible-playbook site.yml
Соответственно, если Nginx уже стоит, то и переустанавливаться он не будет.