Как установить Ansible на Rocky Linux 8
TL;DR
Ansible — лёгкий агентless-инструмент для автоматизации конфигурации и деплоя. В этой инструкции показано, как подготовить Rocky Linux 8, подключить EPEL, установить Ansible через DNF и настроить доступ по SSH к удалённым узлам. В конце — проверка работы и чеклисты для администратора.
Краткое описание Ansible
Ansible — это Open Source-программа для автоматизации развёртывания ПО, управления конфигурациями и оркестрации приложений. Она работает без агентов: использует SSH для подключения к целевым хостам и Python на удалённой стороне для выполнения модулей. Плейбуки Ansible — это декларативные сценарии в YAML, которые описывают состояние системы.
Ключевые термины в одну строку
- Playbook: YAML-файл с задачами и ролями.
- Inventory: список хостов в /etc/ansible/hosts или пользовательский файл.
- Модуль: атомарная операция (копирование файла, установка пакета и т. п.).
Зачем использовать Ansible
- Уменьшает рутинную работу и человеко-часы.
- Не требует установки агентов на целевые серверы.
- Хорошо масштабируется для тысяч узлов при корректной архитектуре.
Важное замечание: Ansible зависит от Python на целевых системах. На современных дистрибутивах Python обычно уже установлен.
Что потребуется
- Сервер с Rocky Linux 8 (пример — Rocky Linux 8.4).
- Доступ с правами root или sudo.
- Сеть между машиной управления и целевыми узлами (SSH, порт 22).
Шаг 1. Обновление системы
Сначала убедитесь, что все пакеты актуальны. В терминале выполните:
sudo dnf update -yОбновление гарантирует, что установщик DNF получит актуальную базу пакетов и разрешит зависимости корректно.
Шаг 2. Настройка репозитория EPEL
EPEL (Extra Packages for Enterprise Linux) содержит дополнительные пакеты, которые отсутствуют в базовом репозитории RHEL/CentOS/Rocky. Ansible в дистрибутивах RHEL-like обычно доступен через EPEL.
Установите репозиторий EPEL:
sudo dnf install epel-release -yОбновите кэш DNF:
sudo dnf makecacheПроверьте, что репозиторий добавлен. Например, можно посмотреть список репозиториев:
sudo dnf repolistЕсли в списке есть epel, значит репозиторий настроен правильно.
Шаг 3. Установка Ansible
После добавления EPEL выполните установку:
sudo dnf -y install ansibleВо время установки вам может быть предложено принять GPG-ключ. Подтвердите нажатием Y и Enter.
Проверка версии Ansible:
ansible --versionЭто вернёт номер версии, путь к конфигурации и используемые модули Python.

Шаг 4. Проверка установки и базовая настройка управления узлами
Теперь настроим удалённый сервер и проверим подключение по SSH.
Подготовка целевого сервера
Ansible использует SSH (порт 22) для связи с целевыми машинами. В примере ниже целевой сервер — Ubuntu 20.04 с IP 137.184.66.179. На вашей инфраструктуре используйте реальные IP или DNS-имена.
Установите SSH-сервер и включите его (пример для Ubuntu):
sudo apt install openssh-serversudo systemctl start sshsudo systemctl enable sshОткройте порт 22 в фаерволе (Ubuntu/ufw):
sudo ufw allow 22Если вы готовите целевой узел на Rocky Linux, вместо ufw обычно используют firewalld. Откройте порт так:
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reloadГенерация и копирование SSH-ключа
Сгенерируйте пару ключей на машине управления (локальной), если её ещё нет:
ssh-keygenНажмите Enter для принятия значений по умолчанию. Затем отправьте публичный ключ на целевой сервер:
ssh-copy-id [email protected]Замените root и IP на соответствующего пользователя и адрес. Если вы используете непривилегированного sudo-пользователя, укажите его.
После этого можно настроить безпарольный sudo на удалённой машине (опционально, но удобно для Ansible):
echo "$(whoami) ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/$(whoami)Важно: предоставление NOPASSWD прав повышает риск, используйте его только в контролируемой среде и по необходимости.

Создание файла inventory
Файл инвентаря по умолчанию находится в /etc/ansible/hosts. Его можно редактировать или создать локальный файл и указывать его через параметр -i.
Откройте стандартный файл:
sudo nano /etc/ansible/hostsПример простого содержимого для группы webservers:
[webservers]
137.184.66.179После редактирования сохраните файл (ctrl+o) и закройте (ctrl+x).

Проверка связи с узлами
Используйте модуль ping, который проверяет доступность и корректность Python на целевом узле:
ansible -m ping allОжидаемый результат — ответ типа “pong” от каждого подключённого узла. Если возникают ошибки, см. раздел Устранение неполадок ниже.
Пример простого плейбука
Ниже пример плейбука, который обновляет пакеты и устанавливает nginx на группе webservers.
---
- hosts: webservers
become: yes
tasks:
- name: Обновить кеш пакетов и обновить систему
ansible.builtin.yum:
name: '*'
state: latest
- name: Установить nginx
ansible.builtin.yum:
name: nginx
state: present
- name: Убедиться, что nginx запущен и включён
ansible.builtin.service:
name: nginx
state: started
enabled: yesЗапуск плейбука:
ansible-playbook -i /etc/ansible/hosts playbook.ymlУстранение неполадок — распространённые ошибки и решения
- “UNREACHABLE” в выводе ansible -m ping:
Проверьте SSH-доступ, корректность ключей и адреса. Попробуйте ssh [email protected] вручную. - “FAILED! => {“msg”: “Failed to connect to the host via ssh”}”:
Убедитесь, что на целевом хосте установлен Python и что SSH-сервис запущен. - Ошибки зависимостей при установке ansible:
Проверьте, что репозиторий EPEL добавлен и кэш DNF обновлён.
Если проблема связана с правами sudo, введите в журнал /var/log/auth.log на целевом узле и проверьте, есть ли ошибки авторизации.
Когда установка может не подойти — исключения и ограничения
- Целевые устройства без SSH или без возможности установить Python (встраиваемые системы) потребуют альтернативных инструментов.
- Для Windows-хостов следует использовать winrm-подключение и соответствующие модули Ansible.
- Если политика безопасности запрещает передачу приватных ключей, настройте централизованный менеджер секретов и объявите его в Ansible Vault.
Альтернативные подходы установки Ansible
- Установка через pip: полезно для пользовательских версий или виртуальных окружений.
- Установка из исходников: если нужна самая свежая (разрабатываемая) версия.
- Использование AWX/Ansible Tower: если необходим веб-интерфейс, RBAC и централизованное управление задачами.
Решение: dnf или pip — простой алгоритм
flowchart TD
A[Нужно установить Ansible?] --> B{Для системного управления на сервере управления}
B -- Да --> C[Используйте dnf + EPEL]
B -- Нет --> D{Нужно изолированное окружение или dev-версия}
D -- Да --> E[Используйте virtualenv + pip]
D -- Нет --> F[Рассмотрите контейнеры или AWX]Чеклист для ролей
- Для администратора:
- Проверить доступ по SSH ко всем узлам.
- Настроить инвентарь и тестовое соединение.
- Настроить бэкап /etc/ansible и ansible.cfg.
- Для DevOps-инженера:
- Подготовить плейбуки и роли.
- Настроить CI/CD интеграцию для запуска плейбуков.
- Для инженера безопасности:
- Проверить права sudo и политику ключей.
- Настроить Ansible Vault для секретов.
Мини-методика: развернуть новый сервер с нуля (шаги)
- Подготовить машину управления с Rocky Linux 8.
- Обновить систему (dnf update).
- Установить EPEL и Ansible.
- Генерировать SSH-ключ и добавить на целевой узел.
- Добавить хосты в /etc/ansible/hosts.
- Запустить ansible -m ping all.
- Написать и выполнить первый плейбук.
Критерии приёмки
- Ansible установлен и ansible –version возвращает корректный результат.
- Для всех целевых хостов ansible -m ping all возвращает pong.
- Плейбук, устанавливающий nginx, выполняется без ошибок и сервис работает.
Безопасность и конфиденциальность
- Не храните пароли в открытом виде в плейбуках. Используйте Ansible Vault.
- Минимизируйте применение NOPASSWD и ограничьте доступ к файлу /etc/sudoers.d/*.
- Логи Ansible могут содержать чувствительную информацию — контролируйте доступ к ним.
Короткий глоссарий
- Inventory — список узлов Ansible.
- Playbook — сценарий управления в YAML.
- Module — функциональная единица Ansible (установка пакета, копирование).
- Vault — механизм шифрования секретов.
Шаблон файла ansible.cfg (минимум)
[defaults]
inventory = /etc/ansible/hosts
host_key_checking = False
retry_files_enabled = False
[ssh_connection]
ssh_args = -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60sПолезные команды-список
- Пинг всех хостов: ansible -m ping all
- Запуск плейбука: ansible-playbook -i /etc/ansible/hosts playbook.yml
- Проверка версии: ansible –version
- Очистить кеш DNF: sudo dnf makecache
Риски и смягчения
- Проблема: неправильный инвентарь приводит к изменениям не на тех хостах.
Смягчение: использовать тестовый тэг или ограничить запуск –limit. - Проблема: утечка секретов.
Смягчение: хранить секреты в Ansible Vault и контролировать доступ.
Заключение
В этой инструкции вы узнали, как установить Ansible на Rocky Linux 8, настроить репозиторий EPEL, установить пакеты и проверить подключение к удалённому серверу по SSH. Кроме того, приведены примеры плейбука, чеклисты и рекомендации по безопасности. Теперь вы можете автоматизировать повторяющиеся операции и управлять инфраструктурой централизованно.
Рекомендуемые следующие шаги
- Изучите создание ролей и коллекций Ansible.
- Настройте CI/CD для автоматического запуска плейбуков.
- Рассмотрите внедрение AWX/Tower при необходимости GUI и RBAC.
Полезные ссылки и материалы для изучения
- Документация Ansible: https://docs.ansible.com/
- Руководство по Ansible Galaxy для готовых ролей.
Примечания
- Если ваша целевая система — не Ubuntu, команды по установке SSH и настройке фаервола будут отличаться.
- В этой статье показан вариант установки через системный пакетный менеджер (DNF) — он подходит для простого и стабильного развертывания.

Описание изображения: Схема архитектуры Ansible: контроллер, inventory и целевые узлы по SSH.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента