committing recent changes getting ready for push
authorAndy Witter <awitter@georgialibraries.org>
Thu, 26 Apr 2012 12:05:36 +0000 (08:05 -0400)
committerroot <root@pines-dev.pls-hq.org>
Thu, 26 Apr 2012 12:06:39 +0000 (08:06 -0400)
README.html [new file with mode: 0644]
templates/logger/archive.sh [new file with mode: 0644]

diff --git a/README.html b/README.html
new file mode 100644 (file)
index 0000000..bd80719
--- /dev/null
@@ -0,0 +1,804 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title></title>\r
+<style type="text/css">\r
+/* Sans-serif font. */\r
+h1, h2, h3, h4, h5, h6,\r
+div.title, caption.title,\r
+thead, p.table.header,\r
+div#toctitle,\r
+span#author, span#revnumber, span#revdate, span#revremark,\r
+div#footer {\r
+  font-family: Arial,Helvetica,sans-serif;\r
+}\r
+\r
+/* Serif font. */\r
+div.sectionbody {\r
+  font-family: Georgia,"Times New Roman",Times,serif;\r
+}\r
+\r
+/* Monospace font. */\r
+tt {\r
+  font-size: inherit;\r
+}\r
+\r
+body {\r
+  margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a {\r
+  color: blue;\r
+  text-decoration: underline;\r
+}\r
+a:visited {\r
+  color: fuchsia;\r
+}\r
+\r
+em {\r
+  font-style: italic;\r
+  color: navy;\r
+}\r
+\r
+strong {\r
+  font-weight: bold;\r
+  color: #083194;\r
+}\r
+\r
+tt {\r
+  font-size: inherit;\r
+  color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+  color: #527bbd;\r
+  margin-top: 1.2em;\r
+  margin-bottom: 0.5em;\r
+  line-height: 1.3;\r
+}\r
+\r
+h1, h2, h3 {\r
+  border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+  padding-top: 0.5em;\r
+}\r
+h3 {\r
+  float: left;\r
+}\r
+h3 + * {\r
+  clear: left;\r
+}\r
+\r
+div.sectionbody {\r
+  margin-left: 0;\r
+}\r
+\r
+hr {\r
+  border: 1px solid silver;\r
+}\r
+\r
+p {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0.5em;\r
+}\r
+\r
+ul, ol, li > p {\r
+  margin-top: 0;\r
+}\r
+ul > li     { color: #aaa; }\r
+ul > li > * { color: black; }\r
+\r
+pre {\r
+  padding: 0;\r
+  margin: 0;\r
+}\r
+\r
+span#author {\r
+  color: #527bbd;\r
+  font-weight: bold;\r
+  font-size: 1.1em;\r
+}\r
+span#email {\r
+}\r
+span#revnumber, span#revdate, span#revremark {\r
+}\r
+\r
+div#footer {\r
+  font-size: small;\r
+  border-top: 2px solid silver;\r
+  padding-top: 0.5em;\r
+  margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+  float: left;\r
+  padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+  float: right;\r
+  padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble {\r
+  margin-top: 1.5em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+  margin-top: 1.0em;\r
+  margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+  margin-top: 2.0em;\r
+  margin-bottom: 2.0em;\r
+  margin-right: 10%;\r
+  color: #606060;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+  padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+  color: #527bbd;\r
+  font-weight: bold;\r
+  text-align: left;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+  margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+  margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+  margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+  background: #ffffee;\r
+  border: 1px solid #dddddd;\r
+  border-left: 4px solid #f0f0f0;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+  border: 1px solid #dddddd;\r
+  border-left: 5px solid #f0f0f0;\r
+  background: #f8f8f8;\r
+  padding: 0.5em;\r
+}\r
+\r
+div.quoteblock, div.verseblock {\r
+  padding-left: 1.0em;\r
+  margin-left: 1.0em;\r
+  margin-right: 10%;\r
+  border-left: 5px solid #f0f0f0;\r
+  color: #777777;\r
+}\r
+\r
+div.quoteblock > div.attribution {\r
+  padding-top: 0.5em;\r
+  text-align: right;\r
+}\r
+\r
+div.verseblock > pre.content {\r
+  font-family: inherit;\r
+  font-size: inherit;\r
+}\r
+div.verseblock > div.attribution {\r
+  padding-top: 0.75em;\r
+  text-align: left;\r
+}\r
+/* DEPRECATED: Pre version 8.2.7 verse style literal block. */\r
+div.verseblock + div.attribution {\r
+  text-align: left;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+  vertical-align: top;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  text-decoration: underline;\r
+  color: #527bbd;\r
+  padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+  padding-left: 0.5em;\r
+  border-left: 3px solid #dddddd;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+  border-left: 3px solid #dddddd;\r
+  padding-left: 0.5em;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+span.image img { border-style: none; }\r
+a.image:visited { color: white; }\r
+\r
+dl {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+dt {\r
+  margin-top: 0.5em;\r
+  margin-bottom: 0;\r
+  font-style: normal;\r
+  color: navy;\r
+}\r
+dd > *:first-child {\r
+  margin-top: 0.1em;\r
+}\r
+\r
+ul, ol {\r
+    list-style-position: outside;\r
+}\r
+ol.arabic {\r
+  list-style-type: decimal;\r
+}\r
+ol.loweralpha {\r
+  list-style-type: lower-alpha;\r
+}\r
+ol.upperalpha {\r
+  list-style-type: upper-alpha;\r
+}\r
+ol.lowerroman {\r
+  list-style-type: lower-roman;\r
+}\r
+ol.upperroman {\r
+  list-style-type: upper-roman;\r
+}\r
+\r
+div.compact ul, div.compact ol,\r
+div.compact p, div.compact p,\r
+div.compact div, div.compact div {\r
+  margin-top: 0.1em;\r
+  margin-bottom: 0.1em;\r
+}\r
+\r
+div.tableblock > table {\r
+  border: 3px solid #527bbd;\r
+}\r
+thead, p.table.header {\r
+  font-weight: bold;\r
+  color: #527bbd;\r
+}\r
+tfoot {\r
+  font-weight: bold;\r
+}\r
+td > div.verse {\r
+  white-space: pre;\r
+}\r
+p.table {\r
+  margin-top: 0;\r
+}\r
+/* Because the table frame attribute is overriden by CSS in most browsers. */\r
+div.tableblock > table[frame="void"] {\r
+  border-style: none;\r
+}\r
+div.tableblock > table[frame="hsides"] {\r
+  border-left-style: none;\r
+  border-right-style: none;\r
+}\r
+div.tableblock > table[frame="vsides"] {\r
+  border-top-style: none;\r
+  border-bottom-style: none;\r
+}\r
+\r
+\r
+div.hdlist {\r
+  margin-top: 0.8em;\r
+  margin-bottom: 0.8em;\r
+}\r
+div.hdlist tr {\r
+  padding-bottom: 15px;\r
+}\r
+dt.hdlist1.strong, td.hdlist1.strong {\r
+  font-weight: bold;\r
+}\r
+td.hdlist1 {\r
+  vertical-align: top;\r
+  font-style: normal;\r
+  padding-right: 0.8em;\r
+  color: navy;\r
+}\r
+td.hdlist2 {\r
+  vertical-align: top;\r
+}\r
+div.hdlist.compact tr {\r
+  margin: 0;\r
+  padding-bottom: 0;\r
+}\r
+\r
+.comment {\r
+  background: yellow;\r
+}\r
+\r
+.footnote, .footnoteref {\r
+  font-size: 0.8em;\r
+}\r
+\r
+span.footnote, span.footnoteref {\r
+  vertical-align: super;\r
+}\r
+\r
+#footnotes {\r
+  margin: 20px 0 20px 0;\r
+  padding: 7px 0 0 0;\r
+}\r
+\r
+#footnotes div.footnote {\r
+  margin: 0 0 5px 0;\r
+}\r
+\r
+#footnotes hr {\r
+  border: none;\r
+  border-top: 1px solid silver;\r
+  height: 1px;\r
+  text-align: left;\r
+  margin-left: 0;\r
+  width: 20%;\r
+  min-width: 100px;\r
+}\r
+\r
+div.colist td {\r
+  padding-right: 0.5em;\r
+  padding-bottom: 0.3em;\r
+  vertical-align: top;\r
+}\r
+div.colist td img {\r
+  margin-top: 0.3em;\r
+}\r
+\r
+@media print {\r
+  div#footer-badges { display: none; }\r
+}\r
+\r
+div#toc {\r
+  margin-bottom: 2.5em;\r
+}\r
+\r
+div#toctitle {\r
+  color: #527bbd;\r
+  font-size: 1.1em;\r
+  font-weight: bold;\r
+  margin-top: 1.0em;\r
+  margin-bottom: 0.1em;\r
+}\r
+\r
+div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {\r
+  margin-top: 0;\r
+  margin-bottom: 0;\r
+}\r
+div.toclevel2 {\r
+  margin-left: 2em;\r
+  font-size: 0.9em;\r
+}\r
+div.toclevel3 {\r
+  margin-left: 4em;\r
+  font-size: 0.9em;\r
+}\r
+div.toclevel4 {\r
+  margin-left: 6em;\r
+  font-size: 0.9em;\r
+}\r
+\r
+span.aqua { color: aqua; }\r
+span.black { color: black; }\r
+span.blue { color: blue; }\r
+span.fuchsia { color: fuchsia; }\r
+span.gray { color: gray; }\r
+span.green { color: green; }\r
+span.lime { color: lime; }\r
+span.maroon { color: maroon; }\r
+span.navy { color: navy; }\r
+span.olive { color: olive; }\r
+span.purple { color: purple; }\r
+span.red { color: red; }\r
+span.silver { color: silver; }\r
+span.teal { color: teal; }\r
+span.white { color: white; }\r
+span.yellow { color: yellow; }\r
+\r
+span.aqua-background { background: aqua; }\r
+span.black-background { background: black; }\r
+span.blue-background { background: blue; }\r
+span.fuchsia-background { background: fuchsia; }\r
+span.gray-background { background: gray; }\r
+span.green-background { background: green; }\r
+span.lime-background { background: lime; }\r
+span.maroon-background { background: maroon; }\r
+span.navy-background { background: navy; }\r
+span.olive-background { background: olive; }\r
+span.purple-background { background: purple; }\r
+span.red-background { background: red; }\r
+span.silver-background { background: silver; }\r
+span.teal-background { background: teal; }\r
+span.white-background { background: white; }\r
+span.yellow-background { background: yellow; }\r
+\r
+span.big { font-size: 2em; }\r
+span.small { font-size: 0.6em; }\r
+</style>\r
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+window.onload = function(){asciidoc.footnotes();}\r
+var asciidoc = {  // Namespace.\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Table Of Contents generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Author: Mihai Bazon, September 2002\r
+ * http://students.infoiasi.ro/~mishoo\r
+ *\r
+ * Table Of Content generator\r
+ * Version: 0.4\r
+ *\r
+ * Feel free to use this script under the terms of the GNU General Public\r
+ * License, as long as you do not remove or alter this notice.\r
+ */\r
+\r
+ /* modified by Troy D. Hanson, September 2006. License: GPL */\r
+ /* modified by Stuart Rackham, 2006, 2009. License: GPL */\r
+\r
+// toclevels = 1..4.\r
+toc: function (toclevels) {\r
+\r
+  function getText(el) {\r
+    var text = "";\r
+    for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.\r
+        text += i.data;\r
+      else if (i.firstChild != null)\r
+        text += getText(i);\r
+    }\r
+    return text;\r
+  }\r
+\r
+  function TocEntry(el, text, toclevel) {\r
+    this.element = el;\r
+    this.text = text;\r
+    this.toclevel = toclevel;\r
+  }\r
+\r
+  function tocEntries(el, toclevels) {\r
+    var result = new Array;\r
+    var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');\r
+    // Function that scans the DOM tree for header elements (the DOM2\r
+    // nodeIterator API would be a better technique but not supported by all\r
+    // browsers).\r
+    var iterate = function (el) {\r
+      for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
+        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {\r
+          var mo = re.exec(i.tagName);\r
+          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {\r
+            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);\r
+          }\r
+          iterate(i);\r
+        }\r
+      }\r
+    }\r
+    iterate(el);\r
+    return result;\r
+  }\r
+\r
+  var toc = document.getElementById("toc");\r
+  var entries = tocEntries(document.getElementById("content"), toclevels);\r
+  for (var i = 0; i < entries.length; ++i) {\r
+    var entry = entries[i];\r
+    if (entry.element.id == "")\r
+      entry.element.id = "_toc_" + i;\r
+    var a = document.createElement("a");\r
+    a.href = "#" + entry.element.id;\r
+    a.appendChild(document.createTextNode(entry.text));\r
+    var div = document.createElement("div");\r
+    div.appendChild(a);\r
+    div.className = "toclevel" + entry.toclevel;\r
+    toc.appendChild(div);\r
+  }\r
+  if (entries.length == 0)\r
+    toc.parentNode.removeChild(toc);\r
+},\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////\r
+// Footnotes generator\r
+/////////////////////////////////////////////////////////////////////\r
+\r
+/* Based on footnote generation code from:\r
+ * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html\r
+ */\r
+\r
+footnotes: function () {\r
+  var cont = document.getElementById("content");\r
+  var noteholder = document.getElementById("footnotes");\r
+  var spans = cont.getElementsByTagName("span");\r
+  var refs = {};\r
+  var n = 0;\r
+  for (i=0; i<spans.length; i++) {\r
+    if (spans[i].className == "footnote") {\r
+      n++;\r
+      // Use [\s\S] in place of . so multi-line matches work.\r
+      // Because JavaScript has no s (dotall) regex flag.\r
+      note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+      noteholder.innerHTML +=\r
+        "<div class='footnote' id='_footnote_" + n + "'>" +\r
+        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
+        n + "</a>. " + note + "</div>";\r
+      spans[i].innerHTML =\r
+        "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+        "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+      var id =spans[i].getAttribute("id");\r
+      if (id != null) refs["#"+id] = n;\r
+    }\r
+  }\r
+  if (n == 0)\r
+    noteholder.parentNode.removeChild(noteholder);\r
+  else {\r
+    // Process footnoterefs.\r
+    for (i=0; i<spans.length; i++) {\r
+      if (spans[i].className == "footnoteref") {\r
+        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");\r
+        href = href.match(/#.*/)[0];  // Because IE return full URL.\r
+        n = refs[href];\r
+        spans[i].innerHTML =\r
+          "[<a href='#_footnote_" + n +\r
+          "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+      }\r
+    }\r
+  }\r
+}\r
+\r
+}\r
+/*]]>*/\r
+</script>\r
+</head>\r
+<body class="article">\r
+<div id="header">\r
+</div>\r
+<div id="content">\r
+<div class="sect1">\r
+<h2 id="_installation_via_genasys">Installation Via GenaSYS</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Copyright &#169; Georgia Public Library Service</p></div>\r
+<div class="paragraph"><p>GenaSYS is an Evergreen cluster installation program developed by the Georgia Public Library Service and its contractors.</p></div>\r
+<div class="sect2">\r
+<h3 id="_assumptions">Assumptions</h3>\r
+<div class="paragraph"><p>GenaSYS makes the following assumptions about the hardware setup Evergreen is being installed upon:</p></div>\r
+<div class="paragraph"><p>Network:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+3 public IP addresses available\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+a DNS-addressable domain name (e.g., "gapines.org")\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>Hardware (actual or virtual):</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+2 LVS machines\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+2 or more brick head machines (drone machines are optional)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+1 utility server\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+2 SIP2 servers\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+2 memcached servers\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+3 database servers\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+1 reports server\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+1 logger server\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+1 backup server\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+1 monitoring server\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+1 administration server\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>Software:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+base installation of Debian squeeze on each server\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_usage">Usage</h3>\r
+<div class="sect3">\r
+<h4 id="_custom_files">Custom Files</h4>\r
+<div class="paragraph"><p><strong>Library IP based redirection:</strong>\r
+If you are going be using Library based redirection then\r
+copy a preconfigured lib_ips.txt\r
+file to the  /home/gpls/GenaSYS-2.1.1/custom  folder\r
+before continuing.</p></div>\r
+<div class="paragraph"><p>Note: this is the file that allows in-library OPAC stations to default to their location as opposed to all of PINES.</p></div>\r
+<div class="paragraph"><p><strong>Zip Codes for libraries:</strong>\r
+If you are using mutliple zip codes for libraries copy\r
+a preconfigured  zips.txt\r
+file to the  /home/gpls/GenaSYS-2.1.1/custom  folder\r
+before continuing.</p></div>\r
+<div class="paragraph"><p>Note: this file allows the staff client to automatically populate the city, county, and state fields once the ZIP code is entered in the Evergreen User Editor.</p></div>\r
+<div class="paragraph"><p><strong>Action Trigger Filters:</strong>\r
+If you are using customized action trigger filters then copy\r
+the custom  action_trigger_filters.json\r
+file to the  /home/gpls/GenaSYS-2.1.1/custom  folder\r
+before continuing.</p></div>\r
+<div class="paragraph"><p>Note: this file is required for any custom action/trigger event setups that are configured.</p></div>\r
+<div class="paragraph"><p><strong>Custom Maintenance Page:</strong>\r
+If you are using a customized maintenance page\r
+then copy the custom  index.html or index.php\r
+file and any image files .jpg or .png\r
+to the  /home/gpls/GenaSYS-2.1.1/custom  folder\r
+before continuing.</p></div>\r
+<div class="paragraph"><p>Note: the maintenance page appears when you detach all bricks from the cluster.</p></div>\r
+</div>\r
+<div class="sect3">\r
+<h4 id="_global_configuration">Global Configuration</h4>\r
+<div class="paragraph"><p>This is where the DNS name for your cluster is entered.</p></div>\r
+</div>\r
+<div class="sect3">\r
+<h4 id="_ssl_certificate_configuration">SSL Certificate Configuration</h4>\r
+<div class="paragraph"><p>An SSL Certificate is required for Evergreen to function correctly.\r
+If you have purchased a certificate from a CA then please copy\r
+the certificate files (server.crt, server.key and ca.crt if applicable)\r
+to /home/gpls/GenaSYS-2.1.1/ssl_cert.\r
+If you do not have a purchased certificate from a CA, GenaSYS will generate\r
+a self-signed certificate automatically.</p></div>\r
+</div>\r
+<div class="sect3">\r
+<h4 id="_evergreen_brick_configuration">Evergreen Brick Configuration</h4>\r
+<div class="paragraph"><p>Where you define the number and configuration of <a id="Application Bricks"></a>.  GenaSYS automatically sets up brick clustering and management scripts.</p></div>\r
+</div>\r
+<div class="sect3">\r
+<h4 id="_evergreen_reporter_configuration">Evergreen Reporter Configuration</h4>\r
+<div class="paragraph"><p>This step defines on which server the NFS share for reports outputs resides.  The reports process itself is located on reporter01.</p></div>\r
+</div>\r
+<div class="sect3">\r
+<h4 id="_evergreen_opensrf_configuration">Evergreen OpenSRF Configuration</h4>\r
+<div class="paragraph"><p>This step creates the Linux "opensrf" user, which is used by the system to run all OpenSRF processes, including Apache.</p></div>\r
+</div>\r
+<div class="sect3">\r
+<h4 id="_evergreen_database_configuration">Evergreen Database Configuration</h4>\r
+<div class="paragraph"><p>This step creates the password for the PostgreSQL "evergreen" user.</p></div>\r
+</div>\r
+<div class="sect3">\r
+<h4 id="_evergreen_admin_user_configuration">Evergreen Admin User Configuration</h4>\r
+<div class="paragraph"><p>This step creates the Evergreen administrative user, which is able to log into the staff client with these credentials and administer the system from the GUI.</p></div>\r
+</div>\r
+<div class="sect3">\r
+<h4 id="_private_network_configuration">Private Network Configuration</h4>\r
+<div class="paragraph"><p>Default is 10.0.1.0/24, but can be anything within the private network IP range.</p></div>\r
+</div>\r
+<div class="sect3">\r
+<h4 id="_lvs_director_configuration">LVS Director Configuration</h4>\r
+<div class="sect4">\r
+<h5 id="_cluster_ip_address">Cluster IP Address</h5>\r
+<div class="paragraph"><p>The public IP address for the cluster will be used for LVS Director and Heartbeat.  This address is the "virtual" address and will be <strong>shared</strong> between two LVS machines in the cluster.  Enter the public IP address for the cluster, its netmask and its gateway address.</p></div>\r
+</div>\r
+<div class="sect4">\r
+<h5 id="_lvs_physical_ethernet_interface_configuration">LVS Physical Ethernet Interface Configuration</h5>\r
+<div class="paragraph"><p>The LVS servers must have a physical public addresses assigned to each server independent of the shared address entered above.  Enter the public IP addresses for lvs01 and lvs02</p></div>\r
+</div>\r
+</div>\r
+<div class="sect3">\r
+<h4 id="_genasys_configuration_summary">GenaSYS Configuration Summary</h4>\r
+<div class="paragraph"><p>You will then be shown a summary of the configuration options that you&#8217;ve chosen as they are entered into the genasys.conf file.  If any values need correcting, you can start over by selecting &#174;etry.</p></div>\r
+</div>\r
+<div class="sect3">\r
+<h4 id="_genasys_cluster_creation">GenaSYS Cluster Creation</h4>\r
+<div class="paragraph"><p>Messages will appear on the screen as the files are processed.</p></div>\r
+</div>\r
+<div class="sect3">\r
+<h4 id="_human_readable_summary_and_installation_instructions">Human-Readable Summary and Installation Instructions</h4>\r
+<div class="paragraph"><p>After the files are processed and packaged, you will be shown a summary of the full cluster configuration, including installation instructions.  This information will be stored in a file named [cluster name]_network_config.txt.  As it contains the entered passwords in clear text, you will want to secure this file.\</p></div>\r
+<div class="paragraph"><p>Copy the setup tar.gz files one at a time to the respective nodes in the cluster, extract and run the installation and reboot each one before starting on the next one.  Install in the order listed below.</p></div>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+lvs\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+logger\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+db\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+brick01-head\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+other-bricks\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+reporter\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+utility\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+sip\r
+</p>\r
+</li>\r
+</ol></div>\r
+</div>\r
+</div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 2012-04-19 08:33:30 EDT\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
diff --git a/templates/logger/archive.sh b/templates/logger/archive.sh
new file mode 100644 (file)
index 0000000..87dce1e
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+goback=$1
+host="10.0.1.81"
+host="$HOSTNAME"
+remote="off" # [on/off]
+
+[ -z "$goback" ] && goback=1;
+
+month=$(date --date="$goback day ago" +"%m");
+year=$(date --date="$goback day ago" +"%Y");
+day=$(date --date="$goback day ago" +"%d");
+
+[ ${#month} == 1 ] && month="0$month";
+[ ${#day} == 1 ] && day="0$day";
+
+
+function arch {
+        #type=$1
+        #dir="/var/log/evergreen/$type/$year/$month/$day";
+        dir="/var/log/evergreen/$year/$month/$day";
+        cd $dir;
+        echo "Archiving files in $dir";
+
+        # make sure the directory exists on the backup host
+        su - opensrf -c "ssh $host 'mkdir -m770 -p $dir'"
+
+        for i in *; do
+                echo "Archiving $i";
+                pigz -p3 "$i";
+                #chgrp opensrf "$dir/$i.gz"; # why is this needed?
+                chmod 640 "$dir/$i.gz";
+                if [ "$remote" = "on" ]; then
+                        # make sure the directory exists on the backup host
+                        su - opensrf -c "ssh $host 'mkdir -m770 -p $dir'"
+                        echo "Sending $dir/$i.gz to $host..."
+                        su - opensrf -c "scp $dir/$i.gz $host:$dir/"
+                fi
+        done;
+}
+
+#for type in 'demo' 'dev' 'prod'; do
+#for type in 'prod'; do
+        arch # "$type";
+#done;