我是傀儡新手,我有两个问题。我想执行2个连续的自定义bash脚本:
file{ 'deploy_0':
ensure => 'file',
path => '/home/user_name/scripts/deploy_0.sh',
...
notify => Exec['deploy_core']
}
file{ 'deploy_1':
ensure => 'file',
path => '/home/user_name/scripts/deploy_1.sh',
...
notify => Exec['deploy_core_api']
}
exec { 'deploy_core':
command => '/bin/bash -c "/home/user_name/scripts/deploy_0"',
}
exec { 'deploy_core_api':
command => '/bin/bash -c "/home/user_name/scripts/deploy_1.sh"',
onlyif => 'deploy_core'
}
但这不起作用
我知道我可以为onlyif
参数添加一个bash命令,例如/bin/bash -c "/home/user_name/scripts/deploy_0.sh
,但我更愿意声明file
资源。
答案 0 :(得分:1)
您正确使用了notify
元参数,并指定了在执行之前需要部署的脚本(file
在相应的exec
之前),如果文件内容发生更改,则应该再次执行。如果您想要类似的功能,则需要在exec
资源上为应用程序顺序使用类似的元参数。请注意,onlyif
是一个exec
属性,它在客户端上执行本地命令,并且如果它返回falsey,则会在目录应用程序期间将资源视为已同步(由于幂等性而未应用)。 / p>
由于您不需要像使用exec
资源那样从file
到另一个require
进行刷新,我们可以使用before
或# before
exec { 'deploy_core':
command => '/bin/bash -c "/home/user_name/scripts/deploy_0"',
before => File['deploy_core_api'],
}
exec { 'deploy_core_api':
command => '/bin/bash -c "/home/user_name/scripts/deploy_1.sh"',
}
# require
exec { 'deploy_core':
command => '/bin/bash -c "/home/user_name/scripts/deploy_0"',
}
exec { 'deploy_core_api':
command => '/bin/bash -c "/home/user_name/scripts/deploy_1.sh"',
require => File['deploy_core'],
}
代替。
$pageElements = $slide->getPageElements();
$slide_new_presentation->setPageElements($pageElements);
这将为您提供您正在寻找的行为。