# Установка и настройка Ansible на VPS под управлением Ubuntu

Ansible — универсальный инструмент для удалённого управления сервером. Он позволяет выполнять на удалённом сервере не только отдельные команды, но и целые последовательности действий, записанные в плейбук.

В этой инструкции мы рассмотрим установку Ansible на VPS под управлением Ubuntu и подключение к одному из удалённых серверов.

Для начала работы нам понадобится только предварительно настроенный сервер с Ubuntu.

# Установка Ansible

Устанавливается Ansible с помощью стандартного менеджера apt:

sudo apt update

sudo apt install ansible

Сам процесс установки происходит автоматически и не должен вызывать проблем или ошибок в работе.

После установки Ansible установим дополнительный пакет, который поможет подключаться к хостам по SSH:

sudo apt install sshpass

# Настройка Ansible

Основной управляющей частью Ansible является файл содержания, в котором хранится информация обо всех хостах, которыми можно управлять при помощи Ansible. Откроем его, чтобы подключить к Ansible несколько внешних хостов.

sudo vim /etc/ansible/hosts

В открывшемся текстовом файле будут закомментированы все строки. В этих строках представлены примеры оформления блоков для работы с хостами. Их можно использовать в качестве референсов для дальнейшей работы с файлом.

Добавим в этот файл один из наших серверов, чтобы протестировать работу Ansible. Для этого добавим в конец файла текстовый блок:

[servers]
server1 ansible_host=123.456.123.456

Здесь мы добавили один хост с IP-адресом 123,456,123,456. Чтобы проверить правильность указания и посмотреть весь список хостов с указанными адресами, можно выполнить следующую команду:

ansible-inventory --list -y

Результат выдачи в нашем случае будет следующим:

#Output

all:
  children:
    servers:
      hosts:
        server2:
          ansible_connection: ssh
          ansible_host: 123.456.123.456

Теперь добавим ещё один блок в файл с содержимым. Этот блок будет отвечать за подключение к хостам по SSH. Его нужно добавить после блока [servers]:

[all:vars]
ansible_connection=ssh
ansible_user=user
ansible_ssh_pass=password

Здесь в строке ansible_user мы указываем пользователя, от чьего имени подключаемся к серверу, а в строке ansible_ssh_pass — пароль этого пользователя.

После этого можно произвести стандартную проверку — запустить пинг всех серверов, указанных в блоке [servers]:

ansible all -m ping -u user

Если всё правильно и доступ по SSH разрешён, то вывод в нашем случае будет следующим:

#Output

server1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"

Это блок, указывающий на состояние сервера и на состояние связи с ним. Строка ”ping” : “pong” означает, что связь установлена, и сервер готов к удалённому выполнению команд или запуску плейбука.

Попробуем выполнить несколько простых команд на сервере:

ansible all -a "df -h" -u user

Эта команда выведет доступное дисковое пространство на всех подключённых к Ansible хостах:

#Ouput
server1 | CHANGED | rc=0 >>
Filesystem         Size  Used Avail Use% Mounted on
/dev/ploop21245p1   59G  3.2G   54G   6% /
none               4.0G     0  4.0G   0% /sys/fs/cgroup
none               4.0G     0  4.0G   0% /dev
tmpfs              4.0G     0  4.0G   0% /dev/shm
tmpfs              820M  344K  819M   1% /run
tmpfs              5.0M     0  5.0M   0% /run/lock
none               4.0G     0  4.0G   0% /run/shm
tmpfs              820M     0  820M   0% /run/user/1000

А следующая команда выведет в консоль аптайм серверов:

ansible servers -a "uptime" -u user

Готово — мы установили и настроили Ansible, приложение для удалённого управления серверами. В следующей инструкции рассмотрим работу плейбуков в Ansible.