Содержание

Ansible — это программное решение для удаленного управления конфигурациями

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, который можно значительно расширить с помощью правильных плагинов.

Установка Ansible

У вас предварительно должен быть установлен 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 исполняемый файл, предназначенный для обработки плейбуков (планов) по координации большого числа задач.

Пишем плейбук: hosts

Получим список хостов, для работы 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

Установим LEMP при помощи ansible. Документация по модулям ansible, например ansible.builtin.apt.

Ansible galaxy - это каталог с популярными ролями.

Добавим в ansible модуль поддержки mysql

ansible-galaxy collection install community.mysql

Скачать готовый плейбук ansible для установки LEMP playbook_lemp.yml.zip

Читайте также