我有一个用于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。
怎么做?
您可以将此问题与shell中的set -e进行比较:
如果命令以非零状态退出,-e立即退出。
发布于 2018-04-24 11:37:46
您只需对第二个状态中的第一个状态进行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。不要滥用它的使用。
https://serverfault.com/questions/909139
复制相似问题