是否有一个 Salt 要求只有在另一个状态没有 运行 时才会执行一个状态
Is there a Salt requisite that will execute a state only if another state has not run
我有一种情况,如果另一个状态不执行,我只想执行一个加盐状态 运行。这可能吗?
例如
- State1 管理文件-abc
- State2 有一个 onchanges 要求,只有 运行 如果 file-abc 改变
- 如果 State2 不执行,State3 应该只 运行。
预期的行为是:
If file-abc changes:
execute State2
If State2 did not execute:
execute State3
这里的要求是如果 State2 不应该,State3 应该 运行,并且除了单个文件更改之外,State2 可能有很多未来的原因 运行。
状态 1
test-state-file1:
file.managed:
- name: /data/test-file1
- source: salt://foo-states/test-file
状态2
test-state2-echo:
cmd.run:
- name: echo "Test State 2"
- onchanges:
- file: /data/test-file1
状态 3 - 只有 运行 如果状态 1 和状态 2 不 运行。
test-state3-echo:
cmd.run:
- name: echo "Test State 3"
没有任何类型的必要条件是其他州的负面条件。完成你所要求的(虽然可能不是你想要的)的方法是使用 unless 来执行命令。尝试:
one:
test.succeed_without_changes
two:
cmd.run:
- name: echo 'hi' > /tmp/fun.txt
- onchanges:
- test: one
three:
test.succeed_with_changes:
- unless:
- grep 'hi' /tmp/fun.txt
您会看到三个 运行。改成
one:
test.succeed_with_changes
您会看到两个 运行,但不会看到三个。
根据您真正想要完成的事情,这可能适合您,但也可能有更好的方法来完成您想要做的事情。
我有一种情况,如果另一个状态不执行,我只想执行一个加盐状态 运行。这可能吗?
例如
- State1 管理文件-abc
- State2 有一个 onchanges 要求,只有 运行 如果 file-abc 改变
- 如果 State2 不执行,State3 应该只 运行。
预期的行为是:
If file-abc changes:
execute State2
If State2 did not execute:
execute State3
这里的要求是如果 State2 不应该,State3 应该 运行,并且除了单个文件更改之外,State2 可能有很多未来的原因 运行。
状态 1
test-state-file1:
file.managed:
- name: /data/test-file1
- source: salt://foo-states/test-file
状态2
test-state2-echo:
cmd.run:
- name: echo "Test State 2"
- onchanges:
- file: /data/test-file1
状态 3 - 只有 运行 如果状态 1 和状态 2 不 运行。
test-state3-echo:
cmd.run:
- name: echo "Test State 3"
没有任何类型的必要条件是其他州的负面条件。完成你所要求的(虽然可能不是你想要的)的方法是使用 unless 来执行命令。尝试:
one:
test.succeed_without_changes
two:
cmd.run:
- name: echo 'hi' > /tmp/fun.txt
- onchanges:
- test: one
three:
test.succeed_with_changes:
- unless:
- grep 'hi' /tmp/fun.txt
您会看到三个 运行。改成
one:
test.succeed_with_changes
您会看到两个 运行,但不会看到三个。
根据您真正想要完成的事情,这可能适合您,但也可能有更好的方法来完成您想要做的事情。