Установка 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 | tee ping-output.txt

Модуль 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*" | tee setup-output.txt

Эта команда использует модуль 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 | tee module-list.txt

Команда 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.
  • Имя модуля: Имя, которое вы используете при вызове модуля в плейбуках или ad-hoc командах.
  • Описание: Краткое объяснение того, что делает модуль.

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

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

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

ansible-doc copy | tee copy-doc.txt

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

Резюме

В этой лабораторной работе вы успешно научились устанавливать и проверять 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, таким как написание плейбуков, управление инвентаризацией и реализация сложных рабочих процессов автоматизации.