如果文件存在,如何使salt执行失败

时间:2018-01-30 07:54:20

标签: salt-stack

让我们说下面的盐叫。如果文件存在,我希望盐不再执行。

在下面的例子中。它应该执行run-aerospike-mem_disk-check,但如果它检测到check_bad_conf中存在文件,则执行一次。它不应该执行run-aerospike-config并在盐中获得一些RED颜色。如何实现它。

让我们说下面的盐叫。如果文件存在,我希望盐不再执行。

在下面的例子中。它应该执行run-aerospike-mem_disk-check,但如果它检测到check_bad_conf中存在文件,则执行一次。它不应该执行run-aerospike-config并在salt执行中获得一些RED颜色作为失败。如何实现它。

run-aerospike-mem_disk-check:
  cmd.wait:
   - name: /var/local/aero_dmcheck.sh
   - watch:
     - file: /var/local/aero_config

check_bad_conf:
   file.exist : /tmp/badconf
     - failhard : yes

run-aerospike-config:
  cmd.wait:
    - name: /var/local/aero_config.pl
    - watch:
      - file: /var/local/aero_config.yml

2 个答案:

答案 0 :(得分:0)

请说清楚。
为什么你在" RED"?之后如此糟糕 只有在存在错误文件的情况下才能运行disk-check? 如果是这样,它不能运行aerospike-config? 无论文件是否仍然存在,都要运行一次

cmd.wait接受onlyif参数,您可以在其中运行命令来断言文件缺失/存在/任何内容(它是退出代码驱动的)。
但是你需要知道如果不满足onlyif,状态变为绿色而不是红色 如果给定文件存在,还有creates参数专门用于运行命令。 请参阅cmd manual

由于您可能希望仅在aerospike-config 运行时才能运行disk-check,否则使用file.missing就足够了:

check:
  file.missing:
    - name: /tmp/badconf
run-aerospike-config:
  cmd.wait:
    - name: /var/local/aero_config.pl
    - watch:
      - file: /var/local/aero_config.yml
    - require:
      - file: check

详细了解Salt requisites here 如果您希望run-aerospike-mem_disk-check脚本运行一次,为什么不使用cmd.script并添加stateful argument以禁止进一步执行?

答案 1 :(得分:-1)

我实际上从未真正使用它,但你可以使用某种" if-statement"。看看这个:

Check file exists and create a symlink

我认为在你的情况下file.presentfile.absent会适合。

希望有所帮助。