首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SaltStack:第一次错误停止

SaltStack:第一次错误停止
EN

Server Fault用户
提问于 2018-04-24 08:04:40
回答 1查看 1.5K关注 0票数 1

我有一个用于SaltStack的sls文件,如下所示:

代码语言:javascript
复制
etckeeper:
  pkg.installed

etckeeper_extra_packages:
  pkg.installed:
    - pkgs:
      - hwinfo

{%- if not salt['file.directory_exists' ]('/etc/.git') %}
init_etckeeper:
  cmd.run:
    - name: etckeeper init
{%- endif %}

gitconfig_etckeeper_name:
  git.config_set:
    - name: user.name
    - value: Etckeeper running on {{grains.id}}
    - repo: /etc

gitconfig_etckeeper_mail:
  git.config_set:
    - name: user.email
    - value: root@{{grains.id}}
    - repo: /etc


{%- if not salt['file.directory_exists' ]('/etc/.git') %}
initial_commit_etckeeper:
  cmd.run:
    - name: etckeeper commit -m "initial commit"
{%- endif %}

我希望在第一个不成功的状态/命令/.(指叫这个?)

例如,如果etckeeper的pkg.installed失败,我不希望安装hwinfo。

怎么做?

您可以将此问题与shell中的set -e进行比较:

如果命令以非零状态退出,-e立即退出。

EN

回答 1

Server Fault用户

发布于 2018-04-24 11:37:46

您只需对第二个状态中的第一个状态进行require

代码语言:javascript
复制
etckeeper:
  pkg.installed

etckeeper_extra_packages:
  pkg.installed:
    - pkgs:
      - hwinfo
    - require:
      - pkg: etckeeper

这并不能阻止整个处决。如果您有一些其他状态可以在不安装包的情况下应用,它将。这是必要条件:https://docs.saltstack.com/en/latest/ref/states/requisites.html

如果您绝对想立即停止执行,可以使用

代码语言:javascript
复制
etckeeper:
  pkg.installed:
    - failhard: True

这是failhard全局选项:https://docs.saltstack.com/en/latest/ref/states/failhard.html。不要滥用它的使用。

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

https://serverfault.com/questions/909139

复制
相关文章

相似问题

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