Ansible

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 минуты:

Есть такой плейбук, в котором есть несколько Roles:
Каждая отвечает за - установку mysql, nginx, php-form, wordpress

 И основной файл, в котором прописываются какие роли использовать, где и т.д. : 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 уже стоит, то и переустанавливаться он не будет.

Картинка как пример. При запуске, идет проверка на схожесть системы с требуемой конфигурацией (Описанной в Playbook).



Report Page