Базовая настройка Ansible и SSH-ключей

Ansible Docs

Базовая настройка Ansible

Развертывание управляющего узла (Control Node) и настройка доступа к управляемым серверам (Managed Nodes) без пароля.

1. Подготовка управляемых и управляющего узла

На управляемых узлах (Клиенты)

Для работы Ansible на клиентах не нужно ставить агентов, достаточно включенного SSH-сервера. Убедитесь, что он работает на всех машинах, которыми вы планируете управлять:

Copy

systemctl enable --now sshd

На управляющем сервере (Control Node)

Установите сам пакет Ansible на главную машину:

Copy

apt-get update && apt-get install -y ansible

2. Настройка беcпарольного доступа (SSH Ключи)

Сгенерируйте пару SSH-ключей на управляющем сервере (нажимайте Enter, оставляя все параметры по умолчанию, парольную фразу (passphrase) вводить не нужно):

Copy

ssh-keygen

Скопируйте публичный ключ на все управляемые машины. Если сервер использует стандартный порт 22:

Copy

ssh-copy-id имя_пользователя@имя_управляемого_узла
ssh-copy-id имя_пользователя@другой_узел

Если на сервере настроен нестандартный SSH-порт (например, порт 2026), используйте флаг -p:

Copy

ssh-copy-id -p кастомный_порт имя_пользователя@специальный_сервер

При первом подключении система попросит вас подтвердить fingerprint (введите yes) и запросит пароль от удаленного пользователя. Больше пароль не потребуется.

3. Настройка списка серверов (Inventory)

Ansible должен знать, какими машинами он управляет. Откройте файл инвентаризации:

Copy

vim /etc/ansible/hosts

Заполните файл. Секция [all:vars] содержит глобальные переменные для всех машин (мы явно указываем путь к Python 3, чтобы избежать системных предупреждений интерпретатора). Далее создаем группы хостов и указываем параметры подключения:

Copy

[all:vars]
ansible_python_interpreter=/usr/bin/python3

[ваша_группа_серверов]
# Настоятельно рекомендуется использовать DNS-имена серверов вместо IP-адресов
# Синтаксис: имя_узла ansible_user=пользователь ansible_port=порт(если не 22)

маршрутизатор_1    ansible_user=admin_пользователь
маршрутизатор_2    ansible_user=admin_пользователь
клиентский_пк      ansible_user=обычный_пользователь
сервер_с_кастом_ssh ansible_port=кастомный_порт ansible_user=специальный_пользователь

4. Основная конфигурация Ansible

Чтобы Ansible по умолчанию использовал наш файл инвентаризации, его нужно прописать в главном конфигурационном файле:

Copy

vim /etc/ansible/ansible.cfg

Найдите (или создайте) блок [defaults] и укажите путь inventory:

Copy

[defaults]
inventory = /etc/ansible/hosts

5. Проверка связи

На управляющем сервере выполните команду пинга всех узлов. Модуль ping в Ansible — это не ICMP-пинг, а проверка возможности подключиться по SSH и выполнить скрипт Python.

Copy

ansible all -m ping

В случае успеха вы должны увидеть зеленый вывод со статусом "ping": "pong" от каждого узла.