puppet 4 foo
[mirror/dsa-puppet.git] / modules / motd / templates / motd.erb
index b54981b..f078a5f 100644 (file)
+#!/bin/bash
+
+cat <<EOD
 
 This device is for authorized users only.  All traffic on this device
-is monitored and will be used as evidence for prosecutions.
+is monitored and will be used as evidence for prosecutions.  By using
+this machine you agree to abide by the Debian Machines Usage Policies
+<URL:http://www.debian.org/devel/dmup>.
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 <%=
 def wrap(s, width=78)
-      s.gsub(/(.{1,#{width}})(\s+|\Z)/, "\\1\n")
+  #s.gsub(/(.{1,#{width}})(\s+|\Z)/, "\\1\n ")
+  s.split("\n").map{ |x|
+    if (x.length > width) then
+      #x.gsub!(/(.{1,#{width}}) +(?=\S)/, "\\1\n ")
+      x.gsub!(/(.{1,#{width}})( +|\Z)/, "\\1\n ")
+    end
+    x
+  }.join("\n")+"\n"
+end
+
+def markup(l)
+  l = l.gsub(/\[\[(.*?)\|(.*?)\]\]/, '\2')
+  l = l.gsub(/\[\[(\*|-)?(.*?)\]\]/, '\2')
+  return l
+end
+
+if scope.lookupvar('site::nodeinfo')['ldap'].has_key?('architecture')
+  arch = scope.lookupvar('site::nodeinfo')['ldap']['architecture'][0]
+else
+  arch = 'unknown'
 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"
 end
 
-purp += 'Welcome to ' + fqdn
-if (nodeinfo['ldap'].has_key?('purpose'))
-  if nodeinfo['ldap']['purpose'].include?('buildd')
-    purp += ", the Debian "
-    if nodeinfo['ldap'].has_key?('architecture')
-      purp += nodeinfo['ldap']['architecture'][0]
-    end
-    purp += " build daemon\n"
-  elsif nodeinfo['ldap']['purpose'].include?('porterbox')
-    purp += ", the Debian "
-    if nodeinfo['ldap'].has_key?('architecture')
-      purp += nodeinfo['ldap']['architecture'][0]
-    end
-    purp += " porterbox\n"
-    purp += "\n"
-    purp += "See 'dchroot -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"
+ninfo = scope.lookupvar('site::nodeinfo')
+
+extra = 'Welcome to ' + @fqdn
+if (scope.lookupvar('site::nodeinfo')['ldap'].has_key?('purpose'))
+  p = scope.lookupvar('site::nodeinfo')['ldap']['purpose'].clone()
+  entries = ""
+
+  if p.delete('buildd')
+    entries += ", the Debian #{arch} build daemon"
+  end
+  if p.delete('porterbox') or classes.include?("porterbox")
+    entries += ", the Debian #{arch} porterbox"
+  end
+
+  if p.size() > 0
+    entries += (entries == "") ? ", " : ".  Also"
+    entries +="used for the following services:\n"
+    scope.lookupvar('site::nodeinfo')['ldap']['purpose'].sort.each do |l|
+      l = markup(l)
+      entries += "\t#{l}\n"
     end
   else
-    purp += ", used for the following services:\n"
-    nodeinfo['ldap']['purpose'].sort.each do |l|
-      if l =~ /\[\[(\*|-)?(.*?)\]\]/
-        l = $2
-      end
-      if l =~ /\[\[(.*?)\|(.*?)\]\]/
-        l = $2
+    entries += ".\n"
+  end
+  extra += entries
+else
+  extra += "."
+end
+purp += " " + wrap(extra) + "\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 = []
+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
+unless vms.empty?
+  purp += "\nThe following virtual machines run on this system:\n"
+  vms.each do |node|
+    purp += "\t- #{node}"
+    if scope.lookupvar('site::allnodeinfo')[node]['purpose']
+      purp += ":\n"
+      scope.lookupvar('site::allnodeinfo')[node]['purpose'].sort.each do |l|
+        l = markup(l)
+        purp += "\t    " + l + "\n"
       end
-      purp += "\t" + l + "\n"
+    else
+      purp += "\n"
     end
   end
-else
-  purp += "\n"
 end
 
-if nodeinfo.has_key?('footer')
-  purp += "\n" + wrap(nodeinfo['footer']) + "\n"
+
+if scope.lookupvar('::cluster')
+  purp += "\n This server is a node in ganeti cluster: "
+  purp += scope.lookupvar('::cluster').to_s + ":\n"
+  purp += "\t" + scope.lookupvar('::cluster_nodes').split.sort.map{ |x| x.split('.')[0] }.join(", ") + ".\n"
+
+  purp += ""
+  purp += "\tCurrently the master node is $(cat /var/lib/ganeti/ssconf_master_node).\n"
+  #nodes = scope.lookupvar('::cluster_nodes').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 classes.include?("porterbox")
+  purp += "\n " + wrap("Disk space on porter boxes is often limited.  Please respect your fellow porters by cleaning up after yourself and deleting schroots and source/build trees in your ~ as soon as feasible.  DSA reserves the right to recover disk space as necessary.  See <URL:https://dsa.debian.org/doc/schroot/> for a brief tutorial on using schroot.  There may be chroots for architectures other than #{arch} available, please list available chroots to check.")
+end
+
+if ninfo['not-bacula-client'] then
+  purp += "\n " + wrap("Note that this host is _NOT_ being backed up.  If you care about your data, run your own backups.")
+end
+
+if scope.lookupvar('site::nodeinfo').has_key?('footer')
+  purp += "\n" + wrap(scope.lookupvar('site::nodeinfo')['footer'])
+end
+
 purp
 -%>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
+EOD
 <%
 # vim:set et:
 # vim:set sts=2 ts=2: