我正在尝试学习如何使用木偶,跟随他们的快速入门指南。
我想使用生成添加时间戳:
$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 上进行了测试。