Access file in clientbucket of puppet with a file resource
When puppet replaces an already existing file, it stores the old content into the clientbucket and returns the hash value of this version. To restore a file from the clientbucket you normaly use the puppet clientbucket command with this hash on the node. But it’s also possible to define a “special” file resource, to restore the content form the clientbucket to a newly defined file.
Let me explain this “feature” with a small example.
On the last puppet run the content of the file /etc/fstab
was stored into the clientbucket with the hash value 77461bf606abbbd17f88a806fc21562b.
You can now define a file resource to restore the content of this stored file into a new file /tmp/old-fstab
.
file { '/tmp/old-fstab':
ensure => file,
content => "{md5}77461bf606abbbd17f88a806fc21562b",
}
Place this resource in an module or place the definition directly into the node resource.
On the next puppet run the defined file /tmp/old-fstab
will be created.
The “magic” content ensures, that the newly created file contains the content of the file in the clientbucket with the given hash value.
I don’t know if this is a bug or a feature. I couldn’t find any “offical” documentation of this behaviour. But this method works fine in the puppet versions 2.6, 2.7 and 3.3.