Назад | Перейти на главную страницу

Пример использования generate ('…') в марионетке

Я пытаюсь научиться использовать марионетку, следуя их Краткое руководство пользователя.

Я хотел бы добавить отметку времени с помощью команды 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.