Ansible для Ubuntu 24.04
Как установить и настроить Ansible на Ubuntu 24.04
Ansible — это система управления конфигурациями, написанная на Python. Она позволяет автоматизировать настройку и развертывание программного обеспечения на VPS и выделенных серверах. С помощью Ansible можно управлять приложениями, конфигурациями и инфраструктурой без необходимости вручную выполнять действия на каждом хосте.
Ansible — инструмент с открытым исходным кодом, используемый для управления программным обеспечением, конфигурациями и развертыванием приложений на множестве хостов.
Установка
Сначала обновите индекс пакетов:
sudo apt update
Установите пакет software-properties-common
, который упрощает управление сторонними репозиториями:
sudo apt install software-properties-common
Добавьте репозиторий Ansible PPA:
sudo apt-add-repository ppa:ansible/ansible
Для подтверждения нажмите Enter.
Обновите индекс пакетов и установите Ansible:
sudo apt update
sudo apt install ansible
После этого на сервере будет установлено необходимое программное обеспечение для администрирования ваших хостов.
Настройка доступа к хостам по SSH
Создайте SSH-ключ для подключения к хостам:
ssh-keygen -t rsa -b 4096
Отобразите открытый ключ SSH на сервере Ansible:
cat ~/.ssh/id_rsa.pub
Пример вывода:
root@kvmde67:~# ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Zvr1I9IfDK3wCK9K5h5KtWBtC0R2ppUtgQOB/fikhNE root@kvmde67.fornex.org
The key's randomart image is:
+---[RSA 4096]----+
|+=o.=+ |
|ooE=o . |
| oo+ . |
|..o.o . |
| .+++ . S . . |
| ..=.o * + + |
| . * . o.+ o |
| . = . o..o... |
| ..+.. .. oo. |
+----[SHA256]-----+
root@kvmde67:~# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQClTC6YhDZdHhiTj2UjDdOv5gpJufT0YKF6tnE1YwIFRrROBH8+hG7hyNlRtc7c5NGTp7fXXoVhnFRFe+thN/4ZDJ/1A44Pe91NldOBVovMlulk9RsRQqvLX8sZXLzY17i+2DINVF3aoOh6o3QEHrk3Axh+qz5DUYvJ70wM6GM40szUBf0wpA1GwoUaOmT4oZVDN6xRT05k++DGcik/EgwWy8hWK8hW8fmg5kXiWSvslLM8i/URaFFtTiFrna1NB75Rbl9brMLc3xMwUzqXRnohRBGbP/M7Js7HoaiS3yHqxIeo2JPVfdmxwpdCB2y14FTG0GU7gTeEOg6BUYNsSlU6IKv593RIGZ9hyPGnDiTZd3jgaOdOoYTKiHWj23zlrqqwSWbNQ== root@kvmde67.fornex.org
Скопируйте ключ на каждый хост, который будет обслуживаться Ansible:
ssh-copy-id user_name@ip-address
Пример:
ssh-copy-id root@5.187.2.32
Откройте файл конфигурации Ansible:
sudo nano /etc/ansible/hosts
Определите группу [group_name]
с серверами:
[group_name]
server1 ansible_host=your_server_ip_1
server2 ansible_host=your_server_ip_2
[group_name:vars]
ansible_python_interpreter=/usr/bin/python3
Примечание
Замените IP-адреса на реальные IP ваших хостов.
Примечание
Подгруппа [group_name:vars]
задаёт параметр ansible_python_interpreter
для всех хостов группы, чтобы использовать Python 3 (/usr/bin/python3
) вместо Python 2.7 (/usr/bin/python
).
Пример:
[servers]
server1 ansible_host=5.187.2.32
server2 ansible_host=5.187.5.236
[servers:vars]
ansible_python_interpreter=/usr/bin/python3
Сохраните изменения и закройте файл (CTRL + X, Y, Enter).
Внимание
На каждом хосте должен быть установлен Python и пакет python-apt
:
apt-get install python python-apt
Проверка подключения
По умолчанию Ansible подключается к удалённым хостам от имени пользователя root. Если используется другой пользователь, нужно выполнить дополнительные настройки.
Создайте каталог для файлов YAML каждой группы:
sudo mkdir /etc/ansible/group_vars
Создайте подкаталог с названием вашей группы:
sudo nano /etc/ansible/group_vars/group_name
Например:
sudo nano /etc/ansible/group_vars/servers
Укажите имя пользователя для подключения:
---
ansible_user: user_name
Сохраните изменения.
Примечание
Можно настроить отдельные хосты, создав файлы с их псевдонимами в каталоге /etc/ansible/host_vars
.
Для проверки подключения выполните команду ping:
ansible -m ping all
Пример результата:
server1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"changed": false,
"ping": "pong"
}