====== Базовая настройка Ansible и SSH-ключей ======
===== Ansible Docs =====
[[#prep|1. Подготовка]] [[#keys|2. SSH Ключи]] [[#inventory|3. Файл Inventory]] [[#config|4. Конфигурация]] [[#test|5. Проверка связи]]
====== Базовая настройка 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"%%'' от каждого узла.