Введение
Ansible — это система управления, позволяющая упростить управление большим количеством серверов одновременно. Этот инструмент позволяет автоматически управлять многими различными системами из одного центрального места.
В этом руководстве мы увидим, как установить и настроить Ansible в Ubuntu 18.04 LTS.
С помощью Ansible вы можете одновременно подключаться через SSH к нескольким удаленным серверам и выполнять все операции, обычно используемые для управления сервером. Любой сервер, которым вы можете управлять через SSH, вы также можете администрировать через Ansible.
Предпосылки
Прежде чем приступить к работе с этим руководством, у вас должно быть:
Пользователь без полномочий root с установленными на вашем сервере привилегиями sudo. Следуйте этому руководству: Первоначальная настройка в Ubuntu 18.04 LTS.
Ключи SSH, сгенерированные для пользователя без полномочий root на вашем сервере Ansible. Выполните первый шаг этого руководства: Как настроить ключи SSH в Ubuntu 18.04.
Два или более серверов Ubuntu 18.04. Один из них будет использоваться как сервер Ansible, а остальные — как хост Ansible. У каждого должен быть пользователь без полномочий root с привилегиями sudo и настроенным базовым брандмауэром.
Установить Ansible
Установите Ansible на компьютер, который вы будете использовать для подключения к своим серверам.
Обновите список пакетов Ubuntu из терминала:
sudo apt update
Установите следующий пакет, чтобы упростить настройку некоторых программ:
sudo apt install software-properties-common
Добавьте репозиторий Ansible:
sudo apt-add-repository ppa:ansible/ansible
Нажмите ENTER при появлении запроса.
Снова обновите список пакетов (в Ubuntu 18.04 они уже должны были обновиться):
sudo apt update
Установите Ansible:
sudo apt install ansible
Настроить SSH-доступ
На сервере Ansible (обычно это локальный компьютер) используйте команду cat, чтобы распечатать содержимое файла открытого ключа SSH пользователя:
cat ~/.ssh/id_rsa.pub
Скопируйте содержимое файла и подключитесь по SSH к одному из серверов, которыми вы хотите управлять с помощью Ansible:
ssh utente@indirizzo_ip
После подключения к серверу создайте каталог ~/.ssh, эта команда создаст каталог, если это необходимо, или ничего не сделает, если он уже существует:
mkdir -p ~/.ssh
Выполните следующую команду, заменив public_key выходным сообщением, полученным от приведенной выше команды cat ~/.ssh/id_rsa.pub:
echo chiave_pubblica >> ~/.ssh/authorized_keys
ПРИМЕР (не используйте этот открытый ключ):
echo AAAAB3NzaC1yc2EAAAADAQABAAABAQDdTV41d4YIf0EqISOryVM4zF2Ucv8ekGtOg6t3RjSJqKfW/XS6n7bzI5yZd3QlvI0M8P+xdUnKxIQpDSkBJaySOmVq1QmmE74iRFvWygsqB3jlEyagnH8h3SKjh5FLTxxUZQxwU351BRCUSxoqLdA30KgrXKOWM/C9lm7dx3DsucV/iGdsv8m2ojwdwwRUFTfWo4PsjJOZ8XX+JciqdTVIbKnPklsosu+8+WvVKiuZYqaq4EMmQXX/wHXAo77FqWg+czDFwexYkFSIC6Lt5p3eS0RVNp4HyU36MmXvHsfIXhkaAJp5Myxd6FdFLcM/5zm52SqAZDnMwIXDr71aArId user@nome >> ~/.ssh/authorized_keys
Обновите индекс пакета сервера:
sudo apt update
Установите Python, необходимый для связи с Ansible:
sudo apt install python
Закройте соединение с сервером, которым вы хотите управлять через Ansible:
exit
Повторите эти шаги для каждого сервера, которым вы хотите управлять с помощью Ansible со своего компьютера.
Настроить Ansible
Откройте файл hosts для настройки Ansible с вашего основного компьютера, чтобы он мог подключаться к ранее настроенным серверам:
sudo nano /etc/ansible/hosts
Задайте имя группы, псевдоним и IP-адрес сервера. Имя группы и псевдоним не имеют ограничений, вы можете ввести все, что предпочитаете.
В этом примере мы вставляем два сервера, которыми мы будем управлять с помощью Ansible.
[primo_gruppo]
Primo ansible_ssh_host=ip_primo
Secondo ansible_ssh_host=ip_secondo
Эти два сервера доступны из Ansible по SSH. Пароль не требуется, если открытый ключ был установлен правильно.
Если вы вошли в систему как пользователь без полномочий root и попытаетесь подключиться к своим серверам с помощью Ansible сейчас, вы получите сообщение об ошибке, так как ключ SSH встроен для пользователя root в удаленных системах, а Ansible по умолчанию попытается подключиться как текущий пользователь, т.е. с пользователем, с которым вы связаны.
На вашем компьютере, на котором у вас установлен Ansible, вы используете пользователя с именем, например, «XXX». Ansible попытается подключиться к каждому серверу с помощью ssh XXX @ip_address. Эта команда не сработает, если на сервере, к которому вы пытаетесь подключиться, нет пользователя с таким именем, в нашем случае «XXX».
Чтобы решить эту проблему, мы можем создать файл для каждой группы, который указывает всем серверам в одной группе подключаться как root.
Создайте папку для групп:
sudo mkdir /etc/ansible/miei_gruppi
Создайте файл для первой группы:
sudo nano /etc/ansible/miei_gruppi/primo_gruppo
Файлы YAML начинаются с ---, поэтому убедитесь, что вы вводите эти символы правильно.
Вставьте следующие строки:
---
ansible_ssh_user: root
Сохраните и закройте файл.
Используйте Ansible
Теперь вы можете использовать Ansible, базовая настройка выполнена.
Несколько примеров использования Ansible.
Пропингуйте все настроенные серверы, набрав:
ansible -m ping all
Вы должны получить выходное сообщение, подобное следующему:
Primo | SUCCESS => {
"changed": false,
"ping": "pong"
}
Secondo | SUCCESS => {
"changed": false,
"ping": "pong"
}
Параметр -m означает «модуль», поэтому в данном случае команда запросила модуль «ping». Параметр all позволяет выбрать все серверы и группы одновременно.
Чтобы указать только одну группу:
ansible -m ping primo_gruppo
Или указать один сервер:
ansible -m ping Primo
Чтобы указать несколько серверов:
ansible -m ping Primo:Secondo
В качестве второго примера использования Ansible мы можем увидеть дисковое пространство на наших серверах:
ansible -m shell -a 'df -h' Primo:Secondo
Установка и настройка Ansible на Ubuntu 18.04 LTS завершена.