Skip to content

Ansible

Ansible — это инструмент управления конфигурациями, который автоматизирует настройку, развертывание и управление IT-инфраструктурой. Он особенно полезен для системных администраторов и DevOps-инженеров, поскольку позволяет быстро и эффективно изменять конфигурацию большого числа серверов. Ansible - это инструмент infrastructure as a code для автоматизации задач по подготовке и конфигурированию инфраструктуры.

Подготовка сервера

Прежде, чем на сервере мы сможем работать с помощью ansible, нужно

Выдать рут права пользователю ансибл
sudo vim /etc/sudoers.d/ansible
ansibleuser ALL=(ALL) NOPASSWD: ALL
Создать пользователя ansible и добавить в группу sudo
sudo adduser ansibleuser
sudo usermod -aG sudo ansibleuser

Скопировать с хостовой машины публичный ключ
ssh-copy-id -i  ~/.ssh/id_rsa.pub ansibleuser@192.168.1.69

Модули

Предпочтительно использовать специальные модули представленные на странгице

Посмотреть список модулей не входящих в стандартные Ansible core
ansible-galaxy collection list

Ad-Hoc

Ad-Hoc команды, можно запускать сразу из командной строки, используя различные модули и опции так, как если бы они были написаны в playbook. Явное отличие в том, что таким образом можно быстро что-то протестировать или проверить используя например тот же модуль пинг или если хочется на всех серверах выполнить какую-то диагностическую команду по типу ps auxf

Playbook

Записывается в формате YAML и чаще всего с расширением yml Правилами хорошего тона, придерживаться использования модулей ansible вместо shell команд, тогда как в таком случаи будет гарантированна индемпотентность.

Role

По своей сути некое продолжение Playbook, где взят например конкретный сценарий, например подготовка linux сервера, под какие-либо общепринятые стандарты, установка пакетов секретов и чего либо ещё и в конечном счёте превращение этого шаблонного шага в рорль, например подготовка_линукс_сервера.yml Проще всего генерировать роль средствами ansible

Генерация пустой роли
ansible-galaxy init  подготовка_линукс_сервера

Vault

команды
1
2
3
ansible-vault encrypt, decrypt, create, rekey, view
ansible-vault encrypt_string
ansible-playbook playbook_name.yml –ask-vault-pass