在puppet exec中运行脚本块的最佳方法是什么?

时间:2015-05-11 18:21:00

标签: exec puppet puppet-enterprise

执行简单命令非常简单。但是,如果命令是脚本块而不是单行代码,那么写入的最佳方式是什么,例如:

History

我能想到的几种方法是:

  • 使用适当的转义编写脚本块以使其工作(不是一个非常整洁的选项)
  • 在file.sh中编写脚本块并在命令
  • 中执行它

还有其他选择吗?

1 个答案:

答案 0 :(得分:4)

如果您确实想将其写为脚本块,我通常会按照您描述的方式进行编写:

exec { 'Multi line exec':
    command => "source foo.sh
echo 'bar'
touch /var/tmp/baz
",
    path => '/usr/bin:/usr/sbin:/bin:/usr/local/bin',
    provider => 'shell',
}

一般来说,我建议不要这样做,因为它会因为逃避事情而变得有点复杂(以及$变量和实际shell $变量的木偶使用之间的差异......

根据脚本的复杂程度,如果您想使用Puppet以外的工具运行它,我通常会将其创建为具有file类型的磁盘文件,然后具有一个exec运行脚本。

或者甚至更好,将shell部分拆分为具有依赖关系的独立exec资源,除非参数。