]> git.donarmstrong.com Git - dsa-puppet.git/commitdiff
Try returning an info hash for a hoster - this will fail
authorPeter Palfrader <peter@palfrader.org>
Tue, 1 Mar 2011 10:50:22 +0000 (11:50 +0100)
committerPeter Palfrader <peter@palfrader.org>
Tue, 1 Mar 2011 10:50:22 +0000 (11:50 +0100)
manifests/site.pp
modules/puppetmaster/lib/puppet/parser/functions/getfromhash.rb [new file with mode: 0644]
modules/puppetmaster/lib/puppet/parser/functions/whohosts.rb
modules/resolv/templates/resolv.conf.erb
modules/ssh/templates/authorized_keys.erb

index 3e5e5f312153af9bc5764a539457e84edebd7631..895a84dd1f2d7c31165e7b1bec6990a8fe684d0f 100644 (file)
@@ -16,10 +16,10 @@ Exec {
 node default {
     $localinfo = yamlinfo('*', "/etc/puppet/modules/debian-org/misc/local.yaml")
     $nodeinfo  = nodeinfo($fqdn, "/etc/puppet/modules/debian-org/misc/local.yaml")
-    $hoster    = whohosts($nodeinfo, "/etc/puppet/modules/debian-org/misc/hoster.yaml")
+    $hosterinfo = whohosts($nodeinfo, "/etc/puppet/modules/debian-org/misc/hoster.yaml")
     $keyinfo   = allnodeinfo("sshRSAHostKey", "ipHostNumber", "purpose")
     $mxinfo    = allnodeinfo("mXRecord")
-    notice("hoster for ${fqdn} is ${hoster}")
+    notice("hoster for ${fqdn} is ${getfromhash(hosterinfo, "name")}")
 
     include munin-node
     include syslog-ng
@@ -122,7 +122,7 @@ node default {
     case $brokenhosts {
         "true":    { include hosts }
     }
-    case $hoster {
+    case getfromhash($hosterinfo, "name") {
         "ubcece", "darmstadt", "ftcollins", "grnet":  { include resolv }
     }
     case $portforwarder_user_exists {
diff --git a/modules/puppetmaster/lib/puppet/parser/functions/getfromhash.rb b/modules/puppetmaster/lib/puppet/parser/functions/getfromhash.rb
new file mode 100644 (file)
index 0000000..e948929
--- /dev/null
@@ -0,0 +1,18 @@
+module Puppet::Parser::Functions
+  newfunction(:getfromhash, :type => :rvalue) do |args|
+    h = args.shift
+    key = args.shift
+
+    raise Puppet::ParseError, "argument is not a hash" unless h.kind_of?(Hash)
+    if h.has_key?(key)
+      ans = h[key]
+    else
+      ans = false
+    end
+
+    return ans
+  end
+end
+# vim:set et:
+# vim:set sts=2 ts=2:
+# vim:set shiftwidth=2:
index 780afa1d0c947c7e698be9399fecc910e14af23e..022ca895af991943211fefb06c4dc166f31b8ee1 100644 (file)
@@ -9,7 +9,7 @@ module Puppet::Parser::Functions
 
     $KCODE = 'utf-8'
 
-    ans = "unknown"
+    ans = {"name": "unknown"}
     yaml = YAML.load_file(yamlfile)
 
     if (nodeinfo['ldap'].has_key?('ipHostNumber'))
@@ -24,7 +24,8 @@ module Puppet::Parser::Functions
           netrange.each do |net|
             begin
               if IPAddr.new(net).include?(addr)
-                ans = hoster
+                ans = yaml[hoster]
+                ans['name'] = hoster
               end
             rescue Exception => e
               raise "Error while trying to match addr #{addr} for net #{net}: #{e.message}\n#{e.backtrace}"
index 84c98368b379040ff1c10a21a65e14e2625a74cf..e5ddafe046b2d8d61f80bf4a8798d2b5cdb732b1 100644 (file)
@@ -8,7 +8,7 @@ nameservers = []
 searchpaths = []
 resolvconf  = ''
 
-case hoster
+case hosterinfo["name"]
   when "darmstadt" then
     case hostname
       when "draghi", "liszt" then
index 2d9915211519c4790bfba065622c26e823523b47..2a546ebe248f3ea8fed744772b201ecd46990e91 100644 (file)
@@ -1,5 +1,5 @@
 # local admin
-<%= hosterkeys = case hoster
+<%= hosterkeys = case hosterinfo['name']
          when "ubcece" then
          "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvEEyxznxleAhk98K7SkAeAKWibijL5uFjIl1+tr8rz+XmFsjabTK2+hQXkgzmU+jqQ2+MPp6btfAq9Oe27GQYWUFfsAZMRb907dReFQYPKbPhQZoo5LUfkrCiR3tD0Nm2JfepTV0079K1+Q50EMImttwbI94FfSoSgTxgF4rCoLpUgmF0IHDR1+kTGow7YnuS1Y/I1zKAbofg8KBGXOLArkcZbxArt25Y2wlnE+ZHIb3Rn3pYc3/KmPPvEQy9IkR/uzzkWSaCBVMFJEO0ejjWrV4HR64GlKUPQ0CekSYn1EErY55CF5sWkasXhflluwSf7b+/jedDM1A1Vrp9Z/F8Q== chrisd"
     end