使用puppet链接bash脚本的条件

时间:2017-10-25 21:30:52

标签: puppet

我是傀儡新手,我有两个问题。我想执行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资源。

1 个答案:

答案 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);

这将为您提供您正在寻找的行为。