Введение
В этой лабораторной работе вы узнаете, как установить 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. Вот чего вы достигли:
Установили Ansible Core: Вы использовали команду
sudo dnf install ansible-core -yдля установки основного пакета Ansible и его зависимостей из официальных репозиториев Red Hat.Проверили установку: Вы подтвердили, что Ansible правильно установлен, проверив версию команд
ansibleиansible-playbook.Протестировали базовую функциональность: Вы выполнили простые команды Ansible, чтобы убедиться, что установка работает корректно, включая:
- Использование модуля
pingдля проверки связи. - Использование модуля
setupдля сбора системных фактов.
- Использование модуля
Изучили доступные модули: Вы узнали, как находить и читать документацию для обширной библиотеки модулей Ansible с помощью
ansible-doc.
Теперь у вас есть полностью функциональная установка Ansible в RHEL, и вы понимаете базовые команды, необходимые для начала автоматизации вашей инфраструктуры. Этот фундамент подготовит вас к более продвинутым темам Ansible, таким как написание плейбуков, управление инвентаризацией и реализация сложных рабочих процессов автоматизации.



