在 Puppet 中使用 generate('...') 的示例

在 Puppet 中使用 generate('...') 的示例

我正在尝试学习如何使用木偶,跟随他们的快速入门指南

我想使用生成添加时间戳:

$timestamp = generate('/bin/date')

class helloworld::motd {
    file { '/etc/motd':
    owner => 'root',
    group => 'root',
    mode => '0644',
    content => "Production puppetmaster is in control. Last run: ${timestamp}\n",
    }
}

但生成的 motd 文件没有日期/时间:

Production puppetmaster is in control. Last run:

我究竟做错了什么?

答案1

我根本不会使用generate(),这是无论如何都要避免的事情。

相反,看看标准库Puppet模块,具体有以下功能:

strftime()
time()

示例:以下函数调用将产生 YYYY-MM-DD HH:MM:SS 格式的时间戳:

$timestamp = stftime("%Y-%m-%d %k:%M:%S") 

答案2

如果你坚持使用来自 puppet 语言的内置函数 generate()你可以这样使用它:

$timestamp = generate('/bin/date', '+%Y%d%m %H:%M:%S')

一个更详细的例子是:

$myuptime = generate("/bin/sh", "-c", "/usr/bin/uptime | /usr/bin/awk '{ print \$3}' | cut -d, -f 1 ")

请注意引号和转义的 $ 符号的使用。
我使用 $myuptime 作为变量名称,因为 $uptime 也可用作内置变量。
在 Ubuntu 16.04 上的 puppet 版本 6.4.2 上进行了测试。

相关内容