Ansible — это программное решение для удаленного управления конфигурациями. Оно позволяет настраивать удаленные машины. Главное его отличие от других подобных систем в том, что Ansible использует существующую инфраструктуру SSH, в то время как другие (chef, puppet, и пр.) требуют установки специального PKI (Public Key Infrastructure, инфраструктура открытых ключей) -окружения.
Ansible написана на языке программирования Python, с использованием декларативного языка разметки для описания конфигураций. Используется для автоматизации настройки и развертывания программного обеспечения. Обычно используется для управления Linux-узлами, но Windows также поддерживается.
Компания Ansible, Inc осуществляла коммерческую поддержку и сопровождение Ansible. 16 октября 2015 года Red Hat, Inc объявила о поглощении Ansible, Inc.
Ansible, скорее всего, подойдет командам, которым требуется программное обеспечение для автоматизации ИТ, способное работать со сложными облачными средами, или которым необходимо упростить настройку, выделение ресурсов и аналогичные задачи. Jenkins, напротив, является отличным инструментом CI/CD, который можно значительно расширить с помощью правильных плагинов.
У вас предварительно должен быть установлен Python лучше версии 3, хотя и с 2.7 должен работать.
В Ubuntu 22, просто введите команду:
apt install ansible
В более ранних версиях Ubuntu, возможно придется подключить репозиторий:
sudo apt-add-repository ppa:ansible/ansible
Послу установки у меня получилась такая версия:
# ansible --version ansible 2.10.8 config file = None configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3/dist-packages/ansible executable location = /usr/bin/ansible python version = 3.10.4 (main, Jun 29 2022, 12:14:53) [GCC 11.2.0]
Исполняемый файл ansible служит для выполнения одноразовых однозадачных операций, а ansible-playbook исполняемый файл, предназначенный для обработки плейбуков (планов) по координации большого числа задач.
Получим список хостов, для работы ansible. Данная команда по умолчанию берёт данные из файла - /etc/ansible/hosts.
ansible all --list-hosts
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
hosts (0):
Создадим новый файл hosts.ini в папке ansible. С IP-адресом server-а.
192.168.13.13 Команде задаём ключ -i (INVENTORY) и путь, по которому нужно взять новый файл с хостами.
ansible all --list-hosts -i ./ansible/hosts.ini hosts (1): 192.168.13.13
Попробуем теперь выполнить простую команду ping на хостах.
ansible all -i hosts.ini -m ping 192.168.13.13 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: Warning: Permanently added '192.168.13.13' (ECDSA) to the list of known hosts.\r\nvagrant@192.168.13.13: Permission denied (publickey,keyboard-interactive).", "unreachable": true }
Просит ввода пароля. Чтобы решить данную ошибку, добавляем –ask-pass который спросит пароль.
ansible all -i hosts.ini -m ping --ask-pass SSH password: 192.168.13.13 | FAILED! => { "msg": "to use the 'ssh' connection type with passwords, you must install the sshpass program" }
Нельзя использовать пароли без установки sshpass. Установим.
sudo apt install sshpass
Пробуем снова.
ansible all -i hosts.ini -m ping --ask-pass SSH password: 192.168.13.13 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" }
Добавим в файл hosts.ini параметры доступа к серверу (user\password), чтобы мы могли больше не вводить пароль при выполнении плейбука.
192.168.13.13 ansible_user=vagrant ansible_password=vagrant
Убираем ключ –ask-pass и пробуем.
ansible all -i hosts.ini -m ping 192.168.13.13 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" }
Все работает, мы получили строку "ping": "pong".
Установим LEMP при помощи ansible. Документация по модулям ansible, например ansible.builtin.apt.
Ansible galaxy - это каталог с популярными ролями.
Добавим в ansible модуль поддержки mysql
ansible-galaxy collection install community.mysql
Скачать готовый плейбук ansible для установки LEMP playbook_lemp.yml.zip