Я пытаюсь научиться использовать марионетку, следуя их Краткое руководство пользователя.
Я хотел бы добавить отметку времени с помощью команды 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:
Что я делаю не так?
Я бы вообще не стал использовать generate (), этого следует избегать любой ценой.
Вместо этого взгляните на stdlib Модуль Puppet и, в частности, следующие функции:
strftime()
time()
Пример: следующий вызов функции приведет к созданию отметки времени в формате ГГГГ-ММ-ДД ЧЧ: ММ: СС:
$timestamp = stftime("%Y-%m-%d %k:%M:%S")
Если вы настаиваете на использовании встроенная функция 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 также доступен как встроенный.
Проверено на марионеточной версии 6.4.2 в Ubuntu 16.04.