SaltStack:第一次出现错误时停止

SaltStack:第一次出现错误时停止

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

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。

这个怎么做?

你可以将这个问题与set -eshell 中的问题进行比较:

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

答案1

你可以只require在第二个状态中使用第一个状态:

etckeeper:
  pkg.installed

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

它不会停止整个执行。如果您有其他一些可以在不安装包的情况下应用的状态,它会。这是先决条件:https://docs.saltstack.com/en/latest/ref/states/requisites.html

如果你确实想立即停止执行,你可以使用

etckeeper:
  pkg.installed:
    - failhard: True

这是failhard全局选项:https://docs.saltstack.com/en/latest/ref/states/failhard.html. 请勿滥用其用途。

相关内容