我有一个packages.sls文件,其中包含要在部署期间安装的包的列表。
是否可以添加一条if语句,并根据minion的名称来决定是否要安装该包?
下面是一个示例:
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发布于 2019-06-25 14:48:35
根据文档yes:here,他们为你提供了一个如何做到这一点的例子:
apache:
pkg.installed:
{% if grains['os'] == 'RedHat' %}
- name: httpd
{% elif grains['os'] == 'Ubuntu' %}
- name: apache2
{% endif %}发布于 2019-07-12 20:36:57
我建议您将“处理”(安装包)和“数据”(要安装的包)分开。在盐中,第一个是态,第二个是柱。
你安装软件包的状态可以像下面这样简单:
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/的文档。
您还可以决定使用社区维护的saltstack公式,该社区已经提供了此功能
发布于 2021-09-10 15:54:40
除了Salt Minion中的其他非标准颗粒之外,您还可以在grains文件中添加一个minion-var:
minion_var: minion1您在Salt Master的州(.sls)文件可以修改如下,以考虑您的要求。
zabbix-agent-removed:
pkg.purged:
- name: zabbix-agent
- zabbix-agent: '<4.0.0'
- ignore_epoch: True
{% if grains['minion_var'] | default ('NA') == 'minion1' %}
zabbix-agent-installed:
pkg.installed:
- name: zabbix-agent
- zabbix-agent: '>=4.0.0'
- ignore_epoch: True
- require:
- pkgrepo: zabbix-agent-repo-added
{% endif %}
scikit-learn:
pip.installed:
- name: scikit-learn == 0.19.1
- require:
- pkg: python-pip在这里,我们正在检查我们是否从minion收到了我们期望的谷物。如果是,则它将执行zabbix-agent-installed状态。如果它失败了,那么缺省值将容忍不包含新引入的谷物的其他minion的行为。
https://stackoverflow.com/questions/56748230
复制相似问题