Настройка репозиториев

Плейбук настройки

Ниже приведён пример файла (плейбука), используемого для настройки репозитория ОС AlmaLinux (8.4).

---
- hosts :
  - control
  - nodes

  become : yes
  gather_facts: yes
  vars:
    repos:
      tionix-modules:
        description: tionix-modules
        url: https://repo.tionix.ru/el8/tionix/victoria/x86_64/
        name: tionix-modules
      tionix-extras:
        description: tionix-extras
        url: https://repo.tionix.ru/el8/tionix/extras/x86_64/
        name: tionix-extras


  roles :
  - repoadd

  tasks:

  - name: disable alma repo
    shell: sed -i '/^enabled/s/1/0/' /etc/yum.repos.d/almalinux-*

  - name: install repo AlmaLinux repo.tionix.ru
    dnf:
      name: 'https://repo.tionix.ru/almalinux/almalinux-repo-8.4-el8.noarch.rpm'
      state: present

  - name: install repo epel repo.tionix.ru
    dnf:
      name: 'https://repo.tionix.ru/epel/8/epel-release-tionix-8-17.el8.noarch.rpm'
      state: present
      disable_gpg_check: yes

  - name: install repo Openstack Victoria repo.tionix.ru
    dnf:
      name: 'https://repo.tionix.ru/el8/extras/8.4.2105/openstack-victoria-repo-8.4.2105-el8.noarch.rpm'
      state: present

  - name: dnf update update_cache
    dnf:
      update_cache: yes

  - name: dnf list is updated
    dnf:
      name: '*'
      state: latest

Настройка репозиториев по шаблону

Настройка репозиториев по шаблону (автоматизированно) осуществляется с помощью запуска плейбука repoadd.yml. Данный плейбук добавляет указанные репозитории на хосты, прописанные в инвентаре (файле inventory).

Файл repoadd.yml содержит указания к настройке списка репозиториев с дополнительными параметрами, относящимися к каждому репозиторию индивидуально.

Примечание.

При необходимости, например – в случае смены релиза ОС – следует актуализировать настройки репозиториев (ссылки „mirrorlist“ или „url“).

Структура фрагмента файла для добавления репозитория:

repo_name:       - название репозитория
    description: - описание репозитория
    mirrorlist:  - ссылка на репозиторий; используется, если нет url
    url:         - ссылка на репозиторий; используется, если нет mirrorlist
    name:        - название репозитория
    gpgkey:      - указывается GPGkey
    gpgcheck:    - проверка GPGkey (принимает Boolean значения)

Пример фрагмента файла с настройкой репозитория system-base:

system-base:
    description: system-base
    mirrorlist: https://mirrors.almalinux.org/mirrorlist/$releasever/baseos
    name: system-BaseOS
    gpgcheck: 0
    gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux

В плейбуке repoadd.yaml используется роль repoadd из директории roles/repoadd. Задачи (tasks), которые выполняет данный плейбук, прописаны в файле roles/repoadd/tasks/main.yml.

При необходимости, в плейбук можно добавить задачу установки дополнительных пакетов. Фрагмент файла для добавления дополнительных пакетов (tasks):

name: install repo Openstack Victoria repo.tionix.ru (название задачи)
        dnf:   (название пакетного менеджера)
        name:  - название пакета
        state: - статус пакета (принимает значения absent|present|installed|removed|latest)

Пример настройки

- name: install repo Openstack Victoria repo.tionix.ru
        dnf:
            name: 'https://repo.tionix.ru/el8/extras/8.4.2105/openstack-victoria-repo-8.4.2105-el8.noarch.rpm'
            state: present

Пример содержимого шаблона

Для быстрой и одинаковой настройки репозиториев на нескольких управляющих узлах предпочтительным способом является редактирование файла шаблонаrepoadd.yaml (представленного в формате YAML).

Плейбук repoadd.yml содержит готовый шаблон настройки репозитория, предназначенный для использования автоматизации Ansible (см. Средства автоматизации).

Операции с пакетами

Для уточнения версии ПО и происхождения (репозитория-источника) любого пакета выполните команды:

dnf list | grep <название_пакета>

dnf info <название_пакета>

Для скачивания пакета по прямой ссылке используйте утилиту wget, доступную из системного репозитория:

dnf install wget; wget <URL>

Любой (repo-) файл, содержащийся в rpm-пакете, может быть извлечен с помощью утилиты rpm2cpio [1].

[1]https://www.cyberciti.biz/tips/how-to-extract-an-rpm-package-without-installing-it.html