我有一个关于如何最好地做这个事件的问题,我有一些需要按此顺序运行的exec命令
Exec['A'] -> Exec['B']-> if var = 1(Exec['x']) if var = 2(Exec['y']) if var = 3 (Exec['z]) -> Exec['C'] -> Exec['D']
基本上我有一个Exec然后我有if语句然后我需要调用一个exec。
此时我已完成以下
Exec['A'] { before Exec['B'] }
Exec['B'] { subscribe Exec['A'] }
if var = 1(Exec['x']) { before Exec['C'] }
if var = 2(Exec['y']) { before Exec['C'] }
if var = 3 (Exec['z]) { before Exec['C'] }
Exec['C'] { before Exec['D'] }
Exec['D']
我不确定此代码是否是幂等的,我只想与社区确认,以防他们看到我可能没有看到的任何内容。我有一种感觉,if语句可以在我不想要的Exec [' A']之前运行。
答案 0 :(得分:1)
语法已关闭,但这确实有效
Exec['A'] { before => Exec['B'] }
if $var == 1 {
Exec['x'] { before => Exec['C'] }
}
else {
Exec['y'] { before => Exec['C'] }
}
请注意,此代码假定已声明所有exec
资源A,B,C,x和y,但没有任何相应的before
参数。
答案 1 :(得分:0)
如果您希望在A之后运行x,y和z,请添加require => Exec['A']
。
此外,似乎所有的执行官都会在每次傀儡运行时运行。添加onlyif
,unless
,creates
或refreshonly
属性。
答案 2 :(得分:0)
要自动测试脚本的幂等性,您可能会对此工具感兴趣:https://github.com/citac/citac
Citac系统地以各种配置,不同的资源执行顺序等执行您的Puppet清单。生成的测试报告会告知您有关非幂等资源,融合相关问题等的问题。
该工具使用Docker容器执行,因此您的系统在测试时保持不变。在执行Puppet脚本期间跟踪状态更改,并生成详细的测试报告。
请随时提供反馈,拉取请求等。快乐测试!