Установить пакет в зависимости от версии выпуска дистрибутива - PullRequest
0 голосов
/ 02 октября 2019

У меня есть это состояние:

pkg.installed:
- pkgs:
  - libqt4-core
  - libqt4-gui

, которое работало нормально, пока имена этих пакетов не были изменены в новом выпуске, и теперь это работает:

pkg.installed:
  - pkgs:
    - libqtcore4
    - libqtgui4

Как заставить это работать независимоверсии системы?

1 Ответ

0 голосов
/ 02 октября 2019

Существует несколько возможностей, но я думаю, что первым шагом является разделение вашего кода между состояниями (обработка) и компонентом (данные). Таким образом, вы можете «вводить» имена пакетов в своем состоянии, не меняя их для каждого нового выпуска или новой ОС, которую вы хотите поддерживать.

Простой вариант использования pillar - это просто нацеливание на вашу ОС или выпуск (с использованием дробных гранул)использование одного или другого столпа, что-то вроде

# /srv/pillar/top.sls
base:
  'G@release1':
    - release1
  'G@release2':
    - release2

# /srv/pillar/release1.sls
pkgs:
  - libqt4-core
  - libqt4-gui

# /srv/pillar/release2.sls
pkgs:
  - libqtcore4
  - libqtgui4

# /srv/salt/my_state.sls
pkg.installed:
  - pkgs: {{ salt['pillar.get']('pkg', []) }}

Более сложное решение состоит в том, чтобы реализовать это состояние в виде «формулы» и использовать map.jinja для определения различных параметров в зависимости от выпуска / ОС / чего бы то ни было,Подробности см. В этом ответе https://serverfault.com/a/957401/61847. Это более сложно, но имеет много преимуществ: изоляция кода для конкретного программного обеспечения, подробные сведения об ОС, обеспечение уровня нормальных значений по умолчанию и возможность индивидуального тестирования этой конкретной формулы.

...