Goozbach's Tech Tipstag:blog.friocorte.com,2011-09-07://22012-06-13T18:39:56ZMovable Type 5.12http://creativecommons.org/images/public/somerights20.gifSouthEastLinuxFest 2012 After Action Reporttag:blog.friocorte.com,2012://2.482012-06-12T20:05:49Z2012-06-13T18:39:56ZThis last weekend I took the 3.75hr trip up to Charlotte, NC for the southeastlinuxfest. This was my first trip to SELF and I was very impressed by the number of good talks and presentations. Friday On Friday, I arrived...Derek Carter
<p>This last weekend I took the 3.75hr trip up to Charlotte, NC for the <a href="http://www.southeastlinuxfest.org/">southeastlinuxfest</a>. This was my first trip to SELF and I was very impressed by the number of good talks and presentations.</p>
<h1>Friday</h1>
<p>On Friday, I arrived a little after the conference got underway and spent the morning in the &#8220;hallway track&#8221;, talking with and meeting a good number of people.</p>
<p>After a rather hasty lunch with <a href="http://sexysexypenguins.com/">herlo</a>. We hurried back to the conference where I helped him give his presentation on the <a href="http://gooseproject.org/">GoOSeProject</a>. That presentation went <em>VERY</em> well, we ended up passing out all 10 of the GoOSe cds we had.</p>
<p>Sometime on Friday I also went to a presentation on <a href="https://openshift.redhat.com/app/">OpenShift</a>. However, I forgot to write down the name of the presenter so I don&#8217;t know who gave it. My schedule says it was likely <a href="http://russellbryantnet.wordpress.com/">Russel Bryant</a> but I&#8217;m not sure.</p>
<p>I then skipped out on the afternoon sessions to go to a business lunch with some associates. The evening&#8217;s after-party, however, was lots of fun. I got to know a lot of folks: <a href="http://dissociatedpress.net/">zonker</a>, <a href="http://hobbyhobby.wordpress.com/">SUEHLE</a>, Zach, Brian (the two aussies, didn&#8217;t get their addresses/emails), and others.. A lot of fun was had, good music, cards and discussion.</p>
<h1>Saturday</h1>
<h2>Demoggification</h2>
<p>The real meat of the conference for me came on Saturday. After the keynote which I arrived late to. I went to the &#8220;Demoggification&#8221; talk by <a href="http://fedoraproject.org/wiki/User:Inode0">John Rose</a>. This talk was awesome. It was about a lot more than just removing the &#8220;useless use of <code>cat</code>&#8221;. I got the following tips out of it:</p>
<ul>
<li><p>Use Here <em>STRINGS</em></p>
<p>Herestrings are like Heredocs but lighter. Instead of doing:</p>
<pre><code>echo "foo" | some_command
</code></pre>
<p>try this:</p>
<pre><code>some_command &lt;&lt;&lt; "foo"
</code></pre></li>
<li><p>The /dev/tcp and /dev/udp files in Bash.</p>
<p>I&#8217;ve used these before, they&#8217;re a great lightweight way of testing connectivity. I didn&#8217;t get a demo written down so I&#8217;ll research and do a blog post on them later.</p></li>
<li><p>Brace expansion tricks</p>
<p>The common use is just to spit out generated strings.</p>
<pre><code>mkdir -p foo/{bar,baz,qux}
</code></pre>
<p>However, brace expansion can do much more (like replace <code>seq</code>)</p>
<pre><code>echo file{01..10}
</code></pre>
<p>It can also do both at once</p>
<pre><code>echo {foo,bar,baz}{01..10} # &lt; no space between
</code></pre></li>
<li><p>Regular expression matching <code>=~</code></p>
<p>Try this instead of a <code>case</code> statement if you only have one fork of your condition.</p>
<pre><code>if [[ $foo =~ (FOO|BAR|BAZ} ]]
then
echo "found the string"
else
echo "nothing there"
fi
</code></pre></li>
<li><p>You can also do pattern matching on your variables.</p>
<pre><code>$ FILENAME=/usr/share/doc/tmux-1.6/examples/screen-keys.conf
$ echo ${FILENAME%/*}
/usr/share/doc/tmux-1.6/examples
$ echo ${FILENAME##*/}
screen-keys.conf
</code></pre></li>
</ul>
<p>I had seen a few of these tricks earlier when I attended a talk by Michael Potter called <a href="http://www.uniforum.chi.il.us/slides/bash1.pdf">Seatbelts and Airbags for BASH</a>.</p>
<h2>How to Quit Your Job (or How to Fire Your Boss)</h2>
<p>My favorite presentation was the Saturday talk by <a href="http://icculus.org/">Ryan C Gordon</a> on how to quit your job. As I was recently let go from my full-time position and have been working for three months as a contractor/consultant this one hit home a lot of the points I&#8217;ve heard elsewhere. It also did a lot for giving me the &#8220;PEP TALK&#8221; I have needed in recent weeks. I kept three whole pages of notes. Here is what he talked about in brain/notebook dump format:</p>
<ul>
<li><p>Pluses to being your own boss</p>
<ul>
<li>more money (potential)</li>
</ul>
<p>You are not tied to just a single line of revenue, your potential for growth/income is no longer limited by one budget.</p>
<ul>
<li><p>less of <a href="http://images.google.com/search?tbm=isch&amp;hl=en&amp;source=hp&amp;biw=1920&amp;bih=1079&amp;q=lumbergh+office+space&amp;gbv=2&amp;oq=lumbergh+office+space">Lumbergh</a></p></li>
<li><p>less burnout</p></li>
</ul>
<p>You&#8217;re not going to be stuck on a single project for long. There is more diversity.</p></li>
<li><p>Minuses to being your own boss</p>
<ul>
<li>less money</li>
</ul>
<p>you are going to start out making less money, so jumping into consulting without a safety net (something I was lucky enough to have) is almost always painful. </p>
<ul>
<li><p>no medical insurance, no 401k, no safety net</p></li>
<li><p>more Lumberghs</p></li>
</ul>
<p>You no longer have to deal with one Lumbergh, but many Lumberghs. Luckily you don&#8217;t have to deal with them for the long term.</p>
<ul>
<li>more hustle</li>
</ul>
<p>Being your own boss is a <em>LOT</em> of work. If you don&#8217;t have hustle you&#8217;ll starve.</p></li>
<li><p>Find a vertical market</p>
<p>If you find your niche in a vertical market, you then need to stand out from the crowd. Which isn&#8217;t too hard, you only need to &#8220;Be better than the dumbasses.&#8221;.</p>
<p>Ideally you would want a market with a lot of money and not many people in it.</p></li>
<li><p>&#8220;Your product is named &#8216;You&#8217;&#8221;</p>
<p>You are your product. Sell yourself. Work hard at selling yourself. Don&#8217;t sell yourself short.</p></li>
<li><p>Milk your contacts</p>
<p>Finding work is the hardest part. Milk your contacts for as much as you can.</p></li>
<li><p>Do Open Source</p>
<p>A github page (with good content) is an excellent resume.</p></li>
<li><p>Always build your resume</p>
<p>Your resume should always be easily found. Mine is <a href="http://blog.friocorte.com/resume/">http://blog.friocorte.com/resume/</a></p></li>
<li><p>Always be interviewing</p>
<p>This helps your people skills. It also helps you sell yourself properly.</p></li>
<li><p>Your online persona should be awesome</p>
<p>Don&#8217;t post pictures of yourself puking in your twitter/facebook account. Always be aware of what your online persona looks like.</p></li>
<li><p>Hustle, do, ship</p>
<p>It&#8217;s of tantamount importance that you actually <em>SHIP</em> aka <em>deliver</em> a product. If you never deliver you will never be invited back as a consultant.</p>
<p>I always like the way Dave Ramsey puts it</p>
<p><pre><code>Get up.
Leave the cave.
Kill something.
Drag it home.
</code></pre></li>
<li><p>Always be learning</p></p>
<p>Ryan talked about how he was playing around with Lua once and blogged about it. That blog post led to a contact being made because of his &#8220;Lua knowledge&#8221;. If you play with stuff, learn stuff and blog about it you will have a working resume.</p></li>
<li><p>Keep records</p>
<p>Not only of your timesheets for customers, but of what you&#8217;ve worked on. Again back to the living resume.</p></li>
<li><p>Married == uphill struggle</p>
<p>Your relationships will have a harder time when you are contracting as the stress can cause issues.</p>
<p>It is paramount to find a good balance</p></li>
<li><p>Budget Carefully</p>
<p>Not just your money but your time.</p></li>
<li><p>Ask for more than the job is worth</p>
<p>Always negotiate. Always go up. Double your rate.</p>
<p>No one will walk away from a number without saying something like &#8220;hey that&#8217;s too much&#8221;.</p>
<p>Have a minimum price, if the customer can&#8217;t match it, walk away.</p></li>
<li><p>Schedule well</p>
<p>Over estimate times two. </p>
<p><em>DON&#8217;T MISS DEADLINES</em></p></li>
<li><p>Fire customers if they suck</p>
<p>&#8220;The customer is always right&#8221; isn&#8217;t always right. Fire the hard ones.</p>
<p>I first heard this advice from the guy who wrote &#8220;The no asshole rule&#8221;.</p>
<p>Have a contract breaking clause.</p></li>
<li><p>Never say you are running out of money</p>
<p>Always present yourself to customers as if you are on good footing</p>
<p>Ryan mentioned the talk <a href="http://vimeo.com/22053820">F#@k you, Pay me!</a>. Good points, but <em>LANGUAGE WARNING</em></p></li>
<li><p>Hire a lawyer</p>
<p>You should talk to a lawyer at least once, and have a relationship with one for when you get sued.</p></li>
<li><p>Hire an accountant</p>
<p>Not only for tax purposes, but for investing your money when you start to do well. Remember you don&#8217;t have a pension or 401k anymore.</p></li>
<li><p>Business type</p>
<p>Sole Proprietorship, Default and easiest. Most risk.</p>
<p>LLC, little harder, more protection. Hard to sell (the business).</p>
<p>C or S Corporation, most difficult, lots of tax considerations.</p></li>
<li><p>Self Esteem</p>
<p>Work on your self esteem, you need it to sell yourself.</p></li>
<li><p>Contracts</p>
<p>If it&#8217;s not in writing, it didn&#8217;t happen. No verbal contracts.</p>
<p>At a minimum, follow up with an email to any phone conversation.</p></li>
<li><p>Get health insurance</p>
<p>Without insurance, one trip to the ER can bankrupt you.</p></li>
<li><p>Take care of yourself</p>
<p>Buy a nice chair, nice monitor and a desk which sits at the right height.</p></li>
<li><p>Don&#8217;t rent space</p>
<p>If you don&#8217;t have a space in your home, don&#8217;t rent/lease space. Find a coffee shop. Many multi-million dollar companies have been founded/sold without ever buying or leasing office space (more so in recent years).</p></li>
<li><p>Stick it out</p>
<p>Don&#8217;t give up. Working for yourself is hard work and takes time to build a base. Hard work most often will turn around down times. Get out and pound the pavement.</p>
<p>However, you should have an escape plan/failsafe. Start with a &#8216;failure condition&#8217; in mind. </p></li>
<li><p>Have balance</p>
<p><p>You need to balance your work, play, sleep and love. When any of these don&#8217;t get the attention they deserve you&#8217;ll end up burnt out rather quickly.</p></li>
</ul></p>
<h1> </h1>
<img src="http://feeds.feedburner.com/~r/goozbachs_tech_tips-all/~4/_w-YIV5F-sU" height="1" width="1" alt=""/>http://blog.friocorte.com/2012/06/southeastlinuxfest-2012-after-action-report.html"Beefy Miracle" Fedora 16 to Fedora 17 Upgrade Problemstag:blog.friocorte.com,2012://2.472012-06-06T20:18:40Z2012-06-06T20:26:48ZThis morning I got bit by what appears to be a nasty grub/anaconda bug. I was upgrading my Fedora 16 laptop to Fedora 17 and ran into some issues. This is the best I can tell what happened: I installed...Derek Carter
<p>This morning I got bit by what appears to be a nasty <a href="https://bugzilla.redhat.com/show_bug.cgi?id=826812">grub/anaconda bug</a>. I was upgrading my Fedora 16 laptop to Fedora 17 and ran into some issues.</p>
<p>This is the best I can tell what happened:</p>
<p>I installed Fedora 15 using the following partition scheme:</p>
<p>1G /boot partition
122G windows vista partition (NTFS)
50G Fat16 partition
526G lvm partition
* swap, /, /home and /srv are each LVs on this VG</p>
<p>upgraded to Fedora 16 using the DVD.</p>
<p>upgraded to Fedora 17 using the DVD, anaconda had an error message stating there were "bootloader problems" and said there would be issues rebooting.</p>
<p>rebooted and got the grub rescue prompt.</p>
<p>rebooted again into rescue mode, using the fedora 17 DVD, and tried to do 'grub2-install /dev/sda' which is where I got the above error:</p>
<pre><code> Path `/boot/grub2` is not readable by GRUB on boot. Installation is
impossible. Aborting.
</code></pre>
<p>After some googling I found this <a href="https://bugzilla.redhat.com/show_bug.cgi?id=826812">bug report</a> but there didn't seem to be any resolution.</p>
<p>So I banged my head against this problem and stumbled into a work-around. (this should be done in a chrooted environment inside the rescue method of the Fedora DVD)</p>
<ul>
<li><p>backup the /boot partition</p>
<pre><code>mkdir /boot-backup
rsync -rav /boot/. /boot-backup/
</code></pre></li>
<li><p>unmount and zero out the boot partition</p>
<pre><code>umount /boot
dd if=/dev/zero of=/dev/sda1 bs=1024k
</code></pre></li>
<li><p>create a new ext4 filesystem</p>
<pre><code>mkfs -t ext4 /dev/sda1
mount /dev/sda1 /boot
</code></pre></li>
<li><p>re-run grub2-install</p>
<pre><code>grub2-install /dev/sda
</code></pre></li>
<li><p>copy the files out of the new /boot into /boot-backup</p>
<pre><code>rsync -rav /boot/. /boot-backup/.
</code></pre></li>
<li><p>copy the backed up files <em>BACK</em> into place</p>
<pre><code>rsync -rav /boot-backup/. /boot/.
</code></pre></li>
<li><p>re-generate the grub2 config</p>
<pre><code>grub2-mkconfig &gt; /boot/grub/grub.cfg
</code></pre></li>
</ul>
<p>at that point you should be able to exit the rescue mode, and reboot and things should be back to normal.</p>
<p>If not ping the bug and have them fix it.</p>
<p>Also, it's nigh on impossible to replicate by just installing Fedora 16 then trying to upgrade. It appears to be an issue with the Fedora 15 created partition scheme.</p>
<img src="http://feeds.feedburner.com/~r/goozbachs_tech_tips-all/~4/V4RJHmydO5A" height="1" width="1" alt=""/>http://blog.friocorte.com/2012/06/beefy-miracle-fedora-16-to-fedora-17-upgrade-problems.htmlGoOSe Project Collaboration Manifesto tag:blog.friocorte.com,2011://2.452011-12-10T16:40:22Z2011-12-10T18:34:05ZThis document is a copy. You can always find the canonical copy here. The GoOSe Project is only one of the upstream enterprise Linux rebuild projects. We are excited to work together with others in the EL rebuild space, and...Derek Carter
<p>This document is a copy. You can always find the canonical copy <a href="https://github.com/gooseproject/main/blob/master/brainstorm/collaboration.rst">here.</a></p>
<p>The GoOSe Project is only one of the upstream enterprise Linux rebuild projects. We are excited to work together with others in the EL rebuild space, and feel that there is plenty of room for separate but collaborative communities. The similarities in our goals should work for our mutual benefit. And the differences which exist should only strengthen us all.</p>
<p>So we need to answer this question:</p>
<p>In what can we collaborate?</p>
<p>What follows are the results of a pretty free-form brainstorming session we had at one of the GoOSe Project's weekly meetings.</p>
<ul>
<li><p>Shared infrastructure</p>
<p>Sharing certain pieces of infrastructure makes a lot of sense.</p>
<ul>
<li>Upstream Sources Mirroring -- Although there are various places that one can find the upstream sources having another collaborative mirror for the various rebuild projects could be beneficial.</li>
<li>Cross Project Backups -- Doing backups is difficult, if we spread out the load of backing up our repositories, scripts, look aside caches, configuration files we could restore in the case of a catastrophic failure</li>
<li>Project Mirroring -- Distributing the final product of our efforts can be daunting as well. Again, being willing to mirror the ISOs or packages of the other projects will help make all the products better accessible.</li>
<li>Help Building and Configuring Non-Shared Infrastructure -- Most of these projects are using the same or similar tools, Koji for example. Working together on setting up these systems will help reduce the amount of constitutional knowledge(better phrase here?)</li>
</ul></li>
<li><p>QA help</p>
<ul>
<li>Building QA Test Suites -- Due to the common ancestor of these projects, a common set of test cases could be useful. This should be extensible/fork able for the test cases which would be specific to a certain project.</li>
<li>Cross-QA Checks -- A very good way of testing if something is correct is having someone else run the same test as you. Sharing the QA work and results would reduce the need for everyone to figure things like this out for themselves. I think the best example of this would be the information needed to verify ABI compatibility.</li>
</ul></li>
<li><p>Documentation</p>
<p>Of the many places where EL rebuild projects can easily collaborate, the best return of investment is sure to come from the documentation side. Again the common ancestor of these distribution works in our favor. There is a great need for documentation and how-to's. Sadly most good documentation is out of date. Thus a collaborative documentation effort would help lighten the load and keep things better up to date.</p>
<p>Other documentation-like ideas include common wikis, a common askbot-style system, etc.</p></li>
<li><p>Distribution Creation Information</p>
<p>The main product of all these different projects is a Linux distribution. Sharing the problems and various solutions to compile and create this product helps to make the entire community better. Things to share include:</p>
<ul>
<li>package build order</li>
<li>package meta data</li>
<li>package content signatures</li>
<li>ABI compliance information</li>
<li>upstream trademark issues/problems</li>
<li>missing build dependencies</li>
</ul></li>
<li><p>Community Enhancements</p>
<p>As the number one goal of the GoOSe project is to build the community, we spend a lot of time thinking about the ways to enhance the <em>ENTIRE</em> community ecosystem. We plan on sharing what we learn for best practices for:</p>
<ul>
<li>community management</li>
<li>meetings </li>
<li>organizational structure</li>
<li>updates to your community about your progress</li>
</ul>
<p>We also plan on working on spreading the word about our community goals. Some tools to help us accomplish this include:</p>
<ul>
<li>EL Rebuild Planet -- Would others be interested in joining this?</li>
<li>Social Networking -- Twitter, Identica, Facebook, etc.</li>
</ul>
<p><p>We also want to practice what we preach about making this truly a community based idea. Please <a href="https://github.com/gooseproject/main/blob/master/brainstorm/collaboration.rst">fork and update</a> this document to help improve it.</p></li>
</ul>
With a stronger community around our projects we can all have a better time accomplishing our goals. And hopefully making the world a little bit better than we found it :).</p>
<img src="http://feeds.feedburner.com/~r/goozbachs_tech_tips-all/~4/zfSr2riJrqY" height="1" width="1" alt=""/>http://blog.friocorte.com/2011/12/goose-project-collaboration-manifesto.htmlIntroducing the GoOSe Projecttag:blog.friocorte.com,2011://2.432011-09-22T16:36:47Z2011-09-23T12:16:43ZIntroducing the GoOSe Project Recently I blogged about how some friends and I were talking about what it would take to rebuild an enterprise Linux project. We started researching what we would need and we got started. The result? The...Derek Carter
<h1>Introducing the GoOSe Project</h1>
<p><a href="http://blog.friocorte.com/2011/04/bootstrapping-a-rhel-clone.html">Recently I blogged</a> about how some friends and I were talking about what it would take to rebuild an enterprise Linux project. We started researching what we would need and we got started. The result? The <a href="http://www.gooseproject.org/">GoOSe Project.</a></p>
<p>What is the GoOSe project? It is a community rebuild of an <a href="http://redhat.com/">enterprise Linux distribution</a> based in the USA. But it is also more than that. The GoOSe project is more importantly a practice in building an Open Source community. We wanted to practice what we preach about how best to build a community. It just so happens that the product that this practice produces is a Linux distro.</p>
<h1>Why "GoOSe"?</h1>
<p>The name of the project was just a bit of riffing done on <a href="http://ibot.rikers.org/%23utos/20110412.html.gz">IRC</a>(look around 20:03.38). We have quite a bit done as far as getting things rebuilt and have some ideas as to how we want to run this community. We have an <a href="https://github.com/gooseproject/gooseproject-main/wiki/gooseproject_ethos">ethos</a>. A <a href="http://koji.gooselinux.org/koji/">Koji instance</a> running our builds. And we are just about done with the Buildroot needed to make a fully functional system bootstrap.</p>
<p>The GoOSe project is "in progress" to getting the first build out. We are currently just about done with the first step which is to compile all the upstream packages into a buildroot we can use to compile our packages. A more detailed status update will be blogged about later.</p>
<h1>Why another rebuild project?</h1>
<p>As I mentioned above, <a href="http://blog.friocorte.com/2011/09/step-0-build-a-community.html">community is the hard part.</a> And although there are various other projects similar to ours, we think we can fill a certain niche. </p>
<p>The <a href="http://centos.org/">centOS</a> project for example is probably the biggest rebuild project out there and it caters to those who are looking for a 100% drop-in replacement for the upstream Linux distribution. <a href="https://www.scientificlinux.org/">Scientific Linux</a> is built as a base for supporting computing clusters and experiments.</p>
<p>The GoOSe project is not out to replace or out-do any of these projects. We are here to build a community of passionate folks to build the best community-based enterprise operating system around. We will be sharing everything that we learn, everything we modify, and everything we build to help use create this distribution. We all benefit from an improved community structure. We also benefit from having more than one project meeting different goals/niches. The things we learn also help all the other projects out there to have a well functioning system themselves.</p>
<h1>GoOSe Goals</h1>
<p>Our goal with building the GoOSe project is to have a cool community built around an easily constructed set of enterprise-grade software. The technical pieces of the equation taking the hard part out of building an enterprise operating system. <a href="http://sexysexypenguins.com/">Herlo</a> said it best when he said this with regard to the vision of the project:</p>
<blockquote>
<p>"[I see the GoOSe project as a] group of friends hanging out, building cool things with an enterprise-ready technology. Not exclusive to building the technology itself."</p>
</blockquote>
<h1>Come help us</h1>
<p>We're already working away on these goals. You can come and help us. Here are some resources to get you started:</p>
<ul>
<li><p>The project's <a href="https://groups.google.com/group/goose-linux">development mailing list</a> (currently the only list until we need more).</p></li>
<li><p>The project's <a href="http://webchat.freenode.net/?channels=gooseproject&amp;uio=MTE9MzY5cf">irc channel</a></p></li>
<li><p>The project's <a href="http://www.gooseproject.org">main web site</a> (currently being worked on)</p></li>
<li><p>The project's main <a href="https://github.com/gooseproject">github page.</a></p></li>
<li><p>The project's <a href="https://github.com/gooseproject/gooseproject-main/wiki">main wiki</a></p></li>
<li><p>A link to <a href="https://github.com/gooseproject/gooseproject-main/wiki/how_you_can_help">"how you can help".</a></p></li>
<li><p>The project's <a href="http://planet.gooseproject.org/">blog planet.</a></p></li>
</ul>
<p>There is still plenty to be done. Come join us. It'll be fun I promise.</p>
<img src="http://feeds.feedburner.com/~r/goozbachs_tech_tips-all/~4/_Hf8F7INV3g" height="1" width="1" alt=""/>http://blog.friocorte.com/2011/09/introducing-the-goose-project.htmlNagios Config Template -- Goozbach rewindtag:blog.friocorte.com,2011://2.422011-09-19T15:19:51Z2011-09-19T17:19:01ZLast week I got an email out of the blue.it said:While trying to organize a complete mess of an nagios install (half borked by a nagiosql install) I ran across a post where you offered up an example of your...Derek Carter
Last week I got an email out of the blue.<div><br /></div><div>it said:</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><br /></div></blockquote><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><pre wrap="">While trying to organize a complete mess of an nagios install (half borked
by a nagiosql install) I ran across a post where you offered up an example
of your nagios configs. The link is now password protected, I know the
post is over 2 years old and things change....but I was wondering if you
still had that info available?
I did poke around your github but didn't find any nagios info.
Thanks!</pre></div></blockquote><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="white-space: pre-wrap;">This email was in reference to a <a href="http://www.standalone-sysadmin.com/blog/2009/07/nagios-config/#comment-3324">comment</a> I made to this <a href="http://www.standalone-sysadmin.com/blog/2009/07/nagios-config/">blog post</a> by the Standalone Sysadmin.</span></font><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="white-space: pre-wrap;"><br /></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="white-space: pre-wrap;">Well recently I re-did my webserver and the link mentioned in that comment has disappeared. So I took the time to drop the previously mentioned config template into a <a href="https://github.com/goozbach/nagios-split">github repository</a>.</span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="white-space: pre-wrap;"><br /></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="white-space: pre-wrap;">I should mention that I've not done any Nagios work in a few years now, and moreover I only dumped the contents of the tarball mentioned in the original comment into the github repo without any changes or updates. So I don't know how well this would work with more recent Nagios configs.</span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="white-space: pre-wrap;"><br /></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="white-space: pre-wrap;">If you find it useful, <a href="mailto:goozbach@friocorte.com">drop me a line</a>.</span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="white-space: pre-wrap;"><br /></span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="white-space: pre-wrap;">--</span></font></div><div><font class="Apple-style-span" face="monospace"><span class="Apple-style-span" style="white-space: pre-wrap;">Goozbach</span></font></div>
<img src="http://feeds.feedburner.com/~r/goozbachs_tech_tips-all/~4/7tnxBaxuaUM" height="1" width="1" alt=""/>http://blog.friocorte.com/2011/09/nagios-config-template----goozbach-rewind.htmlStep 0 -- Build a Communitytag:blog.friocorte.com,2011://2.412011-09-12T04:00:00Z2011-09-12T14:37:54ZIn a recent blogpost I discussed what would be needed to start a rebuild project based on sources provided by a prominent Linux distribution. Some friends and I started working towards this goal. We quickly determined that as interesting and...Derek Carter
<p>In a recent <a href="http://blog.friocorte.com/2011/04/bootstrapping-a-rhel-clone.html">blogpost</a> I discussed what would be needed to start a rebuild project based on sources provided by a prominent Linux distribution.</p>
<p>Some friends and I started working towards this goal. We quickly determined that as interesting and difficult the technical problems and hardware needs for such a venture are, they are surprisingly the easy part. Much more difficult is the task of building a community.</p>
<h2>Community is Key</h2>
<p>The key to any vibrant Open Source project is the community behind the project. Without a living, breathing community, any project is doomed to end up dead.</p>
<p>Analyzing other Open Source projects out there I discovered there are two distinct communities involved with any &#8220;successful&#8221; project. The contributor community and the user community. And yes one is a sub-set of the other (or ideally would be). These two communities are symbiotic as well.</p>
<h2>Contributor Community</h2>
<p>The contributor community is the core of a project. It consists of volunteers working on task relating to the creation, improvement, and release of a project. Without the contributor community the project could not exist. This isn&#8217;t to say the contributor community works in a vacuum. The contributor community relies on the user community for a few things:</p>
<ul>
<li><p>First and foremost: Validation. Working on an Open Source project is a labor of love. Volunteers give a great deal of their time, talent, and work to an Open Source project. A vibrant user community validates the work of the contributors.</p></li>
<li><p>Second: User base. A project without users is a business without customers. No users; no project. The more users a project has the more willing contributors will be to work on the project.</p></li>
<li><p>Third: Feedback. There&#8217;s an old maxim: &#8220;Many hands make light work.&#8221; The Open Source equivalent to this is &#8220;Under many eyes, all bugs are shallow&#8221;. The larger the install base, the more likely quality bug reports will be generated and problems will be found and fixed.</p></li>
</ul>
<h2>User Community</h2>
<p>The other half of the project exists in the user community. The user community consists of those who download, install and use the project in their daily work. The user community depends on the contributor community for few things as well.</p>
<ul>
<li><p>Number one: A Quality Product. People are using large Open Source projects in the core infrastructure of their businesses. A quality product makes this possible.</p></li>
<li><p>Second: Transparency. Given the importance of a quality product. Users are eager for updates. These can be either security updates, new features, new releases, or just &#8220;we&#8217;re working on these problems&#8221;. When you develop your project &#8220;in the dark&#8221; users will start to get leery. If you miss big releases regularly they start to loose confidence. Fear of a dying project can lead users to find alternatives or to fork the project themselves.</p></li>
<li><p>Finally: Permanence. The user community depends on the contributor community for permanence. Open Source projects are living things and require constant care and feeding. They have their own life cycle. Open Source projects are created by volunteer forces. Those volunteers&#8217; priorities change, they move on &#8212; for whatever reason. A completely open development model helps overcome these speed bumps that can affect a project. Some recent events come to mind with regard to the movement of a community:</p>
<ul>
<li><p><a href="http://en.wikipedia.org/wiki/OpenIndiana#Relation_to_Solaris.2C_Solaris_Express.2C_Illumos">OpenSolaris/Solaris to OpenIndinana/Nexenta</a></p></li>
<li><p><a href="http://en.wikipedia.org/wiki/OpenOffice.org#LibreOffice">OpenOffice.org to LibreOffice to Apache open office</a>.</p></li>
</ul></li>
</ul>
<p>Another item to think about is reducing the &#8220;bus factor&#8221;. The access to the entire project should not be limited to one member or small group of members of the contributor community. It should be available to all of the core trusted team. See <a href="http://www.osnews.com/story/21921/CentOS_Project_Administrator_Goes_Missing-in-Action">CentOS Project Administrator Goes Missing</a>.</p>
<p>The ultimate answer to all of these concerns is to make the entire project <em>VERY</em> easy to fork. Using new distributed SCM tools makes this pretty easy. The ideal Open Source project should be able to be completely forked in a weekend at the longest.</p>
<h2>Community Trust</h2>
<p>When the user community and contributor community trust each other, things really start to happen. More contributors show up to help as they feel valued and want to participate. The stronger contributor community means a higher quality, better trusted project. The higher quality project then attracts more users and the feedback cycle grows. The output of this feedback cycle is better support, and a better product.</p>
<h2>Attracting Contributors</h2>
<p>After defining what the communities are and what they want, let&#8217;s talk about how to attract more people to both. To attract people to the contributor community you have to have a very low barrier of entry for contributions. I&#8217;ve found one of the easiest ways to do this is with a tool which allows for easy contributions. One such tool is <a href="http://github.com">GitHub</a>. The manner in which you contribute to a project on GitHub is easy:</p>
<ol>
<li><p>Fork the repository</p></li>
<li><p>Make changes in your fork, and push the changes back to GitHub.</p></li>
<li><p>Send a pull-request.</p></li>
<li><p>The upstream project will accept or reject your change set.</p></li>
</ol>
<p>This low barrier of entry for a contributor also works as a great apprentice method. As people show their competency through things like these pull requests, they can easily be apprenticed into the core group of contributors. This makes your project a true meritocracy. This apprentice system balances access with trust, and gives a clearly defined path from user to contributor.</p>
<p>In order for this apprentice system to work you need to have a list of todo items. Ideally this list would be full of low-hanging fruit for apprentice contributors. Things such as improving documentation, or adding an additional feature or simple bugfixes are good examples.</p>
<p>Advertising the hard problems your contributors are working on in a todo list or using blogging/social media give a potential contributor a good idea of what is in store with the core team. The fun part of being a contributor is to work out how to solve the difficult problems.</p>
<h2>Attracting Users</h2>
<p>The easiest way to attract users is to have a high quality product. Another important tool for attracting users is a vibrant, open collaborator community. </p>
<p>Regular releases are key. Users (rightly) see regular, on schedule releases as a sign of a healthy, mature project. Usually the first signs of a dying or dead project are the lack of regular updates, or delayed updates with no explanation.</p>
<p>Users expect communication from the contributor community. This communication is multi-pronged. Good bug reports are a key form of communication. Bugs should be &#8220;scrubbed&#8221; regularly looking for bugs which are show-stoppers and when a bug is fixed the &#8220;fix&#8221; and when it will be packaged should accompany every bug closing.</p>
<p>Other communication channels include the project&#8217;s documentation. Documentation is something which can lag behind very easily. Ideally the documentation for a project is auto-generated directly from the source code. If auto-generated documentation isn&#8217;t easy to do, then a documentation team should be part of the contributor group.</p>
<p>The project should also have a blog. This blog should entail interesting problems being faced, the current status, highlights of people who are working with/on the project. There should also be a planet for all the people who have an interest in your project to share their entries. To drum up traffic, the main blog could feature something from the user&#8217;s planet regularly.</p>
<p>Social media is another avenue for attracting users. Getting the news out on new releases, or other news items is easily done using the various social media sites.</p>
<p>Holding your meetings in a public place is another way of being transparent to your user community. Ideally these meetings would be in a medium such as IRC so there is automatically a transcript or log of the meeting minutes.</p>
<p>There should also be a status page where users can quickly get an idea where the project is with regards to its goals. Things to include here would be tasks needed to finish the next release, show stopper bugs/issues, automatic updates from the various tools used in the project, and any other information like that.</p>
<h2>In Closing</h2>
<p>A community is key to making an open source project work. Cultivating community should be the first priority of a project. A well groomed community spirit, will do more for a project than any technological advances or fancy tools any day. Remember the folks who would work on something need motivation. I for one would <a href="http://stormyscorner.com/would-you-do-it-again-for-free">do it again for free</a>.</p>
<p>Stay tuned for step 1 and finally an official announcement of what this lead up is about.</p>
<img src="http://feeds.feedburner.com/~r/goozbachs_tech_tips-all/~4/r1YCrM43N7U" height="1" width="1" alt=""/>http://blog.friocorte.com/2011/09/step-0-build-a-community.htmlBroken Posttag:devblog.friocorte.com,2011://2.382011-05-23T15:37:10Z2011-09-07T20:08:55ZI just realized that my last post got eaten by the feed. If you didn't see the sample files, please visit the post directly instead of reading it via a feed reader. -- goozbach...Derek Carter
<p>I just realized that my l<a href="http://blog.friocorte.com/2011/05/chain-loading-pxe-servers.html">ast post </a>got eaten by the feed.</p>
<p>If you didn't see the sample files, please visit the <a href="http://blog.friocorte.com/2011/05/chain-loading-pxe-servers.html">post directly</a> instead of reading it via a feed reader.</p>
<p>--
goozbach</p>
<img src="http://feeds.feedburner.com/~r/goozbachs_tech_tips-all/~4/tbGZqE8xfS4" height="1" width="1" alt=""/>http://blog.friocorte.com/2011/05/broken-post.htmlChain loading PXE serverstag:devblog.friocorte.com,2011://2.372011-05-19T18:52:33Z2011-09-07T20:09:07ZAt my $DAYJOB we manage our internal infrastructure with Plan9. This means our DHCP server and TFTP server are both on the Plan9 system. I really like to use Cobbler as an installation tool. However it works best when cobbler...Derek Carter
<p>At my $DAYJOB we manage our internal infrastructure with Plan9. This means our DHCP server and TFTP server are both on the Plan9 system. </p>
<p>I really like to use Cobbler as an installation tool. However it works best when cobbler is in charge of PXE and TFTP.</p>
<p>To get around this problem, I'm using PXE chaining.</p>
<h1>Setup</h1>
<p>First step is to install the syslinux tree on the plan9 system. I did this by installing the latest syslinux RPM from <a href="http://www.kernel.org/pub/linux/utils/boot/syslinux/RPMS/x86_64/">here</a> onto a Linux system (I used my Cobbler host).</p>
<p>I then created a tarball of the Syslinux tree by running this command:</p>
<pre><code> [root@cobbler ~]# cd /usr/share/
[root@cobbler share]# tar -cf /tmp/syslinux.tar syslinux/
</code></pre>
<p>I then copied the tarball to the plan9 system and extracted it under the directory <code>/386</code></p>
<h1>PXE configuration.</h1>
<p>The next step is to create the configuration which PXELinux will use. This is done on the Plan9 system, and it is relative to the file <code>pxelinux.0</code>, so I created the directory <code>/386/syslinux/pxelinux.cfg/</code>. Then I added the file <code>/386/syslinux/pxelinux.cfg/default</code> with the following contents:</p>
<script src="https://gist.github.com/981437.js?file=pxelinux.cfg-default"></script>
<p>This sets up our system so we may boot from PXE and have a menu which points us at two different <em>OTHER</em> PXE servers.</p>
<h1>Plan9 <code>/lib/ndb/local</code> configuration.</h1>
<p>The next step is to configure the Plan9 system so that when you boot your machine it will boot off the network and show the menu. I didn't setup my Plan9 environment so I don't know the details of making it a DHCP and DNS server, but this is the section of the config for a server which will be using the new PXE menu:</p>
<script src="https://gist.github.com/981437.js?file=ndb-local"></script>
<h1>Usability Configs.</h1>
<p>One last thing I did was to reduce the default timeout on the PXE configuration of the Cobbler server. On the Cobbler server, I edited the file <code>/etc/cobbler/pxe/pxedefault.template</code>, and changed the timeout from <code>200</code> to <code>100</code>, which makes the total timeout equal twenty seconds (ten for the first menu, ten for the cobbler menu)</p>
<p>I hope others can find this information useful.</p>
<img src="http://feeds.feedburner.com/~r/goozbachs_tech_tips-all/~4/QrMBoaO_V7I" height="1" width="1" alt=""/>http://blog.friocorte.com/2011/05/chain-loading-pxe-servers.htmlBootstrapping a RHEL Clonetag:devblog.friocorte.com,2011://2.362011-04-13T03:07:12Z2011-09-07T20:09:55ZThere was some interesting action on the CentOS mailing list recently which stemmed from a tweet posted by Dag Wieers. The question posited is: "How does one rebuild RHEL in a timely, open and collaborative way?" Well, a few of...Derek Carter
<p>There was some interesting <a href="http://lists.centos.org/pipermail/centos/2011-April/109827.html">action</a> on the CentOS mailing list recently which stemmed from a <a href="http://twitter.com/#!/dagwieers/status/57563280260087808">tweet</a> posted by Dag Wieers.</p>
<p>The question posited is: "How does one rebuild RHEL in a timely, open and collaborative way?"</p>
<p>Well, a few of my UTOSC friends and I did a little brainstorming and came up with what we think a good bootstrapping infrastructure for just such a project would entail:</p>
<h2>A good model</h2>
<p>A good example of how to run a distro is <a href="http://fedoraproject.org/">Fedora</a>. Their infrastructure team is very open and inclusive. They do have a system which allows for automated timely builds as well.</p>
<p>Yes, the Fedora project does slip it's release dates, but when it does so there is good reason and things are done in a very open manner. A release date slipping because it's "not done yet" is one thing. Helping your users understand what "not done yet" <em>*IS</em>, is a much more important part of managing a project.</p>
<h2>Bootstrapping</h2>
<p>A lot of these ideas come from observation of the Fedora Infrastructure team.</p>
<h3>Account management</h3>
<p>The Fedora Account system is central to the management of the Fedora Project. It's a directory service which handles accounts and access to various infrastructure resources.</p>
<p>A good directory service should be the first thing a RHEL clone would need to bring up.</p>
<p>The most robust I'm aware of is <a href="http://freeipa.org/page/Main_Page">FreeIPA</a>.</p>
<h3>Build system</h3>
<p>Fedora uses <a href="http://koji.fedoraproject.org/koji/">Koji</a> to manage the builds of their packages. This allows for a fully open and automate-able build of packages from an upstream vendor. This is truly the key to a distro which needs to move fast.</p>
<p>There should also be a system in place for feedback of the packages in the distro. <a href="https://admin.fedoraproject.org/updates">Bodhi</a> is a good tool for such a task.</p>
<h3>Public internet presence</h3>
<p>A distro also needs an internet presence, a way of managing content, interaction with users, interaction with developers and testers, and a means for wide communication. All of these tasks can be done pretty cheaply if not freely.</p>
<ul>
<li><p>Github for source code related to the project (you could even use it as an issue tracker)</p></li>
<li><p>Google Groups for mailing lists -- mailing lists are a great way to manage a diverse group of help.</p></li>
<li><p>A public website is also needed to host www.$PROG.org and the project's documentation.</p></li>
<li><p>There should also be a downloads.$PROJ.org for hosting things such as isos, yum repos, etc. This should be available via FTP, RSYNC, and HTTP.</p></li>
</ul>
<h3>Semi-public internet presence</h3>
<p>In order for a distro like this to survive there needs to be multiple mirrors of the downloads server. These would be primed via a mirror host which is restricted to everyone except a few first-level mirror sites. The update of the mirrors would use rsync.</p>
<h3>Internal Infrastructure.</h3>
<p>There should also be an infrastructure host whose job it is to manage the other hosts mentioned. This host would have no public-facing interfaces except SSH. This host would act as the configuration management system's server, as well as the bastion host for the trusted infrastructure users to access and configure other servers. </p>
<p><strong>EVERYTHING</strong> would be configured using a configuration management system (puppet, chef, etc). This allows for the infrastructure team to quickly adjust for demand or utilization of resources.</p>
<h2>Bottom line</h2>
<p>If such a project were to exist, the bootstrap resources needed would be:</p>
<ul>
<li><p>Four servers minimum -- SuperMicro has a <a href="http://www.supermicro.com/products/system/2U/6026/SYS-6026TT-HIBQRF.cfm?INF=">4-node 2-RMU server</a></p></li>
<li><p>Some storage of some sort -- An inexpensive SAN solution would allow for the most flexibility. This <a href="http://www.coraid.com/products/sr821_8_disk_etherdrive_storage_appliance">Coraid Appliance</a> would be nice. </p></li>
<li><p>People interested in being open and willing to work in this endeavour.</p></li>
</ul>
<p>This may be a pie-in-the-sky idea, but I think it has merit. Can you think of anything missing from the above proposal?</p>
<p>Cheers <br />
Goozbach</p>
<img src="http://feeds.feedburner.com/~r/goozbachs_tech_tips-all/~4/oQ_iuCsBO0M" height="1" width="1" alt=""/>http://blog.friocorte.com/2011/04/bootstrapping-a-rhel-clone.html_Dot_filestag:devblog.friocorte.com,2009://2.352009-11-29T02:33:12Z2011-09-07T20:44:22ZDot File Management I have always wanted a simple way of managing my bash file settings (.bashrc, .bash_profile and the like). I had built a system much like this one, but it didn't work very well. So I created a...Derek Carter
<h1>Dot File Management</h1>
<p>I have always wanted a simple way of managing my bash file settings (<code>.bashrc</code>, <code>.bash_profile</code> and the like). I had built a system much like this one, but it didn't work very well. So I created a ground-up rewrite.</p>
<p>You can find the latest code for <code>_Dot_Files</code> on the project's <a href="http://bit.ly/4OZCHy">github page</a>.</p>
<p>Enjoy</p>
<img src="http://feeds.feedburner.com/~r/goozbachs_tech_tips-all/~4/xhldgrSAa8k" height="1" width="1" alt=""/>http://blog.friocorte.com/2009/11/-dot-files.htmlUtah Open Source Conferencetag:devblog.friocorte.com,2009://2.342009-10-05T22:49:02Z2011-09-07T20:46:24ZI'll be presenting at the Utah Open Source Conference (UTOSC2009). My two presentations are on the Cobbler project. I'll be giving a presentation entitled "Introduction to Cobbler" which deals with the installation, configuration, and initial use of the Cobbler system....Derek Carter
<p>I'll be presenting at the Utah Open Source Conference (UTOSC2009).</p>
<p><a href="http://attend.utosc.com"><img src="http://dl.utosc.com/09/badges/utosc2009_Speaker.png" /></a> </p>
<p>My two presentations are on the Cobbler project. </p>
<p>I'll be giving a presentation entitled <a href="http://2009.utosc.com/presentation/59/">"Introduction to Cobbler"</a> which deals with the installation, configuration, and initial use of the Cobbler system.</p>
<p>My second presentation is <a href="http://2009.utosc.com/presentation/60/">"Cobbler Power Tools"</a> and will teach you how to make your Cobbler server that much more useful and powerful.</p>
<p>Come out and enjoy the conference, there will be many different presentations and something for the whole family on Saturday. More details can be found at the <a href="http://2009.utosc.com/pages/home/">UTOSC home page</a>.</p>
<img src="http://feeds.feedburner.com/~r/goozbachs_tech_tips-all/~4/7QAY7xChHBs" height="1" width="1" alt=""/>http://blog.friocorte.com/2009/10/utah-open-source-conference.htmlLiveblogging ALF -- Charitable Giving and OSStag:devblog.friocorte.com,2009://2.332009-09-19T16:24:44Z2011-09-07T20:14:09ZThe second conference presentation I attended was "Open source and Charitable Giving". Which was a married couple talking about a project called Qimo which is a Linux distro for kids, which they use for the computers they give away from...Derek Carter
<p>The second conference presentation I attended was <a href="http://atlantalinuxfest.org/node/42">"Open source and Charitable Giving"</a>. Which was a <a href="http://atlantalinuxfest.org/node/41">married couple</a> talking about a project called <a href="http://www.qimo4kids.com/">Qimo</a> which is a Linux distro for kids, which they use for the computers they give away from their <a href="http://www.quinncoincorporated.org/">charity</a>.</p>
<p>I hadn't thought a lot about it before but working on Open Source Software/Tech segues well into the charitable realm.</p>
<img src="http://feeds.feedburner.com/~r/goozbachs_tech_tips-all/~4/dlqn-djq_cA" height="1" width="1" alt=""/>http://blog.friocorte.com/2009/09/liveblogging-alf-charitable-gi.htmlLiveblogging ALFtag:devblog.friocorte.com,2009://2.322009-09-19T15:24:45Z2011-09-07T20:47:10ZToday I'm going to be liveblogging from the Atlanta Linux Fest The first presentation I attended was "Her PR Problem/Tooting the Horns of Women in Open Source" by Rikki Kite. Even though her presentation was about women in Open Source,...Derek Carter
<p>Today I'm going to be liveblogging from the <a href="http://atlantalinuxfest.org/">Atlanta Linux Fest</a></p>
<p>The first presentation I attended was <a href="http://atlantalinuxfest.org/node/46">"Her PR Problem/Tooting the Horns of Women in Open Source"</a> by <a href="http://www.linuxpromagazine.com/Online/Blogs/ROSE-Blog-Rikki-s-Open-Source-Exchange">Rikki Kite</a>. Even though her presentation was about women in Open Source, there were many things she covered on marketing yourself.</p>
<p>She talked about overcoming <a href="http://en.wikipedia.org/wiki/Impostor_syndrome">"Imposter Syndrome"</a> which is simply not being able to internalize your accomplishments. Another topic was the a good way to self promote, she called it:</p>
<blockquote>
<p>Self promote without self promoting aka Tooting someone else's horn.</p>
</blockquote>
<p>Also she talked about something called the <a href="http://tiffanybbrown.com/2004/08/08/fakeittilyoumakeitology/">"Daily Affirmations for Women in Open Source"</a> by someone named Tiffany B Brown, which are:</p>
<blockquote>
<ul>
<li>I know my shit</li>
<li>Stop Trippin'</li>
<li>Pretend I know</li>
<li>I will be a braggart</li>
</ul>
</blockquote>
<p>The only item above I <em>HAD</em> a problem with was the one "Pretend I know" I thought that pretending that you know could cause problems, but after asking Rikki about it she said it was more of a confidence thing instead of a knowledge thing.</p>
<p>More to come as I get to other sessions.</p>
<img src="http://feeds.feedburner.com/~r/goozbachs_tech_tips-all/~4/fU8Imuxo_FY" height="1" width="1" alt=""/>http://blog.friocorte.com/2009/09/liveblogging-alf.htmlMovable Type dynamic pagestag:devblog.friocorte.com,2009://2.312009-03-29T16:10:00Z2011-09-07T20:48:07ZKeeping my site up to date I was having trouble keeping my Projects and Presentation pages up to date. I was always creating new projects, and presentation materials, however I always forgot to update the corresponding pages in Movable Type....Derek Carter
<h1>Keeping my site up to date</h1>
<p>I was having trouble keeping my <a href="/projects/">Projects</a> and <a href="/presentation/">Presentation</a> pages up to date. I was always creating new projects, and presentation materials, however I always forgot to update the corresponding pages in Movable Type. I decided to make it easier to keep those pages updated.</p>
<p>The system I use is based on <a href="http://httpd.apache.org/docs/2.2/mod/mod_include.html">Mod_Include</a>, <a href="http://fletcherpenney.net/multimarkdown/">MultiMarkdown</a> and <a href="http://www.movabletype.org/">Movable Type</a>.</p>
<h1>Enabling per-directory Server-Side Includes</h1>
<p>The first step in this process is to enable server side includes. You can make it so <em>EVERY</em> <code>.html</code> page is parsed for SSI, but that can be a resource drain and cause slow page delivery times. I chose to enable SSI for all <code>.shtml</code> files in just two separate directories on my site.</p>
<h1>Apache Config -- Enable SSI</h1>
<p>The Apache configuration I use on my site is pretty simple. Here's how I enabled SSI on my <code>/projects/</code> directory:</p>
<pre><code> &lt;location /projects/&gt;
Options +Includes
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
XBitHack Full
&lt;/location&gt;
</code></pre>
<h1>Filesystem tweaks</h1>
<p>In order to make Movable Type "create" <code>.shtml</code> files I cheated. I just created symlinks from the <code>index.html</code> file to <code>index.shtml</code> in each location I wanted my SSI to work.</p>
<pre><code> cd /var/www/blog/projects/
ln -s index.html index.shtml
</code></pre>
<h1>Apache Config -- Rewrite Fun</h1>
<p>To make the request <em>ALWAYS</em> use the <code>.shtml</code> file I created a simple rewrite rule which invisbly proxied the requests for <code>/</code> and <code>index.html</code> to the proper <code>index.shtml</code> file.</p>
<pre><code> RewriteEngine On
# rewrite rule which makes /projects/index.html SSI enabled
RewriteRule ^/projects/index.html /projects/index.shtml [P,L]
RewriteRule ^/projects/$ /projects/index.shtml [P,L]
</code></pre>
<h1>Create your include</h1>
<p>The next step is to actually create an include file which will be what is used when the SSI directive is parsed. As I'm trying to include the contents of a completely different <a href="http://projects.friocorte.com/projects/">site</a> (projects.friocorte.com VS blog.friocorte.com) I used <code>wget</code> to fetch a copy of that page locally. I did this with a cronjob so the include is always up to date.</p>
<pre><code> 0 0 * * * wget -q -O /var/www/html/blog/projects/projects-include.html http://projects.friocorte.com/projects/
</code></pre>
<h2>Movable Type page contents</h2>
<p>The last step is to actually create an SSI directive in your Movable Type page. Here's the contents of my projects page:</p>
<pre><code> &lt;p style="margin-top: 0px;"&gt;As an opensource advocate I use, and suggest that others use opensource projects.&lt;br /&gt;
Here are a few of my open source projects:
&lt;!--#include virtual="projects-include.html" --&gt;
</code></pre>
<p>That's all there is to it. Now I have a site which keeps up with my projects, and my presentations automatically.</p>
<img src="http://feeds.feedburner.com/~r/goozbachs_tech_tips-all/~4/1OdPTlJW7v0" height="1" width="1" alt=""/>http://blog.friocorte.com/2009/03/movable-type-dynamic-pages.htmlCobbler Presentation and re-vamped pages.tag:devblog.friocorte.com,2009://2.302009-03-28T00:13:15Z2011-09-07T20:48:52ZCobbler presentation I've finally posted the first draft of my cobbler presentation materials. I'm not done with them, as I need to finish my remote-control system to do some screencasts. You can find the materials here. Re-vamped pages on my...Derek Carter
<h1>Cobbler presentation</h1>
<p>I've finally posted the first draft of my cobbler presentation materials. I'm not done with them, as I need to finish my remote-control system to do some screencasts. You can find the materials <a href="http://blog.friocorte.com/presentation-storage/cobbler/">here</a>.</p>
<h1>Re-vamped pages on my site</h1>
<p>Speaking of presentations, I've re-vamped some of the pages on this site. The two I've updated are the <a href="/presentation/">Presentations</a> and <a href="/projects/">Projects</a> pages. These pages were long neglected, and weren't updated as new projects or presentation materials were made available. Now these pages will no longer get out of date as I've made them automatically update as new projects or presentation materials are posted. Watch for a forthcoming blog post about how to accomplish the same thing with your own Movable Type installation.</p>
<p>Until next time. </p>
<p>--
Goozbach</p>
<img src="http://feeds.feedburner.com/~r/goozbachs_tech_tips-all/~4/sXKQW1007_I" height="1" width="1" alt=""/>http://blog.friocorte.com/2009/03/cobbler-presentation-and-revam.html