Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Created gh-pages branch via GitHub

  • Loading branch information...
commit 5f88babbbc61df20177e56a49faeb037440290ec 0 parents
@wereHamster authored
104 index.html
@@ -0,0 +1,104 @@
+<!doctype html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="chrome=1">
+ <title>Heru by wereHamster</title>
+
+ <link rel="stylesheet" href="stylesheets/styles.css">
+ <link rel="stylesheet" href="stylesheets/pygment_trac.css">
+ <script src="javascripts/scale.fix.js"></script>
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <!--[if lt IE 9]>
+ <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
+ <![endif]-->
+ </head>
+ <body>
+ <div class="wrapper">
+ <header>
+ <h1>Heru</h1>
+ <p>(quenya; english translation: lord, master)</p>
+ <p class="view"><a href="https://github.com/wereHamster/heru">View the Project on GitHub <small>wereHamster/heru</small></a></p>
+ <ul>
+ <li><a href="https://github.com/wereHamster/heru/zipball/master">Download <strong>ZIP File</strong></a></li>
+ <li><a href="https://github.com/wereHamster/heru/tarball/master">Download <strong>TAR Ball</strong></a></li>
+ <li><a href="https://github.com/wereHamster/heru">Fork On <strong>GitHub</strong></a></li>
+ </ul>
+ </header>
+ <section>
+ <h2>What is it?</h2>
+
+<p>Heru, in its heart, is a DSL to describe the state of a UNIX system. You
+specify which files, user accounts, groups etc. should exist. If the system
+does not match the desired state, heru takes actions to correct that.</p>
+
+<p>In that regard it's very similar to <a href="http://projects.puppetlabs.com/projects/puppet">puppet</a>. In fact, much of heru
+was directly inspired by puppet. However, there are significant differences.
+The most important is that heru aims to be standalone. The goal is to not have
+any external dependencies. Just drop it into a folder and you're ready to go.
+Also, heru does not provide you with any infrastructure. You are expected to
+use whatever tools you are already using to distribute the configuration
+files. These two things together make heru very small, lightweight and
+hopefully easier to configure.</p>
+
+<h2>How does it work?</h2>
+
+<p>First you have to describe your hosts (nodes). Each node has its own file,
+and contains the network configuration and manifests which should be applied
+to it. A manifest is a collection of one or more resources which should be
+present.</p>
+
+<p>Let's take a closer look. A node description might look something like this:</p>
+
+<pre><code>exports.manifests = [
+ 'sshd', 'mysql'
+]
+</code></pre>
+
+<p>The <code>sshd</code> manifest might describe that the file <code>/etc/ssh/sshd_config</code> needs
+to exist, have certain permissions and contents:</p>
+
+<pre><code>{ Manifest, Action } = require 'heru'
+class module.exports extends Manifest
+
+ 'path:/etc/ssh/sshd_config': -&gt;
+ type: 'file', mode: 0644, user: 'root', group: 'root', action: -&gt;
+ Action.Render 'sshd_config'
+</code></pre>
+
+<p>If the file does not exist, heru will create it. The <code>Render</code> action takes the
+<code>sshd_config</code> template file and writes it to its correct location. There are
+other actions which you can use, and there are also cases where you don't have
+to specify an action.</p>
+
+<p>If the syntax seems familiar to you, it's maybe because heru and all its
+configuration files are written in <a href="http://jashkenas.github.com/coffee-script">Coffee-Script</a>. </p>
+
+<h2>How do I install it?</h2>
+
+<p>I recommend that you install heru into your <code>/root/.heru</code> folder, with the
+following structure:</p>
+
+<pre><code>runtime/ - The heru runtime (clone this repo here)
+library/ - Library with your manifests
+nodes/ - Node descriptions
+</code></pre>
+
+<p>Then you need to install <a href="http://nodejs.org/">Node.js</a> and <a href="http://jashkenas.github.com/coffee-script">Coffee-Script</a>.
+Node.js is fairly easy to compile (<code>./configure --without-ssl &amp;&amp; make</code>). You
+can clone Coffee-Script into a directory and then add its <code>bin/</code> folder to
+your path. In due time there will be a fully automated install script.</p>
+
+<h2>I like it, how do I help you?</h2>
+
+<p>This project has its home on <a href="https://github.com/wereHamster/heru">GitHub</a>. You can create tickets, fork
+the project and send me pull requests. </p>
+ </section>
+ <footer>
+ <p>This project is maintained by <a href="https://github.com/wereHamster">wereHamster</a></p>
+ <p><small>Hosted on GitHub Pages &mdash; Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
+ </footer>
+ </div>
+ <!--[if !IE]><script>fixScale(document);</script><!--<![endif]-->
+ </body>
+</html>
20 javascripts/scale.fix.js
@@ -0,0 +1,20 @@
+fixScale = function(doc) {
+
+ var addEvent = 'addEventListener',
+ type = 'gesturestart',
+ qsa = 'querySelectorAll',
+ scales = [1, 1],
+ meta = qsa in doc ? doc[qsa]('meta[name=viewport]') : [];
+
+ function fix() {
+ meta.content = 'width=device-width,minimum-scale=' + scales[0] + ',maximum-scale=' + scales[1];
+ doc.removeEventListener(type, fix, true);
+ }
+
+ if ((meta = meta[meta.length - 1]) && addEvent in doc) {
+ fix();
+ scales = [.25, 1.6];
+ doc[addEvent](type, fix, true);
+ }
+
+};
1  params.json
@@ -0,0 +1 @@
+{"name":"Heru","body":"What is it?\r\n-----------\r\n\r\nHeru, in its heart, is a DSL to describe the state of a UNIX system. You\r\nspecify which files, user accounts, groups etc. should exist. If the system\r\ndoes not match the desired state, heru takes actions to correct that.\r\n\r\nIn that regard it's very similar to [puppet][puppet]. In fact, much of heru\r\nwas directly inspired by puppet. However, there are significant differences.\r\nThe most important is that heru aims to be standalone. The goal is to not have\r\nany external dependencies. Just drop it into a folder and you're ready to go.\r\nAlso, heru does not provide you with any infrastructure. You are expected to\r\nuse whatever tools you are already using to distribute the configuration\r\nfiles. These two things together make heru very small, lightweight and\r\nhopefully easier to configure.\r\n\r\n\r\nHow does it work?\r\n-----------------\r\n\r\nFirst you have to describe your hosts (nodes). Each node has its own file,\r\nand contains the network configuration and manifests which should be applied\r\nto it. A manifest is a collection of one or more resources which should be\r\npresent.\r\n\r\nLet's take a closer look. A node description might look something like this:\r\n\r\n exports.manifests = [\r\n 'sshd', 'mysql'\r\n ]\r\n\r\nThe `sshd` manifest might describe that the file `/etc/ssh/sshd_config` needs\r\nto exist, have certain permissions and contents:\r\n\r\n { Manifest, Action } = require 'heru'\r\n class module.exports extends Manifest\r\n\r\n 'path:/etc/ssh/sshd_config': ->\r\n type: 'file', mode: 0644, user: 'root', group: 'root', action: ->\r\n Action.Render 'sshd_config'\r\n\r\nIf the file does not exist, heru will create it. The `Render` action takes the\r\n`sshd_config` template file and writes it to its correct location. There are\r\nother actions which you can use, and there are also cases where you don't have\r\nto specify an action.\r\n\r\nIf the syntax seems familiar to you, it's maybe because heru and all its\r\nconfiguration files are written in [Coffee-Script][coffee-script]. \r\n\r\n\r\nHow do I install it?\r\n--------------------\r\n\r\nI recommend that you install heru into your `/root/.heru` folder, with the\r\nfollowing structure:\r\n\r\n runtime/ - The heru runtime (clone this repo here)\r\n library/ - Library with your manifests\r\n nodes/ - Node descriptions\r\n\r\nThen you need to install [Node.js][nodejs] and [Coffee-Script][coffee-script].\r\nNode.js is fairly easy to compile (`./configure --without-ssl && make`). You\r\ncan clone Coffee-Script into a directory and then add its `bin/` folder to\r\nyour path. In due time there will be a fully automated install script.\r\n\r\n\r\nI like it, how do I help you?\r\n-----------------------------\r\n\r\nThis project has its home on [GitHub][github]. You can create tickets, fork\r\nthe project and send me pull requests. \r\n\r\n\r\n[puppet]: http://projects.puppetlabs.com/projects/puppet\r\n[coffee-script]: http://jashkenas.github.com/coffee-script\r\n[nodejs]: http://nodejs.org/\r\n[github]: https://github.com/wereHamster/heru","tagline":"(quenya; english translation: lord, master)","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."}
69 stylesheets/pygment_trac.css
@@ -0,0 +1,69 @@
+.highlight { background: #ffffff; }
+.highlight .c { color: #999988; font-style: italic } /* Comment */
+.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.highlight .k { font-weight: bold } /* Keyword */
+.highlight .o { font-weight: bold } /* Operator */
+.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
+.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #aa0000 } /* Generic.Error */
+.highlight .gh { color: #999999 } /* Generic.Heading */
+.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #555555 } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold; } /* Generic.Subheading */
+.highlight .gt { color: #aa0000 } /* Generic.Traceback */
+.highlight .kc { font-weight: bold } /* Keyword.Constant */
+.highlight .kd { font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #009999 } /* Literal.Number */
+.highlight .s { color: #d14 } /* Literal.String */
+.highlight .na { color: #008080 } /* Name.Attribute */
+.highlight .nb { color: #0086B3 } /* Name.Builtin */
+.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
+.highlight .no { color: #008080 } /* Name.Constant */
+.highlight .ni { color: #800080 } /* Name.Entity */
+.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
+.highlight .nn { color: #555555 } /* Name.Namespace */
+.highlight .nt { color: #000080 } /* Name.Tag */
+.highlight .nv { color: #008080 } /* Name.Variable */
+.highlight .ow { font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #009999 } /* Literal.Number.Float */
+.highlight .mh { color: #009999 } /* Literal.Number.Hex */
+.highlight .mi { color: #009999 } /* Literal.Number.Integer */
+.highlight .mo { color: #009999 } /* Literal.Number.Oct */
+.highlight .sb { color: #d14 } /* Literal.String.Backtick */
+.highlight .sc { color: #d14 } /* Literal.String.Char */
+.highlight .sd { color: #d14 } /* Literal.String.Doc */
+.highlight .s2 { color: #d14 } /* Literal.String.Double */
+.highlight .se { color: #d14 } /* Literal.String.Escape */
+.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
+.highlight .si { color: #d14 } /* Literal.String.Interpol */
+.highlight .sx { color: #d14 } /* Literal.String.Other */
+.highlight .sr { color: #009926 } /* Literal.String.Regex */
+.highlight .s1 { color: #d14 } /* Literal.String.Single */
+.highlight .ss { color: #990073 } /* Literal.String.Symbol */
+.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #008080 } /* Name.Variable.Class */
+.highlight .vg { color: #008080 } /* Name.Variable.Global */
+.highlight .vi { color: #008080 } /* Name.Variable.Instance */
+.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
+
+.type-csharp .highlight .k { color: #0000FF }
+.type-csharp .highlight .kt { color: #0000FF }
+.type-csharp .highlight .nf { color: #000000; font-weight: normal }
+.type-csharp .highlight .nc { color: #2B91AF }
+.type-csharp .highlight .nn { color: #000000 }
+.type-csharp .highlight .s { color: #A31515 }
+.type-csharp .highlight .sc { color: #A31515 }
251 stylesheets/styles.css
@@ -0,0 +1,251 @@
+@import url(https://fonts.googleapis.com/css?family=Lato:300italic,700italic,300,700);
+
+body {
+ padding:50px;
+ font:14px/1.5 Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;
+ color:#777;
+ font-weight:300;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ color:#222;
+ margin:0 0 20px;
+}
+
+p, ul, ol, table, pre, dl {
+ margin:0 0 20px;
+}
+
+h1, h2, h3 {
+ line-height:1.1;
+}
+
+h1 {
+ font-size:28px;
+}
+
+h2 {
+ color:#393939;
+}
+
+h3, h4, h5, h6 {
+ color:#494949;
+}
+
+a {
+ color:#39c;
+ font-weight:400;
+ text-decoration:none;
+}
+
+a small {
+ font-size:11px;
+ color:#777;
+ margin-top:-0.6em;
+ display:block;
+}
+
+.wrapper {
+ width:860px;
+ margin:0 auto;
+}
+
+blockquote {
+ border-left:1px solid #e5e5e5;
+ margin:0;
+ padding:0 0 0 20px;
+ font-style:italic;
+}
+
+code, pre {
+ font-family:Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal;
+ color:#333;
+ font-size:12px;
+}
+
+pre {
+ padding:8px 15px;
+ background: #f8f8f8;
+ border-radius:5px;
+ border:1px solid #e5e5e5;
+ overflow-x: auto;
+}
+
+table {
+ width:100%;
+ border-collapse:collapse;
+}
+
+th, td {
+ text-align:left;
+ padding:5px 10px;
+ border-bottom:1px solid #e5e5e5;
+}
+
+dt {
+ color:#444;
+ font-weight:700;
+}
+
+th {
+ color:#444;
+}
+
+img {
+ max-width:100%;
+}
+
+header {
+ width:270px;
+ float:left;
+ position:fixed;
+}
+
+header ul {
+ list-style:none;
+ height:40px;
+
+ padding:0;
+
+ background: #eee;
+ background: -moz-linear-gradient(top, #f8f8f8 0%, #dddddd 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(100%,#dddddd));
+ background: -webkit-linear-gradient(top, #f8f8f8 0%,#dddddd 100%);
+ background: -o-linear-gradient(top, #f8f8f8 0%,#dddddd 100%);
+ background: -ms-linear-gradient(top, #f8f8f8 0%,#dddddd 100%);
+ background: linear-gradient(top, #f8f8f8 0%,#dddddd 100%);
+
+ border-radius:5px;
+ border:1px solid #d2d2d2;
+ box-shadow:inset #fff 0 1px 0, inset rgba(0,0,0,0.03) 0 -1px 0;
+ width:270px;
+}
+
+header li {
+ width:89px;
+ float:left;
+ border-right:1px solid #d2d2d2;
+ height:40px;
+}
+
+header ul a {
+ line-height:1;
+ font-size:11px;
+ color:#999;
+ display:block;
+ text-align:center;
+ padding-top:6px;
+ height:40px;
+}
+
+strong {
+ color:#222;
+ font-weight:700;
+}
+
+header ul li + li {
+ width:88px;
+ border-left:1px solid #fff;
+}
+
+header ul li + li + li {
+ border-right:none;
+ width:89px;
+}
+
+header ul a strong {
+ font-size:14px;
+ display:block;
+ color:#222;
+}
+
+section {
+ width:500px;
+ float:right;
+ padding-bottom:50px;
+}
+
+small {
+ font-size:11px;
+}
+
+hr {
+ border:0;
+ background:#aaa;
+ height:1px;
+ margin:0 0 20px;
+}
+
+footer {
+ width:270px;
+ float:left;
+ position:fixed;
+ bottom:50px;
+}
+
+@media print, screen and (max-width: 960px) {
+
+ div.wrapper {
+ width:auto;
+ margin:0;
+ }
+
+ header, section, footer {
+ float:none;
+ position:static;
+ width:auto;
+ }
+
+ header {
+ padding-right:320px;
+ }
+
+ section {
+ border:1px solid #e5e5e5;
+ border-width:1px 0;
+ padding:20px 0;
+ margin:0 0 20px;
+ }
+
+ header a small {
+ display:inline;
+ }
+
+ header ul {
+ position:absolute;
+ right:50px;
+ top:52px;
+ }
+}
+
+@media print, screen and (max-width: 720px) {
+ body {
+ word-wrap:break-word;
+ }
+
+ header {
+ padding:0;
+ }
+
+ header ul, header p.view {
+ position:static;
+ }
+}
+
+@media print, screen and (max-width: 480px) {
+ body {
+ padding:15px;
+ }
+
+ header ul {
+ display:none;
+ }
+}
+
+@media print {
+ body {
+ padding:0.4in;
+ font-size:12pt;
+ color:#444;
+ }
+}
Please sign in to comment.
Something went wrong with that request. Please try again.