Just for the record:
That is not true for the filetype. The filetype has no default value for
ensure. If you do not specify ensure here it means: Manage the specified
attributes if file/directory is present, otherwise do nothing.
So if I e.g. just manage owner but not ensure and the resource is not
present...
# ls -l /tmp/test
ls: cannot access /tmp/test: No such file or directory
# puppet apply -ve 'file { "/tmp/test": owner => nobody }'
info: Applying configuration version '1338042729'
notice: Finished catalog run in 0.12 second
... puppet will not create the file. But if the file is present...
# touch /tmp/test
# puppet apply -ve 'file { "/tmp/test": owner => nobody }
info: Applying configuration version '1338042740'
notice: /Stage[main]//File[/tmp/test]/owner:
owner changed 'root' to 'nobody'
notice: Finished catalog run in 0.08 seconds
...Puppet will manage owner
-Stefan