мета-данные страницы
Базовая настройка 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" от каждого узла.