1

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

exec {
    command => 'for i in vars
                do
                    echo $i
                    more-statements
                done'; 
}

我能想到的几种方法是:

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

还有其他选择吗?

4

1 回答 1

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 资源。

于 2015-05-11T20:29:08.617 回答