freebsd_packages

freebsd_packages

качество Статус сборки GitHub тэг

Роль Ansible. FreeBSD. Настройка репозиториев. Установка, обновление и апгрейд пакетов.

Не стесняйтесь оставлять свои отзывы и сообщать о проблемах.

Ваши вклады приветствуются.

Требования

Коллекции

  • community.general >= 9.3.0

Переменные

Смотрите настройки по умолчанию и примеры в vars.

Рабочий процесс

  1. Измените оболочку на удалённом хосте на /bin/sh, если это необходимо
shell> ansible host -e 'ansible_shell_type=csh ansible_shell_executable=/bin/csh' -a 'sudo pw usermod user -s /bin/sh'
  1. Установите роль и коллекцию
shell> ansible-galaxy role install vbotka.freebsd_packages

Установите коллекцию, если это необходимо

shell> ansible-galaxy collection install community.general
  1. Измените переменные под свои нужды.

При желании, получите словари списков пакетов. Смотрите:

Положите их, например, в group_vars/all

shell> ls -1 group_vars/all/
pkgdict_amd64.yml
pkgdict_arm64.yml
pkgdict_arm.yml
pkgdict_i386.yml
pkgdict_versions.yml
  1. Создайте плейбук
shell> cat freebsd-packages.yml
- hosts: srv.example.com
  roles:
    - vbotka.freebsd_packages
  1. Управляйте пакетами

Проверьте синтаксис

shell> ansible-playbook freebsd-packages.yml --syntax-check

Выводите переменные

shell> ansible-playbook freebsd-packages.yml -e pkg_debug=true -t pkg_debug

Сделайте пробный запуск плейбука и отобразите изменения

shell> ansible-playbook freebsd-packages.yml --check --diff

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

shell> ansible-playbook freebsd-packages.yml -t pkg_conf

Сделайте пробный запуск установки пакетов

shell> ansible-playbook freebsd-packages.yml -e pkg_dryrun=true

Если всё выглядит правильно, управляйте пакетами

shell> ansible-playbook freebsd-packages.yml

Подсказка: Есть много пропущенных задач. Чтобы сделать вывод плейбука более удобочитаемым:

  • Используйте плагин обратного вызова community.general.yaml

  • Отключите пропущенные хосты и включите отладку

shell> ANSIBLE_DISPLAY_SKIPPED_HOSTS=false ansible-playbook freebsd-packages.yml -e pkg_debug=true

Обновление пакетов

С версии community.general 9.3.0 можно обновлять (state=latest) пакеты в формате «категория/порт», также известном как «pkg-origin». Вам нужно отключить шаблоны (use_globs=false). Смотрите параметр use_globs

shell> ansible-playbook freebsd-packages.yml -e pkg_state=latest -e pkg_use_globs=false

Репозитории

Параметр pkgsite модуля community.general.pkgng говорит:

укажите имя репозитория, настроенного в /usr/local/etc/pkg/repos

Репозиторий по умолчанию

Модуль community.general.pkgng будет использовать репозиторий по умолчанию FreeBSD, объявленный в /etc/pkg/FreeBSD.conf, если другие репозитории не настроены в /usr/local/etc/pkg/repos

shell> cat /etc/pkg/FreeBSD.conf
# $FreeBSD$
#
# Чтобы отключить этот репозиторий, вместо изменения или удаления этого файла,
# создайте файл /usr/local/etc/pkg/repos/FreeBSD.conf:
#
#   mkdir -p /usr/local/etc/pkg/repos
#   echo "FreeBSD: { enabled: no }" > /usr/local/etc/pkg/repos/FreeBSD.conf
#

FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}

Отобразите настроенный репозиторий

# pkg -vv
  ...
Репозитории:
  FreeBSD: {
    url             : "pkg+http://pkg.FreeBSD.org/FreeBSD:13:amd64/quarterly",
    enabled         : yes,
    priority        : 0,
    mirror_type     : "SRV",
    signature_type  : "FINGERPRINTS",
    fingerprints    : "/usr/share/keys/pkg"
  }

Пользовательские репозитории

Вы можете отключить репозиторий по умолчанию и объявить другие репозитории. Например, создайте словарь

pkg_repos_conf:
  - name: FreeBSD
    conf:
      - {key: enabled, value: 'no'}
  - name: FreeBSD_quarterly
    conf:
      - {key: url, value: '"pkg+http://pkg.FreeBSD.org/${ABI}/quarterly"'}
      - {key: mirror_type, value: '"srv"'}
      - {key: signature_type, value: '"fingerprints"'}
      - {key: fingerprints, value: '"/usr/share/keys/pkg"'}
      - {key: enabled, value: 'yes'}
  - name: FreeBSD_latest
    conf:
      - {key: url, value: '"pkg+http://pkg.FreeBSD.org/${ABI}/latest"'}
      - {key: mirror_type, value: '"srv"'}
      - {key: signature_type, value: '"fingerprints"'}
      - {key: fingerprints, value: '"/usr/share/keys/pkg"'}
      - {key: enabled, value: 'yes'}

И создайте конфигурационные файлы

shell> ansible-playbook -t pkg_conf freebsd-packages.yml

Посмотрите на файлы

shell> cat /usr/local/etc/pkg/repos/FreeBSD.conf
# Управляется Ansible

FreeBSD: {
  enabled: no
}
# EOF
shell> cat /usr/local/etc/pkg/repos/FreeBSD_quarterly.conf
# Управляется Ansible

FreeBSD_quarterly: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}
# EOF
shell> cat /usr/local/etc/pkg/repos/FreeBSD_latest.conf
# Управляется Ansible

FreeBSD_latest: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}
# EOF

И отобразите настроенные репозитории

shell> pkg -vv
  ...
Репозитории:
  FreeBSD_latest: {
    url             : "pkg+http://pkg.FreeBSD.org/FreeBSD:13:amd64/latest",
    enabled         : yes,
    priority        : 0,
    mirror_type     : "SRV",
    signature_type  : "FINGERPRINTS",
    fingerprints    : "/usr/share/keys/pkg"
  }
  FreeBSD_quarterly: {
    url             : "pkg+http://pkg.FreeBSD.org/FreeBSD:13:amd64/quarterly",
    enabled         : yes,
    priority        : 0,
    mirror_type     : "SRV",
    signature_type  : "FINGERPRINTS",
    fingerprints    : "/usr/share/keys/pkg"
  }

Примеры

Дано такой список

pkg_list: [bash]
  • Установите bash из репозитория по умолчанию
shell> ansible-playbook -t pkg_packages_install_list -e pkg_debug=true freebsd-packages.yml
  ...
ok: [srv.exmple.org] =>
  результат:
    попытки: 1
    изменено: false
    неудачи: false
    сообщение: пакет(ы) уже присутствуют
    stderr: ''
    stderr_lines: []
    stdout: |-
      Обновление каталога репозитория FreeBSD_latest...
      Репозиторий FreeBSD_latest актуален.
      Обновление каталога репозитория FreeBSD_quarterly...
      Репозиторий FreeBSD_quarterly актуален.
      Все репозитории актуальны.
  ...
  • Установите bash из репозитория FreeBSD_latest
shell> ansible-playbook -t pkg_packages_install_list -e pkg_debug=true -e pkg_pkgsite=FreeBSD_latest freebsd-packages.yml
  ...
ok: [srv.example.org] =>
  результат:
    попытки: 1
    изменено: false
    неудачи: false
    сообщение: пакет(ы) уже присутствуют
    stderr: ''
    stderr_lines: []
    stdout: |-
      Обновление каталога репозитория FreeBSD_latest...
      Репозиторий FreeBSD_latest актуален.
      Все репозитории актуальны.
  ...
  • Установите последнюю версию пакета bash из репозитория FreeBSD_latest
shell> ansible-playbook -t pkg_packages_install_list -e pkg_debug=true -e pkg_pkgsite=FreeBSD_latest -e pkg_state=latest freebsd-packages.yml
  ...
ok: [srv.example.org] =>
  результат:
    попытки: 1
    изменено: false
    неудачи: false
    сообщение: пакет(ы) уже последние
    stderr: ''
    stderr_lines: []
    stdout: |-
      Обновление каталога репозитория FreeBSD_latest...
      Репозиторий FreeBSD_latest актуален.
      Все репозитории актуальны.
  ...
  • Установите последние пакеты из минимального списка из репозитория FreeBSD_latest

Получите словари pkgdict_* с GitHub ansible-freebsd-postinstall/defaults/main и объявите список

pkg_dict_select: [minimal]

Установите пакеты

shell> ansible-playbook -t pkg_packages_install_selected -e pkg_debug=true -e pkg_pkgsite=FreeBSD_latest -e pkg_state=latest freebsd-packages.yml
  ...
ok: [srv.example.org] =>
 результат:
    изменено: true
    сообщение: Все элементы завершены
    результаты:
    - ansible_loop_var: item
      попытки: 1
      изменено: true
      неудачи: false
      вызов:
        аргументы_модуля:
          аннотация: null
          автозамена: false
          кеш: false
          chroot: null
          игнорировать_osver: false
          тюрьма: null
          имя:
          - shells/bash
          - devel/git
          - archivers/gtar
          - ports-mgmt/pkg
          - ports-mgmt/portmaster
          - ports-mgmt/portupgrade
          - net/rsync
          - ftp/wget
          pkgsite: FreeBSD_latest
          rootdir: null
          state: latest
      элемент:
        пакеты:
        - shells/bash
        - devel/git
        - archivers/gtar
        - ports-mgmt/pkg
        - ports-mgmt/portmaster
        - ports-mgmt/portupgrade
        - net/rsync
        - ftp/wget
        pkglist: minimal
      сообщение: обновлено 4 пакета
      stderr: ''
      stderr_lines: []
      stdout: |-
        Обновление каталога репозитория FreeBSD_latest...
        Репозиторий FreeBSD_latest актуален.
        Все репозитории актуальны.
        Следующие 4 пакета(ов) будут затронуты (из 0 проверенных):

        Установленные пакеты, которые будут УЛУЧШЕНЫ:
                git-tiny: 2.41.0 -> 2.42.0 [FreeBSD_latest]
                gtar: 1.34_1 -> 1.35 [FreeBSD_latest]
                portmaster: 3.26 -> 3.27 [FreeBSD_latest]
                portupgrade: 2.4.16,2 -> 2.4.16_1,2 [FreeBSD_latest]

        Количество пакетов для обновления: 4

        5 MiБ будет загружено.
        [1/4] Загружается git-tiny-2.42.0.pkg: .......... завершено
        [2/4] Загружается portupgrade-2.4.16_1,2.pkg: ......... завершено
        [3/4] Загружается gtar-1.35.pkg: ........ завершено
        [4/4] Загружается portmaster-3.27.pkg: .... завершено
        Проверка целостности... завершено (0 конфликтов)
        [1/4] Обновление git-tiny с 2.41.0 до 2.42.0...
        ===> Создание групп.
        Использование существующей группы 'git_daemon'.
        ===> Создание пользователей
        Использование существующего пользователя 'git_daemon'.
        [1/4] Распаковка git-tiny-2.42.0: .......... завершено
        [2/4] Обновление portupgrade с 2.4.16,2 до 2.4.16_1,2...
        [2/4] Распаковка portupgrade-2.4.16_1,2: .......... завершено
        [3/4] Обновление gtar с 1.34_1 до 1.35...
        [3/4] Распаковка gtar-1.35: .......... завершено
        [4/4] Обновление portmaster с 3.26 до 3.27...
        [4/4] Распаковка portmaster-3.27: ........ завершено
  ...
  • Установите минимальный список пакетов на хостах в группе test
- hosts: test
  gather_facts: true
  become: true

  vars:

    pkg_dict_select:
      - минимальный

  roles:
    - vbotka.freebsd_packages

Ansible lint

Используйте конфигурационный файл .ansible-lint.local при запуске ansible-lint. Некоторые правила могут быть отключены, а некоторые предупреждения могут быть проигнорированы. Смотрите заметки в конфигурационном файле.

shell> ansible-lint -c .ansible-lint.local

Ссылки

Лицензия

лицензия

Информация об авторе

Владимир Ботка

О проекте

FreeBSD. Configure repositories. Install, update, and upgrade packages.

Установить
ansible-galaxy install vbotka/ansible-freebsd-packages
Лицензия
bsd-2-clause
Загрузки
402
Владелец