+<% if @lsbmajdistrelease >= '7' -%>
+#!/bin/bash
-This device is for authorized users only. All traffic on this device
-is monitored and will be used as evidence for prosecutions.
+cat <<EOD
+<% end -%>
-** IMPORTANT WARNING **
+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 machine you agree to abide by the Debian Machines Usage Policies
+<URL:http://www.debian.org/devel/dmup>.
-Please read:
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-http://lists.debian.org/debian-devel-announce/2003/debian-devel-announce-200312/msg00001.html
+<%=
+def wrap(s, width=78)
+ #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
-before doing anything on these machines - especially the "What to do
-when you can login" section.
+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 += 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'].at(0)) and (nodeinfo['ldap'][0].has_key?('purpose'))
- if nodeinfo['ldap'][0]['purpose'].include?('buildd')
- purp += ", the Debian "
- if nodeinfo['ldap'][0].has_key?('architecture')
- purp += nodeinfo['ldap'][0]['architecture'][0]
- end
- purp += " build daemon\n"
- elsif nodeinfo['ldap'][0]['purpose'].include?('porterbox')
- purp += ", the Debian "
- if nodeinfo['ldap'][0].has_key?('architecture')
- purp += nodeinfo['ldap'][0]['architecture'][0]
+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
- purp += " porterbox\n"
else
- purp += ", used for the following services:\n"
- nodeinfo['ldap'][0]['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').to_s != 'undefined'
+ purp += "\n This server is a node in ganeti cluster: "
+ purp += scope.lookupvar('::cluster').to_s + ":\n"
+ purp += "\t" + scope.lookupvar('::cluster_nodes').sort.map{ |x| x.split('.')[0] }.join(", ") + ".\n"
+
+ if @lsbmajdistrelease >= '7'
+ purp += ""
+ purp += "\tCurrently the master node is $(cat /var/lib/ganeti/ssconf_master_node).\n"
+ end
+ #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:http://dsa.debian.org/doc/schroot/> for a brief tutorial on using schroot.")
+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
-%>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
+<% if @lsbmajdistrelease >= '7' -%>
+EOD
+<% end -%>
+<%
+# vim:set et:
+# vim:set sts=2 ts=2:
+# vim:set shiftwidth=2:
+-%>