Гид по технологиям

Как установить Ansible на Rocky Linux 8

• 6 min read • Инфраструктура • Обновлено 21 Nov 2025
Установка Ansible на Rocky Linux 8
Установка 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.

Лог установки Ansible

Шаг 4. Проверка установки и базовая настройка управления узлами

Теперь настроим удалённый сервер и проверим подключение по SSH.

Подготовка целевого сервера

Ansible использует SSH (порт 22) для связи с целевыми машинами. В примере ниже целевой сервер — Ubuntu 20.04 с IP 137.184.66.179. На вашей инфраструктуре используйте реальные IP или DNS-имена.

Установите SSH-сервер и включите его (пример для Ubuntu):

sudo apt install openssh-server
sudo systemctl start ssh
sudo 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 прав повышает риск, используйте его только в контролируемой среде и по необходимости.

Генерация SSH ключа

Создание файла inventory

Файл инвентаря по умолчанию находится в /etc/ansible/hosts. Его можно редактировать или создать локальный файл и указывать его через параметр -i.

Откройте стандартный файл:

sudo nano /etc/ansible/hosts

Пример простого содержимого для группы webservers:

[webservers]
137.184.66.179

После редактирования сохраните файл (ctrl+o) и закройте (ctrl+x).

Редактирование файла hosts

Проверка связи с узлами

Используйте модуль 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 для секретов.

Мини-методика: развернуть новый сервер с нуля (шаги)

  1. Подготовить машину управления с Rocky Linux 8.
  2. Обновить систему (dnf update).
  3. Установить EPEL и Ansible.
  4. Генерировать SSH-ключ и добавить на целевой узел.
  5. Добавить хосты в /etc/ansible/hosts.
  6. Запустить ansible -m ping all.
  7. Написать и выполнить первый плейбук.

Критерии приёмки

  • 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

Описание изображения: Схема архитектуры Ansible: контроллер, inventory и целевые узлы по SSH.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро