7

super new to puppet. Could not find good example of how to add timestamp in a file puppet.pp

node '123' {
  file { '/tmp/hello':
    content => "hello world",
  }

  file { '/tmp/timestamped':
    content => 'date',
  }

Just wanted to print current date when this manifest is applied into the file timestamped

version is: 4.10

johnsnow
  • 171
  • 1
  • 4

2 Answers2

8

Puppet (any version)

If you are using version older than 4.8.0 you can use function strftime from the stdlib module.

Puppet (version ≥ 4.8.0)

If you are using newer version of Puppet you should use Timestamp.new().strftime().

Example (you only need to use one of the assignments):

# ISO 8601
$timestamp = Timestamp.new().strftime('%Y-%m-%dT%H:%M:%S%:z')
notice ($timestamp)

# RFC 822, 1036, 1124, 2822
$timestamp = Timestamp.new().strftime('%a, %d %b %Y %H:%M:%S %z')
notice ($timestamp)

file {'/tmp/timestamped':
   ensure  => file,
   content => "${timestamp}",
}
c4f4t0r
  • 5,301
  • 3
  • 31
  • 42
5

This should work. Use generate to create and assign to a variable. Then assign the variable to be the file's content.

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

file {'/tmp/timestamped':
   content => "$timestamp"
}
Sirch
  • 5,785
  • 4
  • 20
  • 36
  • 1
    Answer is great, but please change the date order to be ISO 8601 compliant! Someone might just copy paste this and then be in for a world of sorting troubles down the line. – Andy Foster Aug 09 '19 at 15:29
  • 1
    cheers @AndyFoster - compliance adopted – Sirch Aug 09 '19 at 16:24