首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在salt中安装软件包时,是否可以使用'if‘语句

在salt中安装软件包时,是否可以使用'if‘语句
EN

Stack Overflow用户
提问于 2019-06-25 14:45:29
回答 3查看 799关注 0票数 0

我有一个packages.sls文件,其中包含要在部署期间安装的包的列表。

是否可以添加一条if语句,并根据minion的名称来决定是否要安装该包?

下面是一个示例:

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2019-06-25 14:48:35

根据文档yes:here,他们为你提供了一个如何做到这一点的例子:

代码语言:javascript
复制
apache:
  pkg.installed:
    {% if grains['os'] == 'RedHat' %}
    - name: httpd
    {% elif grains['os'] == 'Ubuntu' %}
    - name: apache2
    {% endif %}
票数 1
EN

Stack Overflow用户

发布于 2019-07-12 20:36:57

我建议您将“处理”(安装包)和“数据”(要安装的包)分开。在盐中,第一个是,第二个是

你安装软件包的状态可以像下面这样简单:

代码语言:javascript
复制
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公式,该社区已经提供了此功能

票数 0
EN

Stack Overflow用户

发布于 2021-09-10 15:54:40

除了Salt Minion中的其他非标准颗粒之外,您还可以在grains文件中添加一个minion-var

代码语言:javascript
复制
minion_var: minion1

您在Salt Master的州(.sls)文件可以修改如下,以考虑您的要求。

代码语言:javascript
复制
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的行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56748230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档