www.nico.schottelius.org/blog/puppet-empties-new-and-exis...

47 lines
1.9 KiB
Markdown

[[!meta title="Puppet empties new and existing files"]]
After [we](http://sans.ethz.ch) changed our puppetmaster to run
under unicorn plus nginx and the first 2.6.0 client connected,
I realised that puppetd created empty files on the client.
Not even new files created are affected, but also existing
files.
It seems that [issue 4319](http://projects.puppetlabs.com/issues/4319)
is related to that problem, as the same entries are found in the
logfile.
The [[client reports about|debuglog]] duplicated files in the filebucket:
info: FileBucket got a duplicate file /etc/pam.d/common-password ({md5}d41d8cd98f00b204e9800998ecf8427e)
info: FileBucket got a duplicate file /etc/pam.d/common-account ({md5}d41d8cd98f00b204e9800998ecf8427e)
info: FileBucket got a duplicate file /etc/pam.d/common-auth ({md5}d41d8cd98f00b204e9800998ecf8427e)
But hey, they are duplicate, because they all have the same checksum!
And the checksum is everywhere the same, because all files are empty:
% touch test
% md5sum test
d41d8cd98f00b204e9800998ecf8427e test
In the syslog of the puppetmaster one can see
Oct 1 14:31:14 sans-puppetca puppetmaster_unicorn: 129.132.85.166 - - [01/Oct/2010 14:31:14] "GET /production/file_content//autofs/auto.net HTTP/1.0" 404 44 0.0012
So in essence, what happens is:
* puppetd 2.6.0 submits two slashes in the path (//)
* puppetmaster via unicorn does not find the file, because of the double slash
* puppetd sees the 404 error and creates a empty file
Switching to webbrick as a workaround works, because it accepts the two slashes.
Replacing the two slashes with one in the server does not fix the origin
of the problem, nor does it address the issue that puppetd creates
empty files, if it gets a 404 for the file content.
# Update #1
I switched over to use [[cdist|software/cdist]] instead of Puppet.
[[!tag config eth unix]]