Установка Ansible на Red Hat Enterprise Linux

Red Hat Enterprise LinuxBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы узнаете, как установить Ansible Core на систему Red Hat Enterprise Linux (RHEL). Ansible – это мощный инструмент автоматизации, который позволяет управлять и настраивать системы, развертывать приложения и оркестрировать сложные ИТ-рабочие процессы.

Вы будете использовать менеджер пакетов dnf с привилегиями sudo для установки пакета ansible-core, который предоставляет основное ядро Ansible и инструменты командной строки. После установки вы проверите, что Ansible работает правильно, проверив его версию и запустив базовые команды.

Это фундаментальный навык для системных администраторов и DevOps-инженеров, работающих с системами Red Hat Enterprise Linux.

Установка Ansible Core с помощью dnf

На этом шаге вы установите пакет ansible-core с помощью менеджера пакетов dnf. Ansible Core предоставляет основной движок Ansible, включая ansible, ansible-playbook и другие основные инструменты командной строки, необходимые для задач автоматизации.

Менеджер пакетов dnf (Dandified YUM) является стандартным инструментом для управления программными пакетами в Red Hat Enterprise Linux. Поскольку установка программного обеспечения требует прав администратора, необходимо использовать команду sudo.

Выполните следующую команду, чтобы установить Ansible Core с автоматическим подтверждением:

sudo dnf install ansible-core -y

Флаг -y автоматически отвечает «yes» на все запросы, делая установку неинтерактивной. Система загрузит и установит ansible-core вместе с его зависимостями Python, включая Jinja2 для шаблонизации и PyYAML для обработки YAML.

Вы должны увидеть вывод, аналогичный этому, показывающий разрешение пакетов и ход установки:

Updating Subscription Management repositories.
Last metadata expiration check: ...
Dependencies resolved.
================================================================================
 Package                  Arch   Version                Repository         Size
================================================================================
Installing:
 ansible-core             noarch 2.16.x-x.el9            rhel-9-appstream   xx M
Installing dependencies:
 python3-jinja2           noarch x.x.x-x.el9              rhel-9-appstream   xxx k
 python3-yaml             x86_64 x.x.x-x.el9              rhel-9-appstream   xxx k
 ...

Transaction Summary
================================================================================
Install  XX Packages

Complete!

Проверка установки Ansible

Теперь, когда вы установили Ansible Core, давайте убедимся, что установка прошла успешно, проверив версию и подтвердив доступность основных инструментов командной строки.

Сначала проверьте версию Ansible, выполнив:

ansible --version

Эта команда отображает подробную информацию об установке Ansible, включая версию ядра, версию Python и местоположения различных компонентов. Вы должны увидеть вывод, подобный этому:

ansible [core 2.14.18]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/labex/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/site-packages/ansible
  ansible collection location = /home/labex/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.9.21 (main, Feb 10 2025, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-5)] (/usr/bin/python3)
  jinja version = 3.1.2
  libyaml = True

Давайте разберемся, что означает каждая строка:

  • ansible [core 2.14.18]: Показывает установленную версию Ansible Core
  • config file: Указывает на основной файл конфигурации Ansible, содержащий настройки по умолчанию
  • configured module search path: Каталоги, в которых Ansible ищет пользовательские модули
  • ansible python module location: Где установлен основной код Python Ansible
  • ansible collection location: Каталоги, в которых хранятся коллекции Ansible (упакованные модули и плагины)
  • executable location: Фактическое местоположение исполняемого файла команды ansible
  • python version: Версия интерпретатора Python, которую использует Ansible
  • jinja version: Версия механизма шаблонизации, используемого Ansible для динамического контента
  • libyaml = True: Подтверждает, что быстрый парсер YAML доступен для повышения производительности

Это подтверждает, что Ansible правильно установлен и готов к использованию. Далее давайте также проверим, что команда ansible-playbook доступна:

ansible-playbook --version

Вы должны увидеть аналогичную информацию о версии для инструмента ansible-playbook, который необходим для запуска плейбуков Ansible.

Тестирование Ansible простой командой

На этом шаге вы протестируете установку Ansible, выполнив простую команду на локальной системе. Перейдите в каталог проекта и используйте предварительно настроенный файл инвентаризации для запуска ad-hoc команды Ansible.

Перейдите в каталог проекта и протестируйте базовую функциональность ping:

cd /home/labex/project
ansible localhost -m ping

Модуль ping на самом деле не отправляет ICMP-пакеты; вместо этого он проверяет, может ли Ansible подключиться к целевому объекту и выполнить код Python. Успешный ответ будет выглядеть так:

localhost | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

Давайте разберем этот вывод:

  • localhost | SUCCESS: Показывает, что команда успешно выполнена на целевом объекте localhost
  • ansible_facts: Содержит информацию о системе, обнаруженную во время выполнения
  • discovered_interpreter_python: Путь к интерпретатору Python, который Ansible нашел и будет использовать
  • changed: false: Указывает, что в системе не было внесено никаких изменений (ping доступен только для чтения)
  • ping: "pong": Классический ответ, подтверждающий подключение Ansible

Ответ "pong" подтверждает, что Ansible работает правильно и может взаимодействовать с целевой системой.

Давайте также протестируем сбор информации о системе с помощью модуля setup:

ansible localhost -m setup -a "filter=ansible_distribution*"

Эта команда использует модуль setup для сбора фактов о системе, в частности, фильтруя информацию о дистрибутиве. Вы должны увидеть вывод, содержащий сведения о вашей системе Red Hat Enterprise Linux:

localhost | SUCCESS => {
    "ansible_facts": {
        "ansible_distribution": "RedHat",
        "ansible_distribution_file_parsed": true,
        "ansible_distribution_file_path": "/etc/redhat-release",
        "ansible_distribution_file_search_string": "Red Hat",
        "ansible_distribution_file_variety": "RedHat",
        "ansible_distribution_major_version": "9",
        "ansible_distribution_release": "Plow",
        "ansible_distribution_version": "9.6",
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false
}

Понимание вывода фактов о системе:

  • ansible_distribution: Название дистрибутива Linux (RedHat)
  • ansible_distribution_file_parsed: Успешно ли Ansible прочитал файл дистрибутива
  • ansible_distribution_file_path: Файл, содержащий информацию о дистрибутиве
  • ansible_distribution_file_search_string: Текстовый шаблон, используемый для идентификации дистрибутива
  • ansible_distribution_file_variety: Семейство дистрибутива (семейство RedHat)
  • ansible_distribution_major_version: Основной номер версии (9)
  • ansible_distribution_release: Кодовое название релиза (Plow)
  • ansible_distribution_version: Полный номер версии (9.6)
  • discovered_interpreter_python: Интерпретатор Python, обнаруженный Ansible

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

Изучение доступных модулей Ansible

Ansible поставляется с сотнями встроенных модулей для различных задач автоматизации. Давайте рассмотрим некоторые из доступных модулей, чтобы понять, какие возможности сразу доступны после установки.

Чтобы увидеть список доступных модулей, выполните:

ansible-doc -l | head -20

Команда ansible-doc -l выводит список всех доступных модулей, а использование head -20 показывает первые 20 модулей. Это дает вам представление о широких возможностях автоматизации, доступных с Ansible. Вы увидите вывод, похожий на следующий:

ansible.builtin.add_host               Add a host (and alternatively a grou...
ansible.builtin.apt                    Manages apt-packages
ansible.builtin.apt_key                Add or remove an apt key
ansible.builtin.apt_repository         Add and remove APT repositories
ansible.builtin.assemble               Assemble configuration files from fr...
ansible.builtin.assert                 Asserts given expressions are true
ansible.builtin.async_status           Obtain status of asynchronous task
ansible.builtin.blockinfile            Insert/update/remove a text block su...
ansible.builtin.command                Execute commands on targets
ansible.builtin.copy                   Copy files to remote locations
ansible.builtin.cron                   Manage cron.d and crontab entries
ansible.builtin.debconf                Configure a .deb package
ansible.builtin.debug                  Print statements during execution
ansible.builtin.dnf                    Manages packages with the `dnf' pack...
ansible.builtin.dpkg_selections        Dpkg package selection selections
ansible.builtin.expect                 Executes a command and responds to p...
ansible.builtin.fail                   Fail with custom message
ansible.builtin.fetch                  Fetch files from remote nodes
ansible.builtin.file                   Manage files and file properties
ansible.builtin.find                   Return a list of files based on spec...

Понимание формата списка модулей:

  • ansible.builtin.: Указывает, что это встроенные модули, которые поставляются с Ansible Core
  • Module name (Имя модуля): Имя, которое вы используете при вызове модуля в плейбуках или ad-hoc командах
  • Description (Описание): Краткое объяснение того, что делает модуль

Некоторые важные модули, которые вы будете часто использовать:

  • command (команда): Выполнение команд оболочки на целевых системах
  • copy (копирование): Копирование файлов с вашей управляющей машины на удаленные хосты
  • dnf: Установка, обновление или удаление пакетов в системах Red Hat
  • file (файл): Создание каталогов, установка разрешений или управление свойствами файлов
  • debug (отладка): Вывод сообщений во время выполнения плейбука для устранения неполадок

Чтобы получить подробную документацию по конкретному модулю, вы можете использовать команду ansible-doc с именем модуля. Например, чтобы узнать о модуле copy:

ansible-doc copy

Это отобразит подробную документацию по модулю copy, включая примеры и описания параметров. Команда ansible-doc предоставляет подробную документацию по любому модулю Ansible, что упрощает изучение использования различных возможностей автоматизации. Нажмите q, чтобы выйти из средства просмотра документации, когда закончите чтение.

Резюме

В этой лабораторной работе вы успешно научились устанавливать и проверять Ansible Core в системе Red Hat Enterprise Linux. Вот что вы сделали:

  1. Установили Ansible Core: Вы использовали команду sudo dnf install ansible-core -y для установки основного пакета Ansible и его зависимостей из официальных репозиториев Red Hat.

  2. Проверили установку: Вы подтвердили, что Ansible был правильно установлен, проверив версию команд ansible и ansible-playbook.

  3. Протестировали базовую функциональность: Вы выполнили простые команды Ansible, чтобы убедиться, что установка работает правильно, в том числе:

    • Использование модуля ping для проверки подключения
    • Использование модуля setup для сбора фактов о системе
  4. Изучили доступные модули: Вы узнали, как находить и читать документацию для обширной библиотеки модулей Ansible с помощью ansible-doc.

Теперь у вас есть полностью функциональная установка Ansible на RHEL, и вы понимаете основные команды, необходимые для начала автоматизации вашей инфраструктуры. Этот фундамент подготовит вас к более продвинутым темам Ansible, таким как написание плейбуков, управление инвентарями и реализация сложных рабочих процессов автоматизации.