diff options
author | Francois Deppierraz <francois.deppierraz@camptocamp.com> | 2008-06-27 09:32:12 +0200 |
---|---|---|
committer | Francois Deppierraz <francois.deppierraz@camptocamp.com> | 2008-06-27 09:50:58 +0200 |
commit | 8c5c949b37d3af4439c713e6c6e57e8f4b0415ac (patch) | |
tree | 1feee6d5099e53698f4512318742efcdca3e5f06 /lib/puppet | |
parent | 00182ff96f18b54aa659a1909c23ba1aba253cd8 (diff) | |
download | puppet-8c5c949b37d3af4439c713e6c6e57e8f4b0415ac.tar.gz puppet-8c5c949b37d3af4439c713e6c6e57e8f4b0415ac.tar.xz puppet-8c5c949b37d3af4439c713e6c6e57e8f4b0415ac.zip |
ssh_authorized_key: autorequire, default permissions and cleanup
Autorequire the target file and its parent directory as well.
Default permissions and owner are now set on the file and its
parent directory.
Moved target attribute setting code from prefetch() in the provider to the type
itself. This seems much cleaner to me.
Diffstat (limited to 'lib/puppet')
-rw-r--r-- | lib/puppet/provider/ssh_authorized_key/parsed.rb | 16 | ||||
-rw-r--r-- | lib/puppet/type/ssh_authorized_key.rb | 36 |
2 files changed, 36 insertions, 16 deletions
diff --git a/lib/puppet/provider/ssh_authorized_key/parsed.rb b/lib/puppet/provider/ssh_authorized_key/parsed.rb index 7cb6626de..351ebcd1b 100644 --- a/lib/puppet/provider/ssh_authorized_key/parsed.rb +++ b/lib/puppet/provider/ssh_authorized_key/parsed.rb @@ -29,21 +29,5 @@ Puppet::Type.type(:ssh_authorized_key).provide(:parsed, record[:options] = record[:options].join(',') end } - - def prefetch - if not @resource.should(:target) - # - # Set default target when user is given - if val = @resource.should(:user) - target = File.expand_path("~%s/.ssh/authorized_keys" % val) - Puppet::debug("Setting target to %s" % target) - @resource[:target] = target - else - raise Puppet::Error, "Missing attribute 'user' or 'target'" - end - end - - super - end end diff --git a/lib/puppet/type/ssh_authorized_key.rb b/lib/puppet/type/ssh_authorized_key.rb index e28fb7cda..650ebd879 100644 --- a/lib/puppet/type/ssh_authorized_key.rb +++ b/lib/puppet/type/ssh_authorized_key.rb @@ -27,6 +27,11 @@ module Puppet newproperty(:user) do desc "The user account in which the ssh key should be installed." + + def value=(value) + @resource[:target] = File.expand_path("~%s/.ssh/authorized_keys" % value) + super + end end newproperty(:target) do @@ -39,6 +44,37 @@ module Puppet defaultto do :absent end end + + autorequire(:file) do + atype = Puppet::Type.type(:file) + target = self.should(:target) + dir = File.dirname(target) + user = should(:user) ? should(:user) : "root" + + rels = [] + + unless atype[dir] + rels << atype.create(:name => dir, :ensure => :directory, :mode => 0700, :owner => user) + end + + unless atype[target] + rels << atype.create(:name => target, :ensure => :present, :mode => 0600, :owner => user) + end + + rels + end + + autorequire(:user) do + if should(:user) + should(:user) + end + end + + validate do + unless should(:target) + raise Puppet::Error, "Attribute 'user' or 'target' is mandatory" + end + end end end |