木偶运行顺序

时间:2014-05-20 13:03:59

标签: puppet

我有一个关于如何最好地做这个事件的问题,我有一些需要按此顺序运行的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']之前运行。

3 个答案:

答案 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']

此外,似乎所有的执行官都会在每次傀儡运行时运行。添加onlyifunlesscreatesrefreshonly属性。

答案 2 :(得分:0)

要自动测试脚本的幂等性,您可能会对此工具感兴趣:https://github.com/citac/citac

Citac系统地以各种配置,不同的资源执行顺序等执行您的Puppet清单。生成的测试报告会告知您有关非幂等资源,融合相关问题等的问题。

该工具使用Docker容器执行,因此您的系统在测试时保持不变。在执行Puppet脚本期间跟踪状态更改,并生成详细的测试报告。

请随时提供反馈,拉取请求等。快乐测试!