Можно ли использовать оператор if при установке пакетов в salt? - PullRequest
0 голосов
/ 25 июня 2019

У меня есть packages.sls файл со списком пакетов для установки во время развертывания.

Можно ли добавить оператор if и в зависимости от имени миньона решить, будет ли установлен пакет или нет?

Вот пример:

zabbix-agent-removed:
  pkg.purged:
    - name: zabbix-agent
    - zabbix-agent: '<4.0.0'
    - ignore_epoch: True

# add if not minion == XX, install the following one:
zabbix-agent-installed:
  pkg.installed:
    - name: zabbix-agent
    - zabbix-agent: '>=4.0.0'
    - ignore_epoch: True
    - require:
      - pkgrepo: zabbix-agent-repo-added
# end if here    

scikit-learn:
  pip.installed:
    - name: scikit-learn == 0.19.1
    - require:
      - pkg: python-pip

Ответы [ 2 ]

1 голос
/ 25 июня 2019

в соответствии с документом да: здесь они предлагают вам пример того, как это сделать:

apache:
  pkg.installed:
    {% if grains['os'] == 'RedHat' %}
    - name: httpd
    {% elif grains['os'] == 'Ubuntu' %}
    - name: apache2
    {% endif %}
0 голосов
/ 12 июля 2019

Я бы порекомендовал вам разделить «обработка» (пакеты установки) и «данные» (пакеты, которые будут установлены). В соли первые состояния , а вторые столб .

Состояние установки пакетов может быть простым:

install_packages:
  pkg.installed:
    - pkgs: {{ salt['pillar.get']('packages', []) }}

, а затем вы просто устанавливаете столб в зависимости от grains['os']. Столбы имеют целевую систему top.sls, аналогичную штатам. Вы можете найти документацию по столбам здесь https://docs.saltstack.com/en/latest/topics/tutorials/pillar.html или здесь https://docs.saltstack.com/en/getstarted/config/pillar.html, и о цели https://docs.saltstack.com/en/latest/topics/targeting/.

Вы также можете решить использовать формулу соленого стека, поддерживаемую сообществом, которое уже предоставляет эту функциональность https://github.com/saltstack-formulas/packages-formula

...