Ansible - управляем сразу всем.

Runinterface

Green Team
24.10.2016
51
41
BIT
0
Доброго времени суток %username%.
Хотел рассказать о таком ПО как ansible. Ansible является отличным инструментом, для управления одного или нескольких серверов или выполнять на них определенных действий.
В примере у нас будет мой десктоп
PC1 = 192.168.1.1
И виртуальная машина, исполняющая роль "сервера".
VM1 = 192.168.1.2
Поехали:
1. Установка и первоначальная настройка:
1.1 Можно установить из репозитория вашей системы если есть:
sudo apt-get install ansible
1.2 По умолчанию ansible создает файлы конфигурации и файлы для исполнения в /etc/ansible
но вы можете разместить файлы исполнения где вам удобно.
1.3 cd /etc/ansible && ls -la
ansible.cfg - основной конфигурационный файл ansible.
hosts - файл в котором мы описываем хосты к которым мы будем подключаться (ansible ипользует ssh).
1.4 vim /etc/asnible/hosts
Там имеется закоментированное описание того как создавать хосты.
#[ ] в таких скобках указывается группа хостов.
# далее идут сами хосты ИМЯ ansible_....параметры.
Код:
        [VM]
        VM1 ansible_ssh_host=192.168.1.2 ansible_ssh_password=$SSHPASS ansible_sudo_pass=$SSHPASS
#Если у вас в /etc/hosts или в ~/.ssh/config не прописаны значения для VM1 то указываем их тут в файле hosts.
#$SSHPASS познакомьтесь это переменная окружения документация ansible не советует держать пароль а открытом виде в целях безопасности, но вы можете это делать.
#Заводим переменную окружения export SSHPASS=yourpassw0rd, так же можно использовать ssh ключи параметр: ansible_ssh_private_key_file=/path/to/file.
#Так как нам понадобится исполнять комманды от привелигированного пользователя, то нужно разрешить sudo без пароля на сервере, либо указать ansible_sudo_pass=$SSHPASS как это сделал я.
##Как делается sudo без пароля: vim /etc/sudoers.d/username с содержимым username ALL=(ALL:ALL) NOPASSWD:ALL

2. Playbook и как это работает:
Playbook`s пишется в формате .yml с соответствующему убогости синтаксиса YAML.
Напишем простенький "плейбук" vim test.yml (в YAML запрещена табуляция, только пробелы)
Код:
  - hosts: VM1
        tasks:
        - name: LISTDIR
          command: ls -la
2.1 Стартуем:
ansible-playbook test.yml
1.png
3. Заключение:
Возможности Ansible безграничны, он имеет огромное количество модулей для выполнения каких то определенных задач, но никто не отменял обычный shell. Всего что есть в Ansible не расскажешь и не покажешь, настолько много всего. Я взял этот инструмент на вооружение, и избавился от рутины добавлений пользователей на сервере, теперь задачи которые занимали 10 минут, могут занимать до минуты и выполнены они будет одно-двумя командами. Особенно подойдет тем у кого есть пул серверов, более 10.
По мимо чего то простого как в моем примере, так же можно реализовать что-то по сложнее:
Автоматизация процесса деплоев.
Автоматизация процесса разворачивания окружений, притом любых.
И т.д....
За дополнительной информацией если вам таковая интересна можете посетить официальную документацию:

Playbook:
Modules:
YAML:

Всем спасибо.
Добро пожаловать в мир, где вы сделали все, что бы ничего не делать.
 
  • Нравится
Реакции: Valet и Vertigo
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!