Try to run bacula-fd as bacula, not root
[mirror/dsa-puppet.git] / modules / motd / templates / motd.erb
index 777ce8f..42edb0c 100644 (file)
@@ -1,3 +1,8 @@
+<% if @lsbmajdistrelease >= '7' -%>
+#!/bin/bash
+
+cat <<EOD
+<% end -%>
 
 This device is for authorized users only.  All traffic on this device
 is monitored and will be used as evidence for prosecutions.  By using
 
 This device is for authorized users only.  All traffic on this device
 is monitored and will be used as evidence for prosecutions.  By using
@@ -12,59 +17,89 @@ def wrap(s, width=78)
 end
 
 def markup(l)
 end
 
 def markup(l)
-  if l =~ /\[\[(\*|-)?(.*?)\]\]/
-    l = $2
-  end
-  if l =~ /\[\[(.*?)\|(.*?)\]\]/
-    l = $2
-  end
+  l = l.gsub(/\[\[(.*?)\|(.*?)\]\]/, '\2')
+  l = l.gsub(/\[\[(\*|-)?(.*?)\]\]/, '\2')
   return l
 end
 
 purp = ''
   return l
 end
 
 purp = ''
-if nodeinfo.has_key?('nameinfo')
-  purp += wrap(nodeinfo['nameinfo']) + "\n\n"
+if scope.lookupvar('site::nodeinfo').has_key?('nameinfo')
+  purp += wrap(scope.lookupvar('site::nodeinfo')['nameinfo']) + "\n\n"
 end
 
 end
 
+ninfo = scope.lookupvar('site::nodeinfo')
+
 purp += 'Welcome to ' + fqdn
 purp += 'Welcome to ' + fqdn
-if (nodeinfo['ldap'].has_key?('purpose'))
-  if nodeinfo['ldap']['purpose'].include?('buildd')
+if (scope.lookupvar('site::nodeinfo')['ldap'].has_key?('purpose'))
+  p = scope.lookupvar('site::nodeinfo')['ldap']['purpose'].clone()
+  extra = ''
+
+  if p.delete('buildd')
     purp += ", the Debian "
     purp += ", the Debian "
-    if nodeinfo['ldap'].has_key?('architecture')
-      purp += nodeinfo['ldap']['architecture'][0]
+    if scope.lookupvar('site::nodeinfo')['ldap'].has_key?('architecture')
+      purp += scope.lookupvar('site::nodeinfo')['ldap']['architecture'][0]
     end
     end
-    purp += " build daemon\n"
-  elsif nodeinfo['ldap']['purpose'].include?('porterbox')
+    purp += " build daemon"
+  end
+
+  if p.delete('porterbox')
     purp += ", the Debian "
     purp += ", the Debian "
-    if nodeinfo['ldap'].has_key?('architecture')
-      purp += nodeinfo['ldap']['architecture'][0]
+    if scope.lookupvar('site::nodeinfo')['ldap'].has_key?('architecture')
+      purp += scope.lookupvar('site::nodeinfo')['ldap']['architecture'][0]
     end
     end
-    purp += " porterbox\n"
-    purp += "\n"
-    purp += "See 'dchroot -l' or 'schroot -l' for a list of available chroots.\n"
-    if nodeinfo['ldap'].has_key?('admin')
-      purp += "Please contact #{nodeinfo['ldap']['admin'][0]} for install requests,\n"
-      purp += "following the recommendations in <URL:http://dsa.debian.org/doc/install-req/>.\n"
+    purp += " porterbox"
+    extra += "\n"
+    if classes.include?("porterbox")
+      extra += "See 'schroot -l' for a list of available chroots.  Start new sessions\n"
+      extra += "with 'schroot --begin-session -c <chroot>', run commands in sessions using\n"
+      extra += "'schroot --run-session -c <session> [-- command]', and tear down sessions\n"
+      extra += "using 'schroot --end-session -c <session>'.  You can run a limited set of\n"
+      extra += "privileged commands, for instance some of apt-get, using\n"
+      extra += "'dd-schroot-cmd -c <session> <command>'.\n"
+      extra += "Use 'schroot-list-sessions' to list your open sessions.\n"
+    else
+      extra += "See 'dchroot -l' or 'schroot -l' for a list of available chroots.\n"
+      if scope.lookupvar('site::nodeinfo')['ldap'].has_key?('admin')
+        extra += "Please contact #{ninfo['ldap']['admin'][0]} for install requests,\n"
+        extra += "following the recommendations in <URL:http://dsa.debian.org/doc/install-req/>.\n"
+      end
     end
     end
-  else
+  end
+
+  if p.size() > 0
     purp += ", used for the following services:\n"
     purp += ", used for the following services:\n"
-    nodeinfo['ldap']['purpose'].sort.each do |l|
+    scope.lookupvar('site::nodeinfo')['ldap']['purpose'].sort.each do |l|
       l = markup(l)
       purp += "\t" + l + "\n"
     end
       l = markup(l)
       purp += "\t" + l + "\n"
     end
+  else
+    purp += ".\n"
   end
   end
+
+  purp += extra
 else
 else
-  purp += "\n"
+  purp += ".\n"
 end
 
 end
 
-if (nodeinfo['ldap'].has_key?('physicalHost'))
-  purp += "\nThis virtual server runs on the physical host #{nodeinfo['ldap']['physicalHost'][0]}.\n"
+purp += "\n"
+
+if (scope.lookupvar('site::nodeinfo')['ldap'].has_key?('physicalHost'))
+  if ninfo['ldap']['physicalHost'][0] =~ /ganeti/
+    phys_host = 'cluster'
+  else
+    phys_host = 'physical host'
+  end
+  purp += wrap("This virtual server runs on the #{phys_host} #{ninfo['ldap']['physicalHost'][0]}, " +
+               "which is hosted at #{ninfo['hoster']['longname']}."
+               )
+elsif scope.lookupvar('site::nodeinfo')['hoster']['name']
+  purp += wrap("This server is hosted at #{ninfo['hoster']['longname']}.")
 end
 
 
 vms = []
 end
 
 
 vms = []
-allnodeinfo.keys.sort.each do |node|
-  if allnodeinfo[node]['physicalHost'] and allnodeinfo[node]['physicalHost'].include?(fqdn)
+scope.lookupvar('site::allnodeinfo').keys.sort.each do |node|
+  if scope.lookupvar('site::allnodeinfo')[node]['physicalHost'] and scope.lookupvar('site::allnodeinfo')[node]['physicalHost'].include?(fqdn)
     vms << node
   end
 end
     vms << node
   end
 end
@@ -72,9 +107,9 @@ unless vms.empty?
   purp += "\nThe following virtual machines run on this system:\n"
   vms.each do |node|
     purp += "\t- #{node}"
   purp += "\nThe following virtual machines run on this system:\n"
   vms.each do |node|
     purp += "\t- #{node}"
-    if allnodeinfo[node]['purpose']
+    if scope.lookupvar('site::allnodeinfo')[node]['purpose']
       purp += ":\n"
       purp += ":\n"
-      allnodeinfo[node]['purpose'].sort.each do |l|
+      scope.lookupvar('site::allnodeinfo')[node]['purpose'].sort.each do |l|
         l = markup(l)
         purp += "\t    " + l + "\n"
       end
         l = markup(l)
         purp += "\t    " + l + "\n"
       end
@@ -85,14 +120,34 @@ unless vms.empty?
 end
 
 
 end
 
 
-if nodeinfo.has_key?('footer')
-  purp += "\n" + wrap(nodeinfo['footer']) + "\n"
+if scope.lookupvar('::cluster').to_s != 'undefined'
+  purp += "\nThis server is a node in ganeti cluster: "
+  purp += scope.lookupvar('::cluster').to_s + ".\n"
+  nodes = scope.lookupvar('::cluster_nodes').to_s.split.sort
+  nodes.each do |node|
+    purp += "\t" + node + "\n"
+  end
+  nodes.reject{|node| node.eql?(fqdn)}.each do |node|
+    purp += "\t" + node + "\n"
+    scope.lookupvar('site::allnodeinfo')[node]['ipHostNumber'].each do |ip|
+      purp += "\t\t" + ip + "\n"
+    end
+  end
+end
+
+
+if scope.lookupvar('site::nodeinfo').has_key?('footer')
+  purp += "\n" + wrap(scope.lookupvar('site::nodeinfo')['footer']) + "\n"
 end
 end
+
 purp
 -%>
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 purp
 -%>
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
+<% if @lsbmajdistrelease >= '7' -%>
+EOD
+<% end -%>
 <%
 # vim:set et:
 # vim:set sts=2 ts=2:
 <%
 # vim:set et:
 # vim:set sts=2 ts=2: