summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorFrancois Deppierraz <francois.deppierraz@camptocamp.com>2008-06-27 09:32:12 +0200
committerFrancois Deppierraz <francois.deppierraz@camptocamp.com>2008-06-27 09:50:58 +0200
commit8c5c949b37d3af4439c713e6c6e57e8f4b0415ac (patch)
tree1feee6d5099e53698f4512318742efcdca3e5f06 /lib/puppet
parent00182ff96f18b54aa659a1909c23ba1aba253cd8 (diff)
downloadpuppet-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.rb16
-rw-r--r--lib/puppet/type/ssh_authorized_key.rb36
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