diff options
author | crayfishx <craig@craigdunn.org> | 2012-09-25 09:39:25 -0700 |
---|---|---|
committer | crayfishx <craig@craigdunn.org> | 2012-09-25 09:39:25 -0700 |
commit | 7602f765546cd5d99ce8cf483cc3bedbe4fd0317 (patch) | |
tree | 0abe2fc7569707975ed63da2cd47aa605d2c815c /lib |
first commit
Diffstat (limited to 'lib')
-rw-r--r-- | lib/puppet/provider/gpgkey/gpgme.rb | 35 | ||||
-rw-r--r-- | lib/puppet/type/gpgkey.rb | 45 |
2 files changed, 80 insertions, 0 deletions
diff --git a/lib/puppet/provider/gpgkey/gpgme.rb b/lib/puppet/provider/gpgkey/gpgme.rb new file mode 100644 index 0000000..7a37f45 --- /dev/null +++ b/lib/puppet/provider/gpgkey/gpgme.rb @@ -0,0 +1,35 @@ +Puppet::Type.type(:gpgkey).provide(:gpgme) do + require 'gpgme' + def exists? + ! GPGME::Key.find(:secret, keyname()).empty? + end + + def create + ctx = GPGME::Ctx.new + keydata = "<GnupgKeyParms format=\"internal\">\n" + keydata += "Key-Type: " +@resource.value(:keytype)+"\n" + keydata += "Key-Length: " +@resource.value(:keylength)+"\n" + keydata += "Subkey-Type: " +@resource.value(:subkeytype)+"\n" + keydata += "Subkey-Length: " +@resource.value(:subkeylength)+"\n" + keydata += "Name-Real: " +@resource.value(:name)+"\n" + keydata += "Name-Comment: " +keyname()+"\n" + keydata += "Name-Email: " +@resource.value(:email)+"\n" + keydata += "Expire-Date: " +@resource.value(:expire)+"\n" + keydata += "</GnupgKeyParms>\n" + + ctx.genkey(keydata, nil, nil) + end + + def destroy + GPGME::Key.find(:secret, keyname()).each do |key| + key.delete!(true) + end + end + + private + def keyname + keyname = 'puppet#' + @resource.value(:name) + '#' + return keyname + end + +end diff --git a/lib/puppet/type/gpgkey.rb b/lib/puppet/type/gpgkey.rb new file mode 100644 index 0000000..83bbd6f --- /dev/null +++ b/lib/puppet/type/gpgkey.rb @@ -0,0 +1,45 @@ +Puppet::Type.newtype(:gpgkey) do + ensurable + @doc = "Creates and managed GPG keys through GPGME" + + newparam(:name, :namevar => true) do + desc 'The name of the GPG key, this will use the Real Name attribute of the key' + end + + newparam(:keytype) do + defaultto 'DSA' + desc 'GPG Key Type' + end + + newparam(:keylength) do + defaultto '1024' + desc 'Key Length (default 1024)' + end + + newparam(:subkeytype) do + defaultto 'RSA' + desc 'GPG Sub Key Type' + end + + newparam(:subkeylength) do + defaultto '1024' + desc 'Sub Key Length (default 1024)' + end + + newparam(:email) do + defaultto 'puppet@localhost' + end + + newparam(:expire) do + defaultto '0' + end + + newparam(:password) do + defaultto '' + end + + newparam(:armour) do + defaultto true + end + +end |