Подробный гайд по управлению пакетами ansible.builtin.package в ALT Linux
Модуль ansible.builtin.package — это универсальный (абстрактный) модуль Ansible для управления пакетами. Его главная особенность в том, что он автоматически определяет операционную систему целевого хоста и использует «родной» для неё менеджер пакетов.
Поскольку в ALT Linux в качестве менеджера пакетов используется APT (точнее, его rpm-вариант — apt-rpm / apt-get), модуль package под капотом будет вызывать именно его.
Ниже представлен подробный гайд по использованию этого модуля специально для инфраструктуры на базе ALT Linux.
1. Базовый синтаксис и основные параметры
Для работы с пакетами требуются права суперпользователя, поэтому всегда используйте become: yes.
Основные параметры:
name(обязательный) — имя пакета или список пакетов.
2. state — желаемое состояние пакета:
present(илиinstalled) — установить пакет (если уже установлен, ничего не делает).absent(илиremoved) — удалить пакет.latest— установить последнюю доступную версию (обновить, если есть новая).
update_cache— обновить кэш репозиториев перед установкой (аналогapt-get update). Работает только еслиstate=presentилиlatest.cache_valid_time— время в секундах. Если кэш был обновлен менее N секунд назад,update_cacheбудет проигнорирован (ускоряет выполнение плейбуков).
2. Практические примеры (YAML)
Установка одного пакета
- name: Установка веб-сервера Nginx
ansible.builtin.package:
name: nginx
state: present
become: yes
Установка нескольких пакетов сразу
В ALT Linux (как и в Debian/Ubuntu) можно передавать список пакетов. Это быстрее, чем создавать отдельную задачу для каждого пакета.
- name: Установка базовых утилит для администрирования
ansible.builtin.package:
name:
- vim-enhanced
- htop
- mc
- tmux
- bash-completion
state: present
become: yes
Обновление кэша и установка (Best Practice)
В ALT Linux, как и в любом APT-дистрибутиве, перед установкой нужно обновить индексы репозиториев.
- name: Обновление кэша и установка PostgreSQL
ansible.builtin.package:
name: postgresql14-server
state: present
update_cache: yes
cache_valid_time: 3600 # Обновлять кэш не чаще, чем раз в час
become: yes
Обновление пакета до последней версии
Если вам нужно гарантировать, что пакет обновится до самой свежей версии из репозитория.
- name: Обновление ядра и системных библиотек
ansible.builtin.package:
name:
- kernel-image-std-def
- glibc-core
state: latest
become: yes
Удаление пакета
- name: Удаление ненужного FTP-сервера
ansible.builtin.package:
name: proftpd
state: absent
become: yes
Примечание:
state: absent удаляет пакет, но может оставить конфигурационные файлы. Если нужно удалить "подчистую", в ALT Linux лучше использовать специализированный модуль ansible.builtin.apt с параметром purge: yes (об этом ниже).
3. Специфика и нюансы ALT Linux
Хотя ansible.builtin.package отлично работает, при работе с ALT Linux нужно учитывать несколько важных моментов:
А. Именование пакетов
Имена пакетов в ALT Linux могут отличаться от Debian или RHEL.
- Например, Apache в ALT называется
apache2(илиapache2-base/apache2-mod_php), а неhttpd. - Python может называться
python3илиpython3-base.
Совет:
Всегда проверяйте точное имя пакета через apt-cache search <имя> на тестовой машине ALT Linux перед написанием плейбука.
Б. Когда package недостаточно (переход на apt)
Модуль ansible.builtin.package — это "обертка". Если вам нужны специфичные для APT функции, которые не проброшены в package, используйте напрямую ansible.builtin.apt. Он полностью поддерживает apt-rpm в ALT Linux.
Пример: Полное удаление пакета с конфигами (purge)
- name: Полное удаление MySQL с конфигурацией
ansible.builtin.apt:
name: mysql-server
state: absent
purge: yes
become: yes
Пример: Установка пакета без установки рекомендованных зависимостей
В ALT Linux пакеты часто тянут за собой много "рекомендуемых" (Recommends) зависимостей.
Если нужно сэкономить место:
- name: Установка пакета без рекомендуемых зависимостей
ansible.builtin.apt:
name: docker-ce
state: present
install_recommends: no
become: yes
В. Обработка блокировок (Locks)
Если на хосте ALT Linux в этот момент работает apt-get (например, идет автоматическое обновление через apt-daily или работает другой администратор), Ansible может выдать ошибку блокировки.
Модуль package (и apt) имеет встроенный механизм ожидания, но если вы сталкиваетесь с частыми ошибками, можно увеличить время ожидания или убедиться, что фоновые обновления отключены/настроены корректно.
Г. Работа с группами пакетов
В ALT Linux нет такой развитой системы "групп пакетов" (как @Development Tools в RPM), как в RHEL-системах. Поэтому в ALT Linux принято устанавливать метапакеты или использовать списки пакетов, как показано в примерах выше.
4. Полный пример плейбука для ALT Linux
Вот как может выглядеть типичная задача по подготовке сервера ALT Linux:
- name: Базовая настройка сервера ALT Linux
hosts: alt_servers
become: yes
gather_facts: yes
tasks:
- name: Обновление кэша APT (если старше 1 часа)
ansible.builtin.package:
update_cache: yes
cache_valid_time: 3600
- name: Установка базового ПО
ansible.builtin.package:
name:
- vim
- mc
- htop
- net-tools
- bind-utils
- ansible # если нужно управлять с этого хоста
state: present
- name: Установка и обновление OpenSSH
ansible.builtin.package:
name: openssh-server
state: latest
- name: Удаление устаревшего telnet
ansible.builtin.package:
name: telnet-server
state: absent
Важно:
- Используйте
ansible.builtin.packageдля 95% рутинных задач (установка, удаление, обновление). Это делает ваш код кроссплатформенным. - Всегда добавляйте
update_cache: yesиcache_valid_timeпри первой установке пакетов, чтобы избежать ошибок "package not found". - Если нужны специфичные действия (удаление с конфигами
purge, отключение рекомендаций), переключайтесь наansible.builtin.apt, так как под капотом ALT Linux использует именно APT. - Внимательно проверяйте имена пакетов, так как репозитории ALT Linux (Sisyphus, p10, p11) имеют свою уникальную номенклатуру.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.