X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=modules%2Fmotd%2Ftemplates%2Fmotd.erb;h=f078a5f45cc869df72b74d34606bdd06bfc147a1;hb=249b713a08d35bffb1cd52739be6f5808baa5a5f;hp=2b51dceebf442a8f3bcec513904e59c5b5837f67;hpb=483f9c11e2419da2aa3fe83f306a2adf5f6938ef;p=mirror%2Fdsa-puppet.git diff --git a/modules/motd/templates/motd.erb b/modules/motd/templates/motd.erb index 2b51dceeb..f078a5f45 100644 --- a/modules/motd/templates/motd.erb +++ b/modules/motd/templates/motd.erb @@ -1,63 +1,147 @@ +#!/bin/bash + +cat <. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <%= 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 .\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" + 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 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: