<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>My Wushu Blog</title>
	<atom:link href="http://www.mywushublog.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mywushublog.com</link>
	<description></description>
	<lastBuildDate>Thu, 03 May 2012 16:37:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Not Giving Up The Dream</title>
		<link>http://www.mywushublog.com/2012/05/not-giving-up-the-dream/</link>
		<comments>http://www.mywushublog.com/2012/05/not-giving-up-the-dream/#comments</comments>
		<pubDate>Wed, 02 May 2012 00:24:06 +0000</pubDate>
		<dc:creator>Mike Carlson</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://www.mywushublog.com/?p=1698</guid>
		<description><![CDATA[Glenn and I have kept up with our Tuesday nights band practice. Every Tuesday with rare exceptions, which is usually some form of vehicular issue on my end. Both Michele and I have had a slew of minor vehicle issues, mostly dead batteries. Our motivation has not been the more ...]]></description>
			<content:encoded><![CDATA[<p>Glenn and I have kept up with our Tuesday nights band practice. Every Tuesday with rare exceptions, which is usually some form of vehicular issue on my end. Both Michele and I have had a slew of minor vehicle issues, mostly dead batteries.</p>
<p>Our motivation has not been the more difficult part, nor has our muse left us ( The two of us have been able to work out some really fun segments ). I&#8217;ll have to post some of it when we can get a decent recording, right now we have been using my phone to record which only works to remind us of what we have done.</p>
<p>The only problem we&#8217;ve had is finding a solid place to practice.</p>
<p>Between the drum kit and my guitar, we generate a fair amount of noise. </p>
<p>I mean &#8220;structured noise&#8221;, not just regular noise. Noise with a rhythm.</p>
<p>Our first foray was the Tattoo Shop after hours. At the time, the shop was closed on Tuesday so we could sneak in there to practice. The problem with this spot was: we had to setup, and lugging around a drum set, setting up and finally, tearing it down and driving it back to Glenn and Erin&#8217;s soaked up at least an hour of our time. On a Tuesday night, loosing an hour is detrimental to me.</p>
<p>Glenn and Erin recently moved, so in between places, we jammed in the empty front room:<br />
<div id="attachment_1699" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/05/IMG_20120306_212243.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/05/IMG_20120306_212243-300x224.jpg" alt="" title="IMG_20120306_212243" width="300" height="224" class="size-medium wp-image-1699" /></a><p class="wp-caption-text">Blurry Glenn</p></div></p>
<p>After some though, Glenn and Eric decided to rent out a space in Seaside that was supposed to be art and music friendly. It was located in an industrial part of town where it seemed no one was around:<br />
<div id="attachment_1700" class="wp-caption aligncenter" style="width: 234px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/05/IMG_20120320_200951.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/05/IMG_20120320_200951-224x300.jpg" alt="" title="IMG_20120320_200951" width="224" height="300" class="size-medium wp-image-1700" /></a><p class="wp-caption-text">Plenty of space for the two of us.</p></div></p>
<p>We were incredibly excited! Setup was as easy as my unloading my amp and hooking it up. We had no distractions, privacy, and we could pin up song notes and new ideas on the wall.</p>
<p>Then, after our first practice, we heard a knock on the door&#8230;</p>
<p>A mother, who was clearly worked up asked us to stop and that we were disrupting her daughters sleep. </p>
<p>Both Glenn and I fell over each other in sincere apologies. We had no idea that people even lived in that area. So, after wrapping it up, and talking it over, we agreed that ~11pm was too late and we would wrap it up around 9:30pm the next time. He also wrote up a nice flier for the two houses we found within a two block radius:</p>
<blockquote><p>
Hello Neighbor!</p>
<p>I very recently began renting a studio space on Redwood and I play music a few days a week, electric on Tuesdays and acoustic on M, W, Fr. Please let me know if the noise is too loud or disruptive! Please feel free to call or text me if I am being too loud and I will <em>gladly</em> accommodate!</p>
<p>Thanks All! Be Well!<br />
<3 Glenn
</p></blockquote>
<p>His number was included (I omitted it here for privacy sake) and we both were excited to work things out.</p>
<p>Two days later, the Manager of the studio contacted Glenn and said there had been a complaint about the noise. He was very understanding, and he had even know that Glenn posted fliers (this was admitted to the manager from the &#8220;anonymous&#8221; individual). He said that even though it was part of the rental agreement that music was allowed, he would have to make sure we did not continue if there were any more complaints.</p>
<p>We had two more sessions after that. On the last one, we felt great about everything. We stopped at 9:30pm, we did as much as we could to diffuse and direct the sound. Our music was just starting to find its own voice, and we&#8217;d hi-five each other and say how cool this was.</p>
<p>The next Friday, we received the final complaint. The &#8220;anonymous&#8221; submitter said we kept her daughter up late, and we were so loud she had to turn up her TV to compensate.</p>
<p>At this point, we were a bit frustrated. The person never attempted to work things out with us. We gave her the easiest and guilt free mode of communication (a text message) to ask us to stop. We could have started practice earlier and stopped earlier had she given us the chance to work things out. We have to stop playing there and find a new place.</p>
<p>So, for at least a few weeks, we can play at a farm in Aromas:<br />
<div id="attachment_1701" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/05/IMG_20120424_202107.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/05/IMG_20120424_202107-300x224.jpg" alt="" title="IMG_20120424_202107" width="300" height="224" class="size-medium wp-image-1701" /></a><p class="wp-caption-text">Outside in nature! And no, I wont take better pictures, my phone sucks as a camera in most conditions but its all I have</p></div></p>
<p><div id="attachment_1712" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/05/IMG_20120501_185009.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/05/IMG_20120501_185009-300x224.jpg" alt="" title="IMG_20120501_185009" width="300" height="224" class="size-medium wp-image-1712" /></a><p class="wp-caption-text">Here is a better one from this week. Glenn plays the drums and keyboard, such a talented musician. I just hold the guitar.</p></div><br />
That is fun, however, as it gets dark and we have nothing but the stars and moon to accompany us, I can&#8217;t see what the heck I&#8217;m doing. I&#8217;m playing blind, and I&#8217;m not that great of a player to do that. I have to see!</p>
<p>I&#8217;ll bust out the ol&#8217; headlamp, and I promise not to blind anyone.</p>
<p>After the farm, who knows were we will go. We could scale it back to his living room again, and we pull out the micro-amps. Its not the same though, it feels good to have my amp turned up a little (saturate those tubes!) and the to feel the kick of the bass drum is nice.</p>
<p>Speaking of that, when we first practiced, I was so unaccustomed to the sound of a real live and up close drum set that  I thought I would pee&#8217;d myself&#8230; just a little&#8230; like a puppy startled by a loud sneeze. I have never played at a high volume, nothing beyond what only I could hear in my garage. That is also a startling realization, that I actually have to PLAY and be HEARD by more than just me :) </p>
<p>That made me spring a leak just thinking about it&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mywushublog.com/2012/05/not-giving-up-the-dream/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xen and Convirture</title>
		<link>http://www.mywushublog.com/2012/04/xen-and-convirture/</link>
		<comments>http://www.mywushublog.com/2012/04/xen-and-convirture/#comments</comments>
		<pubDate>Tue, 10 Apr 2012 19:08:56 +0000</pubDate>
		<dc:creator>Mike Carlson</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Geekyness]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Scientific Linux]]></category>
		<category><![CDATA[Xen]]></category>

		<guid isPermaLink="false">http://www.mywushublog.com/?p=1684</guid>
		<description><![CDATA[My previous experience with a large virtual &#8220;enterprise&#8221; environment was with VMWare&#8217;s ESXi and vSphere. Performance wise, I was always fairly happy with ESXi knowing that it was a virtual machine of course. There were a few issues I recall: silent data corruption (fsck&#8217;ing Linux and FreeBSD volumes would reveal ...]]></description>
			<content:encoded><![CDATA[<p>My previous experience with a large virtual &#8220;enterprise&#8221; environment was with VMWare&#8217;s ESXi and vSphere.</p>
<p>Performance wise, I was always fairly happy with ESXi knowing that it was a virtual machine of course. There were a few issues I recall: </p>
<ul>
<li>silent data corruption (fsck&#8217;ing Linux and FreeBSD volumes would reveal inconsistent filesystem information, but there were never any errors reported to the VM)</li>
<li>Live migrations were not always stable. In fact, most of the time it would result in an unexpected shutdown</li>
</ul>
<p>I doubt it was solely VMWares fault, as it could have been a series of mis-configurations and poor implementation descisions. Again, that is not a black mark against VMWare, it is just part of my own personal user experience.</p>
<p>What IS a black mark against VMWare is how expensive their product is, and I found out recently that version 5 now charges by how much memory your servers have (and not by processor socket, which is how I think it used to be). vRAM as they like to call it. </p>
<p>This is a problem in our environment, as memory is really valuable in a virtualized environment; shared disk subsysterms will ALWAYS be an order of magnitude slower than having dedicated disks. By allowing the OS&#8217;s virtual memory layer to do all of the caching in RAM, we can load up a hypervisor server with as much ram as reasonably priced and give a VM a few gig&#8217;s to work with.</p>
<p>That is what we did at Bay Photo Lab :)</p>
<p>We spec&#8217;d two servers with 4 <a href="http://en.wikipedia.org/wiki/List_of_AMD_Opteron_microprocessors#Opteron_6200-series_.22Interlagos.22_.2832_nm.29">AMD Opteron 6220 processors</a>, each with 128GB of system memory each.</p>
<p>That gave us 64 cores, and ~254GB of usable memory (Dom0 uses ~2GB). The price point for using AMD over Intel was too much to pass up. We were able to get double the amount of resources for nearly half the price.</p>
<p>Rob had already built up a nice GlusterFS cluster, so we use the Gluster FUSE client on our Xen servers to access the shared storage. This works out nicely, it isn&#8217;t the fastest storage (currently we are using a 1Gb network), however, we have the option to upgrade various points like moving to InfiniBand or 10Gb ethernet.</p>
<p>Before this new environment, we were manually creating a Xen configuration file. This is OK for maybe Rob and I. This is not OK for anyone else though, so I started looking for a user interface.</p>
<p>The simple route was to install Virt Manager, VNC Server (or use SSH tunneling). That still would only work for Rob and myself, as access to the Xen servers should be limited.</p>
<p>I came across <a href="http://www.convirture.com/products_opensource.php">Convirture</a>, with has a free/open source edition of their hypervisor manager. Convirture uses libvirt, and will work with either KVM or Xen.</p>
<p>They also offer a nice Appliance you can download and run &#8220;xm create&#8221; on one of your hypervisor servers. After messing around with rolling my own version, I decided that the virtual appliance was much better to use.</p>
<div id="attachment_1685" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/04/convirt-www-interface.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/04/convirt-www-interface-300x235.jpg" alt="" title="convirt-www-interface" width="300" height="235" class="size-medium wp-image-1685" /></a><p class="wp-caption-text">Main Page. Here you can quickly see the status of your VM&#039;s.</p></div>
<p>FYI: The VM&#8217;s that are greyed out are VMs that were created outside of Convirture. I had created one VM on the new Xen cluster before Rob had created the new FreeBSD Template to install from. I&#8217;ll have to convert it at some point.</p>
<div id="attachment_1686" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/04/convirt-templates.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/04/convirt-templates-300x235.jpg" alt="" title="convirt-templates" width="300" height="235" class="size-medium wp-image-1686" /></a><p class="wp-caption-text">Speaking of Templates, we only have a few. This is still a growing project.</p></div>
<div id="attachment_1687" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/04/convirt-vnc.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/04/convirt-vnc-300x235.jpg" alt="" title="convirt-vnc" width="300" height="235" class="size-medium wp-image-1687" /></a><p class="wp-caption-text">Connecting to a Virtual Machine&#039;s console is SUPER easy. </p></div>
<p>You can either choose to launch the Java applet (works great on Windows), or, you can choose to use your own VNC client. Since I decided not to install Java on my FreeBSD Desktop, I chose to connect with my own VNC viewer. I simply open up a Shell after I tell Convirture to connect me to a console and type:</p>
<pre>
mikec@b-bot ~> vncviewer convirt.bayphoto.local:6900
</pre>
<p>And I&#8217;m presented with this wonderful window:<br />
<div id="attachment_1688" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/04/vnc-xen.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/04/vnc-xen-300x175.jpg" alt="" title="vnc-xen" width="300" height="175" class="size-medium wp-image-1688" /></a><p class="wp-caption-text">A simple and fast console</p></div></p>
<p>From there, I can install portinstall + puppet and then its all up to our node definition to do the rest.</p>
<p>There are a lot of things you can do with the Open Source version, and after some configuration file tuning, I was able to get Live Migrations to work. </p>
<p>Templates are really easy to work with, and I think I&#8217;d like to get a base FreeBSD image created that already has Puppet installed and ready to go. That would make deploying new VM&#8217;s a lot faster. Same with Windows too.</p>
<p>Now the fun part&#8230; How much trouble was setting all of this up?</p>
<p>As I mentioned above, we use Xen here. To me at this point, it honestly doesn&#8217;t matter if KVM is heads over heels better than KVM. What matters is we already have a stable environment.</p>
<p>I tried various Distro&#8217;s: Debian, CentOS, Fedora and Scientific Linux</p>
<p>I also tried Two major kernel branches: 3.2 and 2.6.32</p>
<p>There was a problem getting GlusterFS to work on Debian versus Fedora, and Fedora is a KVM environment, and I wanted to jump through as little hoops as possible.</p>
<p>It took a few days to notice, but GlusterFS would not work reliably on 3.2, the system would simply reboot when I tried to write data out to the gluster filesystem. No warning, no nice error log, nothing. </p>
<p>In the end, I fell back to a RHEL based Distro (Scientific Linux), as Gluster seems to work well with a RHEL based OS. Also, since my Puppet manifests already have CentOS, it was easy for me to shove Scientific Linux in those modules.</p>
<p>I also fell back to using the 2.6.32 kernel, which is also why I was unable to use Debian. It only had Xen 4 and 3.2 kernels to choose from.</p>
<p>Scientific Linux is RHEL based, so it has KVM packages. Not Xen packages. So, I followed this guide:<br />

http://www.crc.id.au/xen-on-rhel6-scientific-linux-6-centos-6-howto/</p>

<p>Then I found out Libvirt does not have Xen support build in, so I had to use this guide as well:<br />

http://wiki.xensource.com/xenwiki/RHEL6Xen4Tutorial</p>

<p>Also, Scientific Linux strayed from the RHEL/Linux ethernet device convention, ethX, to emX (what would have been eth0 is now em0). This caused a little hiccup with the configuration I was managing. It was a small annoyance.</p>
<p>Here is my main beef: I tried everything I could to stick with a stock OS that met the following requirements:</p>
<ul>
<li>Xen 4.x</li>
<li>GlusterFS support</li>
</ul>
<p>That was shockingly difficult to do. In the end I had to re-compile a few packages, and I still get these fun messages:</p>
<pre>

brctl show
bridge name	bridge id		STP enabled	interfaces
virbr0		/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
/sys/class/net/virbr0/bridge: No such file or directory
8000.52540043692c	yes		virbr0-nic
xenbr0		/sys/class/net/xenbr0/bridge: No such file or directory
/sys/class/net/xenbr0/bridge: No such file or directory
/sys/class/net/xenbr0/bridge: No such file or directory
/sys/class/net/xenbr0/bridge: No such file or directory
/sys/class/net/xenbr0/bridge: No such file or directory
/sys/class/net/xenbr0/bridge: No such file or directory
/sys/class/net/xenbr0/bridge: No such file or directory
/sys/class/net/xenbr0/bridge: No such file or directory
/sys/class/net/xenbr0/bridge: No such file or directory
/sys/class/net/xenbr0/bridge: No such file or directory
/sys/class/net/xenbr0/bridge: No such file or directory
/sys/class/net/xenbr0/bridge: No such file or directory
8000.d067e5fbefa7	no		em1
							tap39.0
							tap40.0
							tap41.0
							tap43.0
							vif39.0
							vif40.0
							vif41.0
							vif43.0
</pre>
<p>New RHEL 6 based OS&#8217;s have support for IGMP inspection, and bridge-utils does not have the proper support for this. Its annoying, and it took up a good day of research to come to a reasonable resolution.</p>
<p>With all of this, I would have really been pleased if <a href="http://wiki.freebsd.org/BHyVe">BHyVe</a> (&#8220;Bee hive&#8221;, the BSD hypervisor project) was ready and at production quality. </p>
<p>All of these little issues I had with different kernel, base packages, vendor packages, are just par for the course when dealing with Linux. It can sometimes be mindbogglingly frustrating to deal with such a chaotic environment when you come from a very stable and well documented environment like FreeBSD.</p>
<p>FreeBSD lacks support, and that is for various reasons. The biggest is FreeBSD has less of a market share, a smaller developer and user community, and very VERY little marketing. Linux is still the right tool for this job, but what a sloppy tool it can be. Maybe in a few years, BHyVe will be a viable alternative.</p>
<p>In the end, I&#8217;m happy with this environment. I think Xen is great for our environment and works for our needs. Plus, the cost of doing business is much lower when we utilize free software. We can feasibly deploy 32 dual cpu VM&#8217;s with 8GB ram each for what costs us about $400 per instance. That is being overly generous too!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mywushublog.com/2012/04/xen-and-convirture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skynet Began in A Kitchen</title>
		<link>http://www.mywushublog.com/2012/03/skynet-began-in-a-kitchen/</link>
		<comments>http://www.mywushublog.com/2012/03/skynet-began-in-a-kitchen/#comments</comments>
		<pubDate>Fri, 16 Mar 2012 18:33:05 +0000</pubDate>
		<dc:creator>Mike Carlson</dc:creator>
				<category><![CDATA[Family]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Geekyness]]></category>

		<guid isPermaLink="false">http://www.mywushublog.com/?p=1663</guid>
		<description><![CDATA[Over the past year or so, Caralyne has become increasingly interested in scientastical things like computers, Minecraft, Robots, Mythbusters, and specifically, Mythbusters! I&#8217;ve been using our TV for my own nefarious deeds, unbeknownst to Caralyne, as an educational tool in science and skepticism. Between Good Eats, Mythbusters and a few ...]]></description>
			<content:encoded><![CDATA[<p>Over the past year or so, Caralyne has become increasingly interested in scientastical things like computers, Minecraft, Robots, Mythbusters, and specifically, Mythbusters!</p>
<p>I&#8217;ve been using our TV for my own nefarious deeds, unbeknownst to Caralyne, as an educational tool in science and skepticism. Between Good Eats, Mythbusters and a few PBS clips of Neil Degrasse Tyson being awesome, something was bound to stick.</p>
<p>Also, as a daughter and child of mine, she is constantly seeking my affection and approval&#8230; which I am not above exploiting these features she no doubt got from me, so I give her a LOT of positive feedback and attention when we are watching these shows.</p>
<p>I ask her questions like &#8220;What do you think will happen?&#8221; and &#8220;Why are they doing that?&#8221;, and sometimes I&#8217;ll ask her to summarize.</p>
<p>It certainly has paid off! She signed up for &#8220;Science Day&#8221; at school, and when the Schoolastic book catalog came around, she picked out a Mythbusters Experiments book. It is a sweet, kid friendly book that has a collection of myths to bust. Well, some are myths, and some are just plain cool.</p>
<p>Since this was during the time I was going back and forth between Antioch and Santa Cruz, I tried to make our weekends together a little more exciting by doing one of the activities in her Mythbustere&#8217;s book. The first was making a Volcano:<br />
<div id="attachment_1664" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/03/IMG_20111113_123258.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/03/IMG_20111113_123258-300x224.jpg" alt="" title="IMG_20111113_123258" width="300" height="224" class="size-medium wp-image-1664" /></a><p class="wp-caption-text">Waiting for Mt. El Monte&#039;s eruption!</p></div><br />
<div id="attachment_1665" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/03/IMG_20111113_124313.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/03/IMG_20111113_124313-300x224.jpg" alt="" title="IMG_20111113_124313" width="300" height="224" class="size-medium wp-image-1665" /></a><p class="wp-caption-text">Our eerie blue lava did not startle our fearless Aussie, he in fact licked up as much as he could (i bet it tasted like fish and chips...)</p></div><br />
<div id="attachment_1666" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/03/IMG_20111113_124321.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/03/IMG_20111113_124321-300x224.jpg" alt="" title="IMG_20111113_124321" width="300" height="224" class="size-medium wp-image-1666" /></a><p class="wp-caption-text">We repeated this 3 to 4 times, it was a lot of fun</p></div></p>
<p>I somehow got the idea in my head that I should raise the bar and give something to Caralyne that was a little more challenging to work on. I talked with my buddy Steve and he reminded me that Fry&#8217;s has a neat collection of robotic kits, and that has been our latest project :)</p>
<p>We built it together; I did all of the soldering, and she did the rest of the assembly. I think it worked out well. Next time I&#8217;ll have her try her hand at soldering, maybe pull put the Volt/Ohm meter and let her verify the resistors.</p>
<p>It took a few weekends, which got stretched out over a few months due to the big move and all, but the process was very rewarding. </p>
<div id="attachment_1669" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/03/IMG_20120204_131328.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/03/IMG_20120204_131328-300x224.jpg" alt="" title="IMG_20120204_131328" width="300" height="224" class="size-medium wp-image-1669" /></a><p class="wp-caption-text">Caralyne showing off the circuit board and gearbox</p></div><br />
<div id="attachment_1670" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/03/IMG_20120311_153207.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/03/IMG_20120311_153207-300x224.jpg" alt="" title="IMG_20120311_153207" width="300" height="224" class="size-medium wp-image-1670" /></a><p class="wp-caption-text">Caralyne with her finished robot :) And Owen... Well, Owen has a bag for a hat. I&#039;m not sure about that kid...</p></div><br />
<div id="attachment_1671" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/03/IMG_20120311_153310.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/03/IMG_20120311_153310-300x224.jpg" alt="" title="IMG_20120311_153310" width="300" height="224" class="size-medium wp-image-1671" /></a><p class="wp-caption-text">Both of them watched the little robot crawl around, and Caralyne was excited to see that its sensor on the top would react to the environment.</p></div>
<p>I was actually surprised it worked. It has been a while since I&#8217;ve assembled something like this (not since Heald), and I remember when I did this kind of stuff in high school, a few of these kits never worked.</p>
<p>After a few more of these under her belt, I&#8217;d like to get her one that you can program. If I can get her started on learning a simple programming language before she turns into a teenager that hates me, I will feel a lot more secure in her future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mywushublog.com/2012/03/skynet-began-in-a-kitchen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using CouchDB with Puppet and Bacula</title>
		<link>http://www.mywushublog.com/2012/01/using-couchdb-with-puppet-and-bacula/</link>
		<comments>http://www.mywushublog.com/2012/01/using-couchdb-with-puppet-and-bacula/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 04:48:07 +0000</pubDate>
		<dc:creator>Mike Carlson</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Geekyness]]></category>
		<category><![CDATA[Bacula]]></category>
		<category><![CDATA[CouchDB]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Puppet]]></category>

		<guid isPermaLink="false">http://www.mywushublog.com/?p=1648</guid>
		<description><![CDATA[On aspect that I was never happy with the Bacula environment I built while at LLNL was the fact that I could no look up certain values for each client. Values like: Passwords Storage Devices Certificates (if you are using Encryption) Well, over the past few week&#8217;s I&#8217;ve been able ...]]></description>
			<content:encoded><![CDATA[<p>On aspect that I was never happy with the Bacula environment I built while at LLNL was the fact that I could no look up certain values for each client. Values like:</p>
<ul>
<li>Passwords</li>
<li>Storage Devices</li>
<li>Certificates (if you are using Encryption)</li>
</ul>
<p>Well, over the past few week&#8217;s I&#8217;ve been able to work around this problem by storing additional information in a CouchDB DB.</p>
<p>It is not the ideal solution, but it is a start and I&#8217;m okay with that. I should also warn you, I do HORRIBLE things here with Bash and JSON. Since Bash doesn&#8217;t know about JSON, I rely upon awk. I know, I know, I should re-write all of this in a nice new language like Python or Ruby&#8230;</p>
<p>First thing is first, I had to create a new database:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ curl <span style="color: #660033;">-kX</span> PUT https:<span style="color: #000000; font-weight: bold;">//</span>puppet.bayphoto.local<span style="color: #000000; font-weight: bold;">/</span>bacula_meta
<span style="color: #7a0874; font-weight: bold;">&#123;</span><span style="color: #ff0000;">&quot;ok&quot;</span>:<span style="color: #c20cb9; font-weight: bold;">true</span><span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<p>I&#8217;m not going to worry about that name, to me it is a database that contains some metadata of our clients.</p>
<p>My client creation tool that I posted in my previous <a href="/2011/07/bacula-in-the-enterprise-part-2/">Bacula</a> article has been updated to do a little bit more. Aside from no longer using TEMPLATE files, I&#8217;ve added some additional code to push a few details into this new bacula_meta database. Here is my &#8220;write_json&#8221; function:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Some NEW Variables:</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">COUCH_SERVER</span>=<span style="color: #ff0000;">&quot;https://puppet.bayphoto.local&quot;</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">DB</span>=<span style="color: #ff0000;">&quot;bacula_meta&quot;</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">CERTDIR</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$BDIR</span>/certs&quot;</span>
&nbsp;
write_json<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
   curl <span style="color: #660033;">-H</span> <span style="color: #ff0000;">&quot;Content-Type: application/json&quot;</span> <span style="color: #660033;">-kX</span> PUT <span style="color: #660033;">-d</span> <span style="color: #ff0000;">'{ &quot;_id&quot;: &quot;'</span><span style="color: #800000;">${HOSTNAME}</span><span style="color: #ff0000;">'&quot;,&quot;passhash&quot;: &quot;'</span><span style="color: #800000;">${PASSHASH}</span><span style="color: #ff0000;">'&quot; }'</span> <span style="color: #007800;">$COUCH_SERVER</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$DB</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<p>The document I create is simple, it is named after the short hostname of the client added to backups, and for this first run we store that and the password.</p>
<p>The &#8220;main&#8221; function of the script first tests to see if a document in the bacula_meta db exists, and if not it will create a new client. If it does exist, you can either continue and re-create the bacula client&#8217;s configuration, or quite:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">TEST</span>=<span style="color: #000000; font-weight: bold;">`</span>curl <span style="color: #660033;">-k</span> <span style="color: #660033;">-s</span> <span style="color: #660033;">-X</span> GET <span style="color: #007800;">$COUCH_SERVER</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$DB</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$TEST</span> == <span style="color: #000000; font-weight: bold;">*</span>not_found<span style="color: #000000; font-weight: bold;">*</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
       <span style="color: #666666; font-style: italic;"># Generate a bacula password.</span>
       <span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PASSHASH</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #007800;">if</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>random <span style="color: #007800;">bs</span>=<span style="color: #000000;">6</span> <span style="color: #007800;">count</span>=<span style="color: #000000;">4</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null <span style="color: #000000; font-weight: bold;">|</span> openssl base64<span style="color: #000000; font-weight: bold;">`</span>
&nbsp;
       <span style="color: #666666; font-style: italic;"># This is the actual .conf configuration</span>
       print_client_conf
&nbsp;
       <span style="color: #666666; font-style: italic;"># Create a new client document in $DB</span>
       write_json
&nbsp;
       <span style="color: #666666; font-style: italic;"># Create SSL key-pair</span>
       create_keys
&nbsp;
       <span style="color: #666666; font-style: italic;"># Adding the client .conf file for the director to source.</span>
       <span style="color: #7a0874; font-weight: bold;">echo</span> \<span style="color: #000000; font-weight: bold;">@</span><span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span>.conf <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.conf
&nbsp;
       <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'created client definition: '</span><span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span>.conf
       <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'for '</span><span style="color: #007800;">$HOSTNAME</span>
<span style="color: #000000; font-weight: bold;">else</span>
       <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'client '</span><span style="color: #007800;">$HOSTNAME</span> <span style="color: #ff0000;">'already exists.'</span>
       <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'Do you want to override the current configuration for:'</span>
       <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'      '</span><span style="color: #007800;">$HOSTNAME</span>
       <span style="color: #c20cb9; font-weight: bold;">read</span> <span style="color: #660033;">-p</span> <span style="color: #ff0000;">&quot;[y/N] &quot;</span> prompt
       <span style="color: #007800;">prompt</span>=<span style="color: #800000;">${prompt,,}</span>
       <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$prompt</span> =~ ^<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">yes</span><span style="color: #000000; font-weight: bold;">|</span>y<span style="color: #7a0874; font-weight: bold;">&#41;</span>$ <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
       <span style="color: #000000; font-weight: bold;">then</span>
               <span style="color: #666666; font-style: italic;"># if we choose to override, a new client conf will be generated and added and commited.</span>
&nbsp;
               <span style="color: #666666; font-style: italic;"># Lets re-obtain our stored client password first</span>
               <span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PASSHASH</span>=<span style="color: #000000; font-weight: bold;">`</span>curl <span style="color: #660033;">-k</span>  <span style="color: #660033;">-X</span> GET <span style="color: #007800;">$COUCH_SERVER</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$DB</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> -F: <span style="color: #ff0000;">'gsub(&quot;{|}&quot;,&quot;&quot;) { print $5 }'</span><span style="color: #000000; font-weight: bold;">`</span>
&nbsp;
               <span style="color: #666666; font-style: italic;"># print out a new cliend.conf</span>
               print_client_conf
&nbsp;
               <span style="color: #666666; font-style: italic;"># Push the clients key-pair back to couchdb       </span>
               curl <span style="color: #660033;">-k</span> <span style="color: #660033;">-X</span> PUT <span style="color: #007800;">$COUCH_SERVER</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$DB</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$FQDN</span>-fd.pem?<span style="color: #007800;">rev</span>=<span style="color: #007800;">$DOC_REV</span> <span style="color: #660033;">--data-binary</span> <span style="color: #000000; font-weight: bold;">@</span><span style="color: #007800;">$CERTDIR</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$FQDN</span>-fd.pem  <span style="color: #660033;">-H</span> <span style="color: #ff0000;">&quot;Content-Type: application/octet-stream&quot;</span>
&nbsp;
                <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-w</span> <span style="color: #007800;">$HOSTNAME</span> <span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.conf
                <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$?</span> <span style="color: #660033;">-eq</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
                <span style="color: #000000; font-weight: bold;">then</span>
                        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'client '</span><span style="color: #007800;">$HOSTNAME</span> <span style="color: #ff0000;">'already exists...'</span>
                <span style="color: #000000; font-weight: bold;">else</span>
                        <span style="color: #7a0874; font-weight: bold;">echo</span> \<span style="color: #000000; font-weight: bold;">@</span><span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span>.conf <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.conf
                <span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
       <span style="color: #000000; font-weight: bold;">else</span>
               <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Ok, no clients were modified or added!&quot;</span>
       <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

<p>The other addition was a create_keys function. Our clients encrypt their data to the storage node (we send some backup volumes to S3 storage, which is over http and not stored in any sort of encrypted format), and we needed a decent way to distribute the keys (using Puppet&#8230;).</p>
<p>This was difficult for me to do. What I failed to understand about adding attachments to CouchDB is you have to reference the current document _rev, and after a LOT of trial and error I finally got it. The DOC_REV variable grabs the current documents revision:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">DOC_REV</span>=<span style="color: #000000; font-weight: bold;">`</span>curl <span style="color: #660033;">-k</span> <span style="color: #660033;">-s</span> <span style="color: #660033;">-X</span> GET <span style="color: #007800;">$COUCH_SERVER</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$DB</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #660033;">-F</span> <span style="color: #ff0000;">':|&quot;'</span> <span style="color: #ff0000;">'{ print $10}'</span><span style="color: #000000; font-weight: bold;">`</span></pre></div></div>

<p>Which is then used when I actually PUT the file in there:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">curl <span style="color: #660033;">-k</span> <span style="color: #660033;">-X</span> PUT <span style="color: #007800;">$COUCH_SERVER</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$DB</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$CN</span>-fd.pem?<span style="color: #007800;">rev</span>=<span style="color: #007800;">$DOC_REV</span> <span style="color: #660033;">--data-binary</span> <span style="color: #000000; font-weight: bold;">@</span><span style="color: #800000;">${CERTDIR}</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$CN</span>-fd.pem  <span style="color: #660033;">-H</span> <span style="color: #ff0000;">&quot;Content-Type: application/octet-stream&quot;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">create_keys<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
  <span style="color: #007800;">DOC_REV</span>=<span style="color: #000000; font-weight: bold;">`</span>curl <span style="color: #660033;">-k</span> <span style="color: #660033;">-s</span> <span style="color: #660033;">-X</span> GET <span style="color: #007800;">$COUCH_SERVER</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$DB</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #660033;">-F</span> <span style="color: #ff0000;">':|&quot;'</span> <span style="color: #ff0000;">'{ print $10}'</span><span style="color: #000000; font-weight: bold;">`</span>
  <span style="color: #007800;">C</span>=<span style="color: #ff0000;">&quot;US&quot;</span>
  <span style="color: #007800;">ST</span>=<span style="color: #ff0000;">&quot;California&quot;</span>
  <span style="color: #007800;">L</span>=<span style="color: #ff0000;">&quot;Santa Cruz&quot;</span>
  <span style="color: #007800;">O</span>=<span style="color: #ff0000;">&quot;Bay Photo Lab&quot;</span>
  <span style="color: #007800;">OU</span>=<span style="color: #ff0000;">&quot;IT&quot;</span>
  <span style="color: #007800;">CN</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">${HOSTNAME}</span>.bayphoto.local&quot;</span>
  <span style="color: #007800;">EMAIL</span>=<span style="color: #ff0000;">&quot;bayit@bayphoto.com&quot;</span>
&nbsp;
openssl genrsa <span style="color: #660033;">-out</span> <span style="color: #800000;">${CERTDIR}</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${CN}</span>.key <span style="color: #000000;">2048</span>
openssl req <span style="color: #660033;">-new</span> <span style="color: #660033;">-key</span> <span style="color: #800000;">${CERTDIR}</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${CN}</span>.key <span style="color: #660033;">-x509</span> <span style="color: #660033;">-out</span> <span style="color: #800000;">${CERTDIR}</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${CN}</span>.cert <span style="color: #cc0000; font-style: italic;">&lt;&lt;EOF
${C}
${ST}
${L}
${O}
${OU}
${CN}
$EMAIL
EOF</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;&quot;</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #800000;">${CERTDIR}</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${CN}</span>.key <span style="color: #800000;">${CERTDIR}</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${CN}</span>.cert <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #800000;">${CERTDIR}</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${CN}</span>-fd.pem
&nbsp;
curl <span style="color: #660033;">-k</span> <span style="color: #660033;">-X</span> PUT <span style="color: #007800;">$COUCH_SERVER</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$DB</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$CN</span>-fd.pem?<span style="color: #007800;">rev</span>=<span style="color: #007800;">$DOC_REV</span> <span style="color: #660033;">--data-binary</span> <span style="color: #000000; font-weight: bold;">@</span><span style="color: #800000;">${CERTDIR}</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$CN</span>-fd.pem  <span style="color: #660033;">-H</span> <span style="color: #ff0000;">&quot;Content-Type: application/octet-stream&quot;</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<p>So what does adding a new client look like using this updated tool?</p>
<pre>
# ./cclient.bash -s Standard -h client-a
INSERT 0 1
{"ok":true,"id":"client-a","rev":"1-0841684988ec85c6d2b16cb941a739ac"}
Generating RSA private key, 2048 bit long modulus
..............................................................+++
..............+++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:State or Province Name (full name) [Some-State]:Locality Name (eg, city) []:Organization Name (eg, company) [Internet Widgits Pty Ltd]:Organizational Unit Name (eg, section) []:Common Name (eg, YOUR name) []:Email Address []:
{"ok":true,"id":"client-a","rev":"2-21d4e7bc019c2176dfa2583b320387ab"}
created client definition: /usr/local/etc/bacula/clients.d/client-a.conf
for client-a
</pre>
<p>And my new record in CouchDB has all the right data:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">curl <span style="color: #660033;">-kX</span> GET https:<span style="color: #000000; font-weight: bold;">//</span>puppet.bayphoto.local<span style="color: #000000; font-weight: bold;">/</span>bacula_meta<span style="color: #000000; font-weight: bold;">/</span>client-a
<span style="color: #7a0874; font-weight: bold;">&#123;</span><span style="color: #ff0000;">&quot;_id&quot;</span>:<span style="color: #ff0000;">&quot;client-a&quot;</span>,<span style="color: #ff0000;">&quot;_rev&quot;</span>:<span style="color: #ff0000;">&quot;2-21d4e7bc019c2176dfa2583b320387ab&quot;</span>,<span style="color: #ff0000;">&quot;hostname&quot;</span>:<span style="color: #ff0000;">&quot;client-a&quot;</span>,<span style="color: #ff0000;">&quot;passhash&quot;</span>:<span style="color: #ff0000;">&quot;y9WBgacrd8JbZjrefeZHKbPk9Kda5UQc&quot;</span>,<span style="color: #ff0000;">&quot;_attachments&quot;</span>:<span style="color: #7a0874; font-weight: bold;">&#123;</span><span style="color: #ff0000;">&quot;client-a.bayphoto.local-fd.pem&quot;</span>:<span style="color: #7a0874; font-weight: bold;">&#123;</span><span style="color: #ff0000;">&quot;content_type&quot;</span>:<span style="color: #ff0000;">&quot;application/octet-stream&quot;</span>,<span style="color: #ff0000;">&quot;revpos&quot;</span>:<span style="color: #000000;">2</span>,<span style="color: #ff0000;">&quot;digest&quot;</span>:<span style="color: #ff0000;">&quot;md5-kqi8ODloPxT6D6IxZbCoVg==&quot;</span>,<span style="color: #ff0000;">&quot;length&quot;</span>:<span style="color: #000000;">3411</span>,<span style="color: #ff0000;">&quot;stub&quot;</span>:<span style="color: #c20cb9; font-weight: bold;">true</span><span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #7a0874; font-weight: bold;">&#125;</span><span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<p>Thats ugly&#8230; how about a nice screenshot!<br />
<a href="http://www.mywushublog.com/wp-content/uploads/2012/01/client-a.png"><img src="http://www.mywushublog.com/wp-content/uploads/2012/01/client-a-300x173.png" alt="" title="client-a" width="300" height="173" class="aligncenter size-medium wp-image-1649" /></a></p>
<p>Now that we have the Bacula tool pushing passwords and and certificates, we need to get Puppet to pull the data.</p>
<p>I found a github project called couchdblookup:<br />

https://github.com/camptocamp/puppet-couchdb/blob/master/lib/puppet/parser/functions/couchdblookup.rb</p>

<p>I placed that couchdblookup.rb file into one of my Puppet modules (etc/puppet/environments/production/bacula/lib/puppet/parser/functions/couchdblookup.rb), and created a bacula::fd::cert class:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> bacula::fd::cert inherits bacula::fd <span style="color:#006600; font-weight:bold;">&#123;</span>
&nbsp;
  <span style="color:#008000; font-style:italic;"># Pull bacula client password from our</span>
  <span style="color:#008000; font-style:italic;"># CouchDB server</span>
  <span style="color:#ff6633; font-weight:bold;">$couchdb_bind_address</span> = <span style="color:#996600;">&quot;puppet.bayphoto.local&quot;</span>
  <span style="color:#ff6633; font-weight:bold;">$couchdb_port</span> = <span style="color:#996600;">&quot;5984&quot;</span>
  <span style="color:#ff6633; font-weight:bold;">$couchdb_base_url</span> = <span style="color:#996600;">&quot;https://${couchdb_bind_address}:${couchdb_port}&quot;</span>
  <span style="color:#ff6633; font-weight:bold;">$bacula_meta</span> = <span style="color:#996600;">&quot;${couchdb_base_url}/bacula_meta/${hostname}&quot;</span>
  <span style="color:#ff6633; font-weight:bold;">$bacula_fd_cert</span> = <span style="color:#996600;">&quot;${couchdb_base_url}/bacula_meta/${hostname}/${fqdn}-fd.pem&quot;</span>
&nbsp;
  <span style="color:#ff6633; font-weight:bold;">$bacula_fd_passhash</span> = couchdblookup<span style="color:#006600; font-weight:bold;">&#40;</span>$bacula_meta, <span style="color:#996600;">&quot;passhash&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
  file <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#996600;">&quot;master.cert&quot;</span>:
    name    <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff6633; font-weight:bold;">$operatingsystem</span> ? <span style="color:#006600; font-weight:bold;">&#123;</span>
      FreeBSD  <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;/usr/local/etc/bacula/certs/master.cert&quot;</span>,
      windows  <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;C:<span style="color:#000099;">\P</span>rogram Files<span style="color:#000099;">\B</span>acula<span style="color:#000099;">\m</span>aster.cert&quot;</span>,
      default  <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;/etc/bacula/certs/master.cert&quot;</span>,
    <span style="color:#006600; font-weight:bold;">&#125;</span>,
    owner   <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006666;">0</span>,
    mode    <span style="color:#006600; font-weight:bold;">=&gt;</span> 0640,
    source  <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;puppet:///bacula/master.cert&quot;</span>,
  <span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
  <span style="color:#CC0066; font-weight:bold;">exec</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#996600;">&quot;fd.cert&quot;</span>:
    path    <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;/usr/bin&quot;</span>,<span style="color:#996600;">&quot;/usr/local/bin&quot;</span>,<span style="color:#996600;">&quot;/bin&quot;</span>,<span style="color:#996600;">&quot;/sbin&quot;</span>,<span style="color:#996600;">&quot;/usr/sbin&quot;</span>,<span style="color:#996600;">&quot;/usr/local/sbin&quot;</span>,<span style="color:#996600;">&quot;/usr/local/libexec&quot;</span>,<span style="color:#996600;">&quot;/usr/libexec&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>,
    command <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff6633; font-weight:bold;">$operatingsystem</span> ? <span style="color:#006600; font-weight:bold;">&#123;</span>
      FreeBSD  <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;fetch -o /usr/local/etc/bacula/certs/${fqdn}-fd.pem $bacula_fd_cert&quot;</span>,
      windows  <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;C:/scripts/curl.exe -sk $bacula_fd_cert -o <span style="color:#000099;">\&quot;</span><span style="color:#000099;">\P</span>rogram Files<span style="color:#000099;">\B</span>acula<span style="color:#000099;">\\</span>${::fqdn}-fd.pem<span style="color:#000099;">\&quot;</span>&quot;</span>,
      default  <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;curl -sk $bacula_fd_cert -o /etc/bacula/certs/${fqdn}-fd.pem&quot;</span>,
    <span style="color:#006600; font-weight:bold;">&#125;</span>,
  <span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
<span style="color:#006600; font-weight:bold;">&#125;</span></pre></div></div>

<p>As you can see, I&#8217;m also working on getting Windows systems into our Puppet environment.</p>
<p>It is incredibly immature right now, and Windows lacks a lot of tools I take for granted. It would make my life a lot easier if Microsoft just tool all the BSD licensed userland tools like diff, fetch (or curl), md5, ssh, etc&#8230; to make my Puppet automation easier. You NEED diff.exe to use Puppet on windows, otherwise templating won&#8217;t work.</p>
<p>Aside from the windows side of things being a pain, this has been working out well enough.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mywushublog.com/2012/01/using-couchdb-with-puppet-and-bacula/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello Bay Photo Lab</title>
		<link>http://www.mywushublog.com/2012/01/hello-bay-photo-lab/</link>
		<comments>http://www.mywushublog.com/2012/01/hello-bay-photo-lab/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 00:38:12 +0000</pubDate>
		<dc:creator>Mike Carlson</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Geekyness]]></category>

		<guid isPermaLink="false">http://www.mywushublog.com/?p=1624</guid>
		<description><![CDATA[After 9.5 years with one employer (LLNL), I joined Bay Photo Lab in Santa Cruz. This has brought on many changes, not just a career change but a significant change in my way of life. First off, I&#8217;m renting a room until my family gets down here. I have this ...]]></description>
			<content:encoded><![CDATA[<div id="attachment_1630" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/01/IMG_20111118_185210.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/01/IMG_20111118_185210-300x224.jpg" alt="" title="IMG_20111118_185210" width="300" height="224" class="size-medium wp-image-1630" /></a><p class="wp-caption-text">From one Lab to another</p></div>
<p>After 9.5 years with one employer (LLNL), I joined Bay Photo Lab in Santa Cruz.</p>
<p>This has brought on many changes, not just a career change but a significant change in my way of life.</p>
<p>First off, I&#8217;m renting a room until my family gets down here. I have this weird double life now, where during the week I live alone in a small room with no heating, and then I go back home on the weekend. Not seeing the kids is the hardest part. We typically do a video chat on Wednesday nights, but when I come home Owen is usually a little stand-offish and Caralyne is unhappy during the week (especially when I have to leave). Its sad.</p>
<div id="attachment_1629" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/01/IMG_20111114_214020.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/01/IMG_20111114_214020-300x224.jpg" alt="" title="IMG_20111114_214020" width="300" height="224" class="size-medium wp-image-1629" /></a><p class="wp-caption-text">Here was the bathroom in my place for the first week. As in, I did not have one.</p></div>
<p>Like a kid fresh out of his parents home, I have to do things like laundry, and all of my own dishes.<br />
<div id="attachment_1631" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/01/IMG_20111118_135327.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/01/IMG_20111118_135327-300x224.jpg" alt="" title="IMG_20111118_135327" width="300" height="224" class="size-medium wp-image-1631" /></a><p class="wp-caption-text">I&#039;m in no hurry to hurry back</p></div></p>
<p>My commute is significantly different. I drive a lot less during the week, I&#8217;m about 3 miles from work. Some days I choose to walk, and other days I&#8217;ll drive in after jogging back home during lunch. It is pretty awesome, it has been 12 years since I have lived and worked in the same place.</p>
<p>Let&#8217;s talk about Bay Photo. I had a slight idea of what they did when I initially interviewed with them IT team here (Rob and Patrick), and I did some simple Google-ing. However, after working here for two months, it is incredibly impressive how much they do and how great the people are.</p>
<p>Bay Photo Lab has a nice small company feel to it, and it is inCREDIBLY friendly here. People are pretty passionate about the work they do here, and so is the IT team. </p>
<p>This has been really awesome, as passion (and really, it should be called &#8220;the desire to do the right thing&#8221;) was something LLNL did not reward or encourage. </p>
<p>Rob, my counterpart here, has been essentially on his own and he has a lot of great ideas that I can help him implement. We both really love technology and open source, so we hardly have to bring each other up to speed. I no longer have to talk until I&#8217;m blue in the face to extol the virtues of FreeBSD, Puppet, Bacula, Wiki&#8217;s, Git, code management tools, etc&#8230; they are accepted as a matter of fact. I&#8217;m also allowed to run whatever OS I want for whatever reason. Rob and I were talking about DragonflyBSD&#8217;s HAMMER filesystem, and how we are both just looking for an excuse to use it.</p>
<p>I couldn&#8217;t even afford to entertain that though while at LLNL. It was hard enough getting OS&#8217;s approved, because it was never about technical merit, and the thought of trying to defend yet another OS was enough to prevent me from using it.</p>
<p>Work has been rewarding, and I can honestly say that I&#8217;ve never worked harder. I&#8217;ve refined my workflow a bit, and with the help of my friend Steve, I&#8217;ve been shown how to use JIRA and FishEye to keep track of my projects. Now when I come in to work, I don&#8217;t have to sit here and think about where I was yesterday, I an just pull up my project page and review my tasks.</p>
<p>I also now have somewhat of a social life, which is pretty exciting! Tuesday nights I drive to Monterey and have dinner with Glenn and Erin:<br />
<div id="attachment_1636" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/01/IMG_20111213_204119.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/01/IMG_20111213_204119-300x224.jpg" alt="" title="IMG_20111213_204119" width="300" height="224" class="size-medium wp-image-1636" /></a><p class="wp-caption-text">Glenn and Eric cookin&#039; in the kitchen</p></div><br />
<div id="attachment_1635" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2012/01/IMG_20111213_204027.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2012/01/IMG_20111213_204027-300x224.jpg" alt="" title="IMG_20111213_204027" width="300" height="224" class="size-medium wp-image-1635" /></a><p class="wp-caption-text">Delicious pizza!</p></div></p>
<p>We have dinner, converse, and then we bust out the instruments. I had to drop my music class at DVC, but having someone to be musical with is very fulfilling. No tour dates or T-Shirts just yet, but we have a great time. I&#8217;m looking forward to getting my gear down here so we can get really crazy</p>
<p>I also get to see Steve and Summer a whole lot more, and we typically meet up on Thursday nights. It will be nice when I&#8217;m finally moved down in the area so we can do that on the weekend, have a BBQ or something.</p>
<p>Well, that about sums up the last two months I&#8217;ve been here. I&#8217;ll be moving to Felton in the beginning of the month, so more after that!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mywushublog.com/2012/01/hello-bay-photo-lab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coal</title>
		<link>http://www.mywushublog.com/2011/12/coal/</link>
		<comments>http://www.mywushublog.com/2011/12/coal/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 02:00:07 +0000</pubDate>
		<dc:creator>Mike Carlson</dc:creator>
				<category><![CDATA[Family]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Coal]]></category>

		<guid isPermaLink="false">http://www.mywushublog.com/?p=1606</guid>
		<description><![CDATA[I&#8217;m absolutely crushed. I&#8217;ve lost a great friend and member of our family, Coal. He escaped our backyard and was hit by car between the A and G street freeway on-ramps. He turned two on 11/16. Coal was the dog I dreamed of having; he was the combination of all ...]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m absolutely crushed. I&#8217;ve lost a great friend and member of our family, Coal. He escaped our backyard and was hit by car between the A and G street freeway on-ramps. He turned two on 11/16.</p>
<p>Coal was the dog I dreamed of having; he was the combination of all the Aussies I&#8217;ve had growing up.</p>
<p>He was the best. That dog never seemed to have a down moment. He was always happy, and always looking for trouble. I also felt like he was an extension to me, but I suspect that is me projecting my own personality on him. Lets be honest, he wasn&#8217;t an extension of me, he was better than me. He was me and more. Filled with unconditional love and never had a bad day, a temper tantrum, and a moment of self-involved narcissism. I was lucky to be with him.</p>
<p>I&#8217;ve always had an Australian Shepard; Max, Buddy, and then my parents both had Shasta and Happy. I loved their energy, friendliness, how expressive they seemed to be with their eyes. Even the ridiculous smile, which they always greeted me with.</p>
<p>They all lived to a average and predictable age (Shasta is still going strong) and I was prepared for their natural deaths. Over the years, both of my parents have gotten Aussie&#8217;s, and I&#8217;ve loved them too. I couldn&#8217;t be happier when I would visit and show them all the affection I could.</p>
<p>Not Coal. I&#8217;m not prepared to accept that he is gone, it still hasn&#8217;t fully processed yet. I keep looking at this pictures and even though I get upset, I still think that I&#8217;ll see him when I get home. Or when I look in the backyard, I expect to see him up to his usual shenanigans. </p>
<p>I didn&#8217;t get enough time with him, and I&#8217;m mad that I let him out early that morning instead of just keeping him in the house. I know that he just had it in him to escape and run around. He loved it, he loved exploring and being free, and that was noticeable when we first got him and he tried to escape the backyard.</p>
<p>His attempts to escape got really bad after Zoey died. It seemed that having her around helped ground him, especially when he got scared from loud noises like fireworks or gun shots. We knew we wanted to get out of Antioch for the kids, but when Coal started getting scared and trying to take off if we were not home, I knew he needed to move to a safer place as well. I just thought if he could make it until we moved, he would be happier and better off.</p>
<p>He just kept getting out though, and he got lucky every time. People would find him and bring him home to us, and I&#8217;d give them what ever I could to show my appreciation. He&#8217;d be happier than ever that he got to run around and then get delivered back to us, and it was concerning to me that he never came home on his own. That night I closed up where I noticed he had escaped from</p>
<p>I&#8217;m so sad that I didn&#8217;t get him to Santa Cruz, and that I wont get to hug him, kick the soccer ball around with him, go on walks, watch him sleep, kiss his cute snout with that black button nose. I&#8217;m going to miss him terribly.</p>
<p>I&#8217;ve shared an album on Picasa, please enjoy:</p>
<table style="width:330px;">
<tr>
<td align="center" style="height:194px;background:url(https://picasaweb.google.com/s/c/transparent_album_background.gif) no-repeat left"><a href="https://picasaweb.google.com/m87carlson/Coal02?authuser=0&#038;feat=embedwebsite"><img src="https://lh4.googleusercontent.com/-Qgv1TV4AaTM/Tu_nuzBOg-E/AAAAAAAAEEs/A9o21M7zQYA/s160-c/Coal02.jpg" width="300" height="300" style="margin:1px 0 0 4px;"></a></td>
</tr>
<tr>
<td style="text-align:center;font-family:arial,sans-serif;font-size:11px"><a href="https://picasaweb.google.com/m87carlson/Coal02?authuser=0&#038;feat=embedwebsite" style="color:#4D4D4D;font-weight:bold;text-decoration:none;">Coal</a></td>
</tr>
</table>
<p>Goodbye Coal, I&#8217;m so sorry I couldn&#8217;t keep you safe. This is how I&#8217;ll always remember the two of us.<br />
<a href="http://www.mywushublog.com/wp-content/uploads/2011/12/IMG_5906.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2011/12/IMG_5906-300x200.jpg" alt="" title="IMG_5906" width="300" height="200" class="aligncenter size-medium wp-image-1612" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mywushublog.com/2011/12/coal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Goodbye LLNL</title>
		<link>http://www.mywushublog.com/2011/11/goodbye-llnl/</link>
		<comments>http://www.mywushublog.com/2011/11/goodbye-llnl/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 06:21:34 +0000</pubDate>
		<dc:creator>Mike Carlson</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Geekyness]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Jenny]]></category>
		<category><![CDATA[LLNL]]></category>

		<guid isPermaLink="false">http://www.mywushublog.com/?p=1589</guid>
		<description><![CDATA[Well, after about 9 and a half years with Lawrence Livermore National Laboratory 11/09 was my last day. Now, I wasn&#8217;t the only admin besides Jenny (thats the aquilino1@llnl.gov email you see there), but she was my closest friend and peer while I was there. There was a little poetic ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mywushublog.com/wp-content/uploads/2011/11/goodbye-llnl-crop.png"><img src="http://www.mywushublog.com/wp-content/uploads/2011/11/goodbye-llnl-crop.png" alt="" title="goodbye-llnl-crop" width="509" height="186" class="aligncenter size-full wp-image-1595" /></a></p>
<p>Well, after about 9 and a half years with Lawrence Livermore National Laboratory 11/09 was my last day. Now, I wasn&#8217;t the only admin besides Jenny (thats the aquilino1@llnl.gov email you see there), but she was my closest friend and peer while I was there. There was a little poetic license there, but it was accurate.</p>
<p>It is hard to quantify the emotions about leaving LLNL. I do not know if I have the appropriate words to describe the feeling.</p>
<p>How about this:</p>
<p>Remember when you left the comfortable confines of high school? That microcosm was your entire world. You had spend the majority of your adolescent life being a part of that world; your friends, you responsibilities, and learning that environment. When you left high school, it was sort of scary, and it was hard to imagine how things would be after leaving high school. The only certainty was the regiment of &#8220;work&#8221; that you learned in school would continue on (hopefully to college).</p>
<p>Its a big scary world out there, and when you are &#8220;institutionalized&#8221; you may not want to leave even if it is time.</p>
<p>This is where I am at. It was time for me to forge a new path in my career, and I was starting to feel a little confined by the Lab&#8217;s philosophy of what I.T. is. I was also feeling a bit over-specialized. Not in what I specifically do, which is *NIX Administration, but things that only a national lab has to deal with. That is a bit more complicated, so despite the fact that I could have made a lifetime out of LLNL, I was not getting the fulfillment I require. I look for technical challenges, not inter-personally communication challenges.</p>
<p>Like high school, I will keep some of the friends I had made there. Also like high school, I will soon find myself in a different environment where my vantage point and perspective will be force to change and adapt to the new culture. There is nothing wrong with that as long as I continue to have a healthy respect for the past, it is after-all what brought me here.</p>
<p>Most importantly, I will have my anchor: the &#8220;work&#8221;. The core of my skill set may be re-balanced for the new job, but it will not fundamentally change and I am happy to accept that.</p>
<p>So far, after two full days have gone by, I&#8217;m pretty excited about the growing list of projects and tasks that we are facing. Renting in a shared house with two other room mates isn&#8217;t so awesome though, I&#8217;ll be a full fledged germaphobe (mysophobia) in no time. I clean my dishes but I sort of freak out of my sponge touches anything else but my dish.</p>
<p>Here is to new adventures!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mywushublog.com/2011/11/goodbye-llnl/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Welcome to Antioch</title>
		<link>http://www.mywushublog.com/2011/10/welcome-to-antioch/</link>
		<comments>http://www.mywushublog.com/2011/10/welcome-to-antioch/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 20:39:12 +0000</pubDate>
		<dc:creator>Mike Carlson</dc:creator>
				<category><![CDATA[Family]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[antioch]]></category>
		<category><![CDATA[crime]]></category>

		<guid isPermaLink="false">http://www.mywushublog.com/?p=1562</guid>
		<description><![CDATA[For a few reasons, I decided to go through the City of Antioch&#8217;s Type I crime reports (available here: http://www.ci.antioch.ca.us/citygov/police/crime-maps/crime-maps.htm). The City only publishes this as a PDF image, comparing the year selected, and the previous year. It also only goes back to 2005. To help view this as a ...]]></description>
			<content:encoded><![CDATA[<p>For a few reasons, I decided to go through the City of Antioch&#8217;s Type I crime reports (available here: <a href="http://www.ci.antioch.ca.us/citygov/police/crime-maps/crime-maps.htm">http://www.ci.antioch.ca.us/citygov/police/crime-maps/crime-maps.htm</a>).</p>
<p>The City only publishes this as a PDF image, comparing the year selected, and the previous year. It also only goes back to 2005.</p>
<p>To help view this as a possible trend, and not just a snapshot in time, I typed up all of them in Google Docs &#8211; <a href="https://docs.google.com/spreadsheet/ccc?key=0Aki2JyKe_ya2dGMwUFV1UU9SVFhPVWdHbWI1NVVDV2c&#038;hl=en_US">City of Antioch Crime Stats</a></p>
<p>It does some some improvement after a few years of growth, it is still however an order of magnitude worse than other cities in California.</p>
<p>According to Homesurfer.com&#8217;s Crime report, even the Sister city to Antioch, Pittsburg had <strong>323</strong> per 100,000 &#8220;incidents&#8221; in one year (2008). While Antioch had <strong>869</strong> per 100,000.</p>
<p>Compare that to places like Moraga which had <strong>35</strong> incidents per 100,000 or heck, even Oakley&#8217;s <strong>248</strong>, which borders Antioch on the eastern side.</p>
<p>Here is a decent table output:</p>
<table border=0 cellpadding=0 cellspacing=0 class='tblGenFixed' id='tblMain'>
<tr class='rShim'>
<td class='rShim' style='width:0;'>
<td class='rShim' style='width:120px;'>
<td class='rShim' style='width:28px;'>
<td class='rShim' style='width:28px;'>
<td class='rShim' style='width:30px;'>
<td class='rShim' style='width:28px;'>
<td class='rShim' style='width:32px;'>
<td class='rShim' style='width:28px;'>
<td class='rShim' style='width:28px;'>
<td class='rShim' style='width:30px;'>
<td class='rShim' style='width:30px;'>
<td class='rShim' style='width:28px;'>
<td class='rShim' style='width:31px;'>
<td class='rShim' style='width:30px;'>
<td class='rShim' style='width:45px;'>
<td class='rShim' style='width:120px;'>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s0'>TYPE
<td  class='s1'>Jan
<td  class='s1'>Feb
<td  class='s1'>Mar
<td  class='s1'>Apr
<td  class='s1'>May
<td  class='s1'>Jun
<td  class='s1'>Jul
<td  class='s1'>Aug
<td  class='s1'>Sep
<td  class='s1'>Oct
<td  class='s1'>Nov
<td  class='s1'>Dec
<td  class='s1'>TOTAL
<td  class='s1'>%CHANGE</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s2'>HOMI
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2011
<td  class='s4'>0
<td  class='s4'>1
<td  class='s4'>0
<td  class='s4'>1
<td  class='s4'>1
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>1
<td >
<td >
<td >
<td >
<td  class='s4'>4
<td  class='s5'>-69.23%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2010
<td  class='s4'>2
<td  class='s4'>0
<td  class='s4'>1
<td  class='s4'>1
<td  class='s4'>0
<td  class='s4'>2
<td  class='s4'>1
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>1
<td  class='s4'>5
<td  class='s4'>13
<td  class='s5'>160.00%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2009
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>2
<td  class='s4'>0
<td  class='s4'>1
<td  class='s4'>1
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>1
<td  class='s4'>0
<td  class='s4'>5
<td  class='s5'>-37.50%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2008
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>2
<td  class='s4'>0
<td  class='s4'>1
<td  class='s4'>2
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>3
<td  class='s4'>8
<td  class='s5'>-20.00%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2007
<td  class='s4'>2
<td  class='s4'>0
<td  class='s4'>1
<td  class='s4'>0
<td  class='s4'>2
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>1
<td  class='s4'>2
<td  class='s4'>1
<td  class='s4'>1
<td  class='s4'>10
<td  class='s5'>0.00%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2006
<td  class='s4'>1
<td  class='s4'>1
<td  class='s4'>1
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>3
<td  class='s4'>2
<td  class='s4'>1
<td  class='s4'>1
<td  class='s4'>0
<td  class='s4'>10
<td  class='s5'>0.00%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2005
<td  class='s4'>1
<td  class='s4'>1
<td  class='s4'>2
<td  class='s4'>1
<td  class='s4'>1
<td  class='s4'>0
<td  class='s4'>1
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>2
<td  class='s4'>0
<td  class='s4'>1
<td  class='s4'>10
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s2'>RAPE
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2011
<td  class='s4'>0
<td  class='s4'>0
<td  class='s4'>1
<td  class='s4'>1
<td  class='s4'>3
<td  class='s4'>3
<td  class='s4'>4
<td  class='s4'>1
<td >
<td >
<td >
<td >
<td  class='s4'>13
<td  class='s5'>-59.38%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2010
<td  class='s4'>0
<td  class='s4'>1
<td  class='s4'>1
<td  class='s4'>2
<td  class='s4'>3
<td  class='s4'>2
<td  class='s4'>3
<td  class='s4'>7
<td  class='s4'>4
<td  class='s4'>4
<td  class='s4'>3
<td  class='s4'>2
<td  class='s4'>32
<td  class='s5'>-20.00%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2009
<td  class='s4'>5
<td  class='s4'>4
<td  class='s4'>1
<td  class='s4'>2
<td  class='s4'>5
<td  class='s4'>2
<td  class='s4'>5
<td  class='s4'>6
<td  class='s4'>6
<td  class='s4'>1
<td  class='s4'>0
<td  class='s4'>3
<td  class='s4'>40
<td  class='s5'>37.93%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2008
<td  class='s4'>2
<td  class='s4'>2
<td  class='s4'>1
<td  class='s4'>5
<td  class='s4'>3
<td  class='s4'>3
<td  class='s4'>1
<td  class='s4'>3
<td  class='s4'>3
<td  class='s4'>0
<td  class='s4'>1
<td  class='s4'>5
<td  class='s4'>29
<td  class='s5'>7.41%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2007
<td  class='s4'>2
<td  class='s4'>3
<td  class='s4'>5
<td  class='s4'>3
<td  class='s4'>0
<td  class='s4'>6
<td  class='s4'>0
<td  class='s4'>2
<td  class='s4'>2
<td  class='s4'>0
<td  class='s4'>3
<td  class='s4'>1
<td  class='s4'>27
<td  class='s5'>-22.86%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2006
<td  class='s4'>5
<td  class='s4'>3
<td  class='s4'>3
<td  class='s4'>4
<td  class='s4'>2
<td  class='s4'>6
<td  class='s4'>1
<td  class='s4'>2
<td  class='s4'>2
<td  class='s4'>2
<td  class='s4'>1
<td  class='s4'>4
<td  class='s4'>35
<td  class='s5'>25.00%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2005
<td  class='s4'>1
<td  class='s4'>5
<td  class='s4'>2
<td  class='s4'>1
<td  class='s4'>4
<td  class='s4'>2
<td  class='s4'>1
<td  class='s4'>5
<td  class='s4'>0
<td  class='s4'>2
<td  class='s4'>2
<td  class='s4'>3
<td  class='s4'>28
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s2'>ROBB
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2011
<td  class='s4'>24
<td  class='s4'>21
<td  class='s4'>19
<td  class='s4'>23
<td  class='s4'>22
<td  class='s4'>21
<td  class='s4'>20
<td  class='s4'>26
<td >
<td >
<td >
<td >
<td  class='s4'>176
<td  class='s5'>-43.77%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2010
<td  class='s4'>23
<td  class='s4'>26
<td  class='s4'>24
<td  class='s4'>37
<td  class='s4'>33
<td  class='s4'>28
<td  class='s4'>32
<td  class='s4'>29
<td  class='s4'>24
<td  class='s4'>21
<td  class='s4'>16
<td  class='s4'>20
<td  class='s4'>313
<td  class='s5'>-0.63%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2009
<td  class='s4'>21
<td  class='s4'>33
<td  class='s4'>23
<td  class='s4'>27
<td  class='s4'>42
<td  class='s4'>24
<td  class='s4'>32
<td  class='s4'>21
<td  class='s4'>19
<td  class='s4'>25
<td  class='s4'>32
<td  class='s4'>16
<td  class='s4'>315
<td  class='s5'>-20.85%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2008
<td  class='s4'>25
<td  class='s4'>39
<td  class='s4'>48
<td  class='s4'>42
<td  class='s4'>37
<td  class='s4'>38
<td  class='s4'>27
<td  class='s4'>22
<td  class='s4'>26
<td  class='s4'>40
<td  class='s4'>23
<td  class='s4'>31
<td  class='s4'>398
<td  class='s5'>-3.16%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2007
<td  class='s4'>34
<td  class='s4'>31
<td  class='s4'>20
<td  class='s4'>32
<td  class='s4'>53
<td  class='s4'>35
<td  class='s4'>31
<td  class='s4'>40
<td  class='s4'>23
<td  class='s4'>26
<td  class='s4'>47
<td  class='s4'>39
<td  class='s4'>411
<td  class='s5'>44.21%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2006
<td  class='s4'>15
<td  class='s4'>30
<td  class='s4'>22
<td  class='s4'>33
<td  class='s4'>24
<td  class='s4'>16
<td  class='s4'>25
<td  class='s4'>26
<td  class='s4'>26
<td  class='s4'>11
<td  class='s4'>8
<td  class='s4'>49
<td  class='s4'>285
<td  class='s5'>22.84%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2005
<td  class='s4'>19
<td  class='s4'>18
<td  class='s4'>13
<td  class='s4'>28
<td  class='s4'>14
<td  class='s4'>26
<td  class='s4'>25
<td  class='s4'>21
<td  class='s4'>12
<td  class='s4'>35
<td  class='s4'>10
<td  class='s4'>11
<td  class='s4'>232
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s2'>AGR ASSAULT
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2011
<td  class='s4'>26
<td  class='s4'>29
<td  class='s4'>47
<td  class='s4'>34
<td  class='s4'>44
<td  class='s4'>34
<td  class='s4'>35
<td  class='s4'>43
<td >
<td >
<td >
<td >
<td  class='s4'>292
<td  class='s5'>-42.29%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2010
<td  class='s4'>47
<td  class='s4'>27
<td  class='s4'>55
<td  class='s4'>41
<td  class='s4'>43
<td  class='s4'>43
<td  class='s4'>38
<td  class='s4'>47
<td  class='s4'>52
<td  class='s4'>33
<td  class='s4'>34
<td  class='s4'>46
<td  class='s4'>506
<td  class='s5'>-5.77%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2009
<td  class='s4'>37
<td  class='s4'>39
<td  class='s4'>36
<td  class='s4'>64
<td  class='s4'>49
<td  class='s4'>52
<td  class='s4'>44
<td  class='s4'>46
<td  class='s4'>49
<td  class='s4'>33
<td  class='s4'>50
<td  class='s4'>38
<td  class='s4'>537
<td  class='s5'>22.05%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2008
<td  class='s4'>36
<td  class='s4'>35
<td  class='s4'>38
<td  class='s4'>27
<td  class='s4'>26
<td  class='s4'>28
<td  class='s4'>42
<td  class='s4'>32
<td  class='s4'>46
<td  class='s4'>50
<td  class='s4'>37
<td  class='s4'>43
<td  class='s4'>440
<td  class='s5'>6.80%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2007
<td  class='s4'>39
<td  class='s4'>27
<td  class='s4'>30
<td  class='s4'>21
<td  class='s4'>30
<td  class='s4'>37
<td  class='s4'>35
<td  class='s4'>51
<td  class='s4'>45
<td  class='s4'>26
<td  class='s4'>30
<td  class='s4'>41
<td  class='s4'>412
<td  class='s5'>25.99%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2006
<td  class='s4'>18
<td  class='s4'>27
<td  class='s4'>27
<td  class='s4'>32
<td  class='s4'>28
<td  class='s4'>19
<td  class='s4'>25
<td  class='s4'>36
<td  class='s4'>23
<td  class='s4'>28
<td  class='s4'>12
<td  class='s4'>52
<td  class='s4'>327
<td  class='s5'>15.55%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2005
<td  class='s4'>14
<td  class='s4'>13
<td  class='s4'>22
<td  class='s4'>14
<td  class='s4'>34
<td  class='s4'>35
<td  class='s4'>25
<td  class='s4'>20
<td  class='s4'>14
<td  class='s4'>38
<td  class='s4'>24
<td  class='s4'>30
<td  class='s4'>283
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s2'>BURG
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2011
<td  class='s4'>86
<td  class='s4'>87
<td  class='s4'>127
<td  class='s4'>96
<td  class='s4'>113
<td  class='s4'>93
<td  class='s4'>93
<td  class='s4'>103
<td >
<td >
<td >
<td >
<td  class='s4'>798
<td  class='s5'>-26.59%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2010
<td  class='s4'>98
<td  class='s4'>114
<td  class='s4'>113
<td  class='s4'>89
<td  class='s4'>60
<td  class='s4'>76
<td  class='s4'>75
<td  class='s4'>90
<td  class='s4'>80
<td  class='s4'>77
<td  class='s4'>111
<td  class='s4'>104
<td  class='s4'>1087
<td  class='s5'>31.92%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2009
<td  class='s4'>42
<td  class='s4'>53
<td  class='s4'>62
<td  class='s4'>93
<td  class='s4'>89
<td  class='s4'>89
<td  class='s4'>56
<td  class='s4'>63
<td  class='s4'>54
<td  class='s4'>64
<td  class='s4'>86
<td  class='s4'>73
<td  class='s4'>824
<td  class='s5'>-10.73%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2008
<td  class='s4'>76
<td  class='s4'>81
<td  class='s4'>69
<td  class='s4'>58
<td  class='s4'>93
<td  class='s4'>79
<td  class='s4'>66
<td  class='s4'>69
<td  class='s4'>66
<td  class='s4'>88
<td  class='s4'>100
<td  class='s4'>78
<td  class='s4'>923
<td  class='s5'>-10.13%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2007
<td  class='s4'>79
<td  class='s4'>70
<td  class='s4'>93
<td  class='s4'>104
<td  class='s4'>91
<td  class='s4'>94
<td  class='s4'>73
<td  class='s4'>109
<td  class='s4'>81
<td  class='s4'>78
<td  class='s4'>75
<td  class='s4'>80
<td  class='s4'>1027
<td  class='s5'>22.26%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2006
<td  class='s4'>69
<td  class='s4'>49
<td  class='s4'>38
<td  class='s4'>67
<td  class='s4'>65
<td  class='s4'>45
<td  class='s4'>62
<td  class='s4'>85
<td  class='s4'>78
<td  class='s4'>40
<td  class='s4'>94
<td  class='s4'>148
<td  class='s4'>840
<td  class='s5'>14.60%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2005
<td  class='s4'>97
<td  class='s4'>59
<td  class='s4'>49
<td  class='s4'>62
<td  class='s4'>61
<td  class='s4'>71
<td  class='s4'>51
<td  class='s4'>63
<td  class='s4'>45
<td  class='s4'>62
<td  class='s4'>49
<td  class='s4'>64
<td  class='s4'>733
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s2'>THEFT
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2011
<td  class='s4'>69
<td  class='s4'>82
<td  class='s4'>98
<td  class='s4'>75
<td  class='s4'>72
<td  class='s4'>108
<td  class='s4'>119
<td  class='s4'>120
<td >
<td >
<td >
<td >
<td  class='s4'>743
<td  class='s5'>-29.17%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2010
<td  class='s4'>79
<td  class='s4'>98
<td  class='s4'>113
<td  class='s4'>94
<td  class='s4'>95
<td  class='s4'>99
<td  class='s4'>90
<td  class='s4'>91
<td  class='s4'>86
<td  class='s4'>53
<td  class='s4'>70
<td  class='s4'>81
<td  class='s4'>1049
<td  class='s5'>-3.05%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2009
<td  class='s4'>117
<td  class='s4'>137
<td  class='s4'>89
<td  class='s4'>135
<td  class='s4'>74
<td  class='s4'>90
<td  class='s4'>97
<td  class='s4'>85
<td  class='s4'>55
<td  class='s4'>73
<td  class='s4'>48
<td  class='s4'>82
<td  class='s4'>1082
<td  class='s5'>-12.81%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2008
<td  class='s4'>73
<td  class='s4'>95
<td  class='s4'>93
<td  class='s4'>135
<td  class='s4'>89
<td  class='s4'>91
<td  class='s4'>114
<td  class='s4'>71
<td  class='s4'>86
<td  class='s4'>132
<td  class='s4'>106
<td  class='s4'>156
<td  class='s4'>1241
<td  class='s5'>8.29%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2007
<td  class='s4'>128
<td  class='s4'>90
<td  class='s4'>126
<td  class='s4'>97
<td  class='s4'>121
<td  class='s4'>91
<td  class='s4'>64
<td  class='s4'>105
<td  class='s4'>64
<td  class='s4'>80
<td  class='s4'>97
<td  class='s4'>83
<td  class='s4'>1146
<td  class='s5'>1.96%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2006
<td  class='s4'>82
<td  class='s4'>119
<td  class='s4'>109
<td  class='s4'>79
<td  class='s4'>70
<td  class='s4'>58
<td  class='s4'>72
<td  class='s4'>122
<td  class='s4'>81
<td  class='s4'>82
<td  class='s4'>53
<td  class='s4'>197
<td  class='s4'>1124
<td  class='s5'>-11.43%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2005
<td  class='s4'>134
<td  class='s4'>96
<td  class='s4'>110
<td  class='s4'>90
<td  class='s4'>130
<td  class='s4'>137
<td  class='s4'>83
<td  class='s4'>87
<td  class='s4'>91
<td  class='s4'>117
<td  class='s4'>82
<td  class='s4'>112
<td  class='s4'>1269
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s2'>MVTHEFT
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2011
<td  class='s4'>76
<td  class='s4'>63
<td  class='s4'>71
<td  class='s4'>71
<td  class='s4'>91
<td  class='s4'>68
<td  class='s4'>67
<td  class='s4'>53
<td >
<td >
<td >
<td >
<td  class='s4'>560
<td  class='s5'>-41.67%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2010
<td  class='s4'>72
<td  class='s4'>46
<td  class='s4'>117
<td  class='s4'>70
<td  class='s4'>103
<td  class='s4'>50
<td  class='s4'>45
<td  class='s4'>69
<td  class='s4'>74
<td  class='s4'>83
<td  class='s4'>94
<td  class='s4'>137
<td  class='s4'>960
<td  class='s5'>28.51%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2009
<td  class='s4'>65
<td  class='s4'>39
<td  class='s4'>88
<td  class='s4'>89
<td  class='s4'>72
<td  class='s4'>75
<td  class='s4'>63
<td  class='s4'>59
<td  class='s4'>64
<td  class='s4'>35
<td  class='s4'>55
<td  class='s4'>43
<td  class='s4'>747
<td  class='s5'>8.89%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2008
<td  class='s4'>74
<td  class='s4'>64
<td  class='s4'>34
<td  class='s4'>71
<td  class='s4'>81
<td  class='s4'>45
<td  class='s4'>37
<td  class='s4'>48
<td  class='s4'>45
<td  class='s4'>51
<td  class='s4'>75
<td  class='s4'>61
<td  class='s4'>686
<td  class='s5'>-27.71%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2007
<td  class='s4'>90
<td  class='s4'>108
<td  class='s4'>68
<td  class='s4'>76
<td  class='s4'>61
<td  class='s4'>71
<td  class='s4'>74
<td  class='s4'>75
<td  class='s4'>65
<td  class='s4'>84
<td  class='s4'>77
<td  class='s4'>100
<td  class='s4'>949
<td  class='s5'>7.84%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2006
<td  class='s4'>53
<td  class='s4'>64
<td  class='s4'>74
<td  class='s4'>71
<td  class='s4'>44
<td  class='s4'>69
<td  class='s4'>75
<td  class='s4'>92
<td  class='s4'>74
<td  class='s4'>95
<td  class='s4'>80
<td  class='s4'>89
<td  class='s4'>880
<td  class='s5'>-4.14%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2005
<td  class='s4'>110
<td  class='s4'>74
<td  class='s4'>66
<td  class='s4'>74
<td  class='s4'>92
<td  class='s4'>94
<td  class='s4'>57
<td  class='s4'>67
<td  class='s4'>46
<td  class='s4'>91
<td  class='s4'>83
<td  class='s4'>64
<td  class='s4'>918
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s2'>ARSON
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2011
<td  class='s4'>1
<td  class='s4'>3
<td  class='s4'>3
<td  class='s4'>1
<td  class='s4'>3
<td  class='s4'>3
<td  class='s4'>11
<td  class='s4'>5
<td >
<td >
<td >
<td >
<td  class='s4'>30
<td  class='s5'>-18.92%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2010
<td  class='s4'>2
<td  class='s4'>3
<td  class='s4'>4
<td  class='s4'>3
<td  class='s4'>1
<td  class='s4'>3
<td  class='s4'>4
<td  class='s4'>3
<td  class='s4'>10
<td  class='s4'>3
<td  class='s4'>0
<td  class='s4'>1
<td  class='s4'>37
<td  class='s5'>-7.50%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2009
<td  class='s4'>0
<td  class='s4'>3
<td  class='s4'>1
<td  class='s4'>3
<td  class='s4'>8
<td  class='s4'>7
<td  class='s4'>5
<td  class='s4'>4
<td  class='s4'>1
<td  class='s4'>2
<td  class='s4'>2
<td  class='s4'>4
<td  class='s4'>40
<td  class='s5'>5.26%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2008
<td  class='s4'>2
<td  class='s4'>2
<td  class='s4'>2
<td  class='s4'>3
<td  class='s4'>3
<td  class='s4'>2
<td  class='s4'>4
<td  class='s4'>6
<td  class='s4'>3
<td  class='s4'>7
<td  class='s4'>3
<td  class='s4'>1
<td  class='s4'>38
<td  class='s5'>-25.49%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2007
<td  class='s4'>2
<td  class='s4'>1
<td  class='s4'>5
<td  class='s4'>2
<td  class='s4'>8
<td  class='s4'>5
<td  class='s4'>1
<td  class='s4'>8
<td  class='s4'>7
<td  class='s4'>3
<td  class='s4'>7
<td  class='s4'>2
<td  class='s4'>51
<td  class='s5'>-8.93%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2006
<td  class='s4'>5
<td  class='s4'>1
<td  class='s4'>3
<td  class='s4'>4
<td  class='s4'>5
<td  class='s4'>5
<td  class='s4'>13
<td  class='s4'>3
<td  class='s4'>5
<td  class='s4'>6
<td  class='s4'>4
<td  class='s4'>2
<td  class='s4'>56
<td  class='s5'>27.27%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2005
<td  class='s4'>2
<td  class='s4'>2
<td  class='s4'>10
<td  class='s4'>5
<td  class='s4'>6
<td  class='s4'>3
<td  class='s4'>1
<td  class='s4'>7
<td  class='s4'>0
<td  class='s4'>5
<td  class='s4'>2
<td  class='s4'>1
<td  class='s4'>44
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s2'>ADULT ARRESTS
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td  class='s4'>0
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2011
<td  class='s4'>360
<td  class='s4'>308
<td  class='s4'>333
<td  class='s4'>335
<td  class='s4'>386
<td  class='s4'>220
<td  class='s4'>212
<td  class='s4'>346
<td >
<td >
<td >
<td >
<td  class='s4'>2500
<td  class='s5'>-38.23%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2010
<td  class='s4'>522
<td  class='s4'>282
<td  class='s4'>306
<td  class='s4'>364
<td  class='s4'>357
<td  class='s4'>320
<td  class='s4'>219
<td  class='s4'>245
<td  class='s4'>361
<td  class='s4'>380
<td  class='s4'>268
<td  class='s4'>423
<td  class='s4'>4047
<td  class='s5'>-25.03%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2009
<td  class='s4'>424
<td  class='s4'>539
<td  class='s4'>535
<td  class='s4'>462
<td  class='s4'>398
<td  class='s4'>390
<td  class='s4'>507
<td  class='s4'>407
<td  class='s4'>458
<td  class='s4'>412
<td  class='s4'>248
<td  class='s4'>618
<td  class='s4'>5398
<td  class='s5'>-6.06%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2008
<td  class='s4'>535
<td  class='s4'>378
<td  class='s4'>450
<td  class='s4'>418
<td  class='s4'>429
<td  class='s4'>453
<td  class='s4'>558
<td  class='s4'>387
<td  class='s4'>557
<td  class='s4'>491
<td  class='s4'>535
<td  class='s4'>555
<td  class='s4'>5746
<td  class='s5'>14.69%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2007
<td  class='s4'>323
<td  class='s4'>457
<td  class='s4'>731
<td  class='s4'>417
<td  class='s4'>308
<td  class='s4'>289
<td  class='s4'>504
<td  class='s4'>404
<td  class='s4'>363
<td  class='s4'>364
<td  class='s4'>338
<td  class='s4'>512
<td  class='s4'>5010
<td  class='s5'>12.84%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2006
<td  class='s4'>272
<td  class='s4'>312
<td  class='s4'>294
<td  class='s4'>408
<td  class='s4'>430
<td  class='s4'>381
<td  class='s4'>564
<td  class='s4'>459
<td  class='s4'>608
<td  class='s4'>319
<td  class='s4'>121
<td  class='s4'>272
<td  class='s4'>4440
<td  class='s5'>-5.97%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2005
<td  class='s4'>462
<td  class='s4'>277
<td  class='s4'>698
<td  class='s4'>472
<td  class='s4'>433
<td  class='s4'>485
<td  class='s4'>495
<td  class='s4'>561
<td  class='s4'>191
<td  class='s4'>209
<td  class='s4'>181
<td  class='s4'>258
<td  class='s4'>4722
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s2'>JUV ARRESTS
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td >
<td ></tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2011
<td  class='s4'>69
<td  class='s4'>80
<td  class='s4'>92
<td  class='s4'>95
<td  class='s4'>87
<td  class='s4'>79
<td  class='s4'>99
<td  class='s4'>70
<td >
<td >
<td >
<td >
<td  class='s4'>671
<td  class='s5'>-40.93%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2010
<td  class='s4'>103
<td  class='s4'>121
<td  class='s4'>96
<td  class='s4'>127
<td  class='s4'>116
<td  class='s4'>83
<td  class='s4'>47
<td  class='s4'>69
<td  class='s4'>85
<td  class='s4'>113
<td  class='s4'>83
<td  class='s4'>93
<td  class='s4'>1136
<td  class='s5'>-10.48%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2009
<td  class='s4'>94
<td  class='s4'>137
<td  class='s4'>138
<td  class='s4'>117
<td  class='s4'>111
<td  class='s4'>129
<td  class='s4'>79
<td  class='s4'>75
<td  class='s4'>76
<td  class='s4'>105
<td  class='s4'>90
<td  class='s4'>118
<td  class='s4'>1269
<td  class='s5'>-22.43%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2008
<td  class='s4'>128
<td  class='s4'>136
<td  class='s4'>158
<td  class='s4'>193
<td  class='s4'>167
<td  class='s4'>123
<td  class='s4'>154
<td  class='s4'>72
<td  class='s4'>142
<td  class='s4'>113
<td  class='s4'>119
<td  class='s4'>131
<td  class='s4'>1636
<td  class='s5'>6.65%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2007
<td  class='s4'>90
<td  class='s4'>132
<td  class='s4'>204
<td  class='s4'>125
<td  class='s4'>130
<td  class='s4'>172
<td  class='s4'>128
<td  class='s4'>124
<td  class='s4'>83
<td  class='s4'>121
<td  class='s4'>105
<td  class='s4'>120
<td  class='s4'>1534
<td  class='s5'>15.08%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2006
<td  class='s4'>71
<td  class='s4'>75
<td  class='s4'>80
<td  class='s4'>114
<td  class='s4'>150
<td  class='s4'>93
<td  class='s4'>148
<td  class='s4'>147
<td  class='s4'>117
<td  class='s4'>127
<td  class='s4'>48
<td  class='s4'>163
<td  class='s4'>1333
<td  class='s5'>22.07%</tr>
<tr>
<td class=hd>
<p style='height:16px;'>.</td>
<td  class='s3'>2005
<td  class='s4'>91
<td  class='s4'>64
<td  class='s4'>181
<td  class='s4'>114
<td  class='s4'>116
<td  class='s4'>118
<td  class='s4'>110
<td  class='s4'>80
<td  class='s4'>52
<td  class='s4'>63
<td  class='s4'>44
<td  class='s4'>59
<td  class='s4'>1092
<td ></tr>
</table>
<p>I applaud the police department for making a dent over the past two years, and even more so for publishing this data (Concord and Pittsburg did not have this information easily accessible). Even with their effort, I don&#8217;t think I&#8217;ll be hanging around to see if it pays off.</p>
<p>I hope that Antioch becomes a nice bedding community again. The type of place where people like my grandfather, only had to drawn their weapon once during a domestic dispute, and never had to fire it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mywushublog.com/2011/10/welcome-to-antioch/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>FreeBSD Training</title>
		<link>http://www.mywushublog.com/2011/08/freebsd-training/</link>
		<comments>http://www.mywushublog.com/2011/08/freebsd-training/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 01:57:47 +0000</pubDate>
		<dc:creator>Mike Carlson</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Geekyness]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Training]]></category>

		<guid isPermaLink="false">http://www.mywushublog.com/?p=1549</guid>
		<description><![CDATA[At work I ran a 5 part FreeBSD Administration training course for the Unix team. I enjoyed it a lot, because I really like to share information. It is especially rewarding when it is something I have taken a great interest in, like the FreeBSD Operating System. The design of the course ...]]></description>
			<content:encoded><![CDATA[<p>At work I ran a 5 part FreeBSD Administration training course for the Unix team.</p>
<p>I enjoyed it a lot, because I really like to share information. It is especially rewarding when it is something I have taken a great interest in, like the FreeBSD Operating System.</p>
<p>The design of the course was simple, I did my best to fill in the gap that a Solaris or Linux administrator might have. Everyone on the team has experience with Unix, mostly Solaris and Red Hat, so I skipped a lot of the basics.</p>
<p>This was also done in 1.5 hours increments over a few months. None of us had the time to dedicate four or so days in a real class room environment where I could concoct lab exercises. I wish we could have, that would have been GREAT. Alas, I wrote these up in my spare time and put them up on the calendar for the team.</p>
<p>I even created a certificate for those that attended all of them :)</p>
<p>Cert: <a href="http://www.mywushublog.com/wp-content/uploads/2011/08/fbsd-admin-template.pdf">fbsd-admin-template</a></p>
<p>So, here is what I&#8217;m going to do. I think it is important to share, so I converted all of my slides and material into Google&#8217;s Presentation document and made them Public.</p>
<p>Both to read and write.</p>
<p>So, if you feel that there are typo&#8217;s, errors, or something can be added, I want to extend to opportunity to anyone to correct them.</p>
<p>Part1:<br />
<a href="https://docs.google.com/present/edit?id=0AUi2JyKe_ya2ZGNtZmZ3MnhfM2NrenMzaHZ4&#038;hl=en_US">FreeBSD Training #1 &#8211; Introduction</a><br />
Part 2:<br />
<a href="https://docs.google.com/present/edit?id=0AUi2JyKe_ya2ZGNtZmZ3MnhfMTdjdHA0bXRjcQ&#038;hl=en_US">FreeBSD Training #2 &#8211; Software Management</a><br />
Part 3:<br />
<a href="https://docs.google.com/present/edit?id=0AUi2JyKe_ya2ZGNtZmZ3MnhfMzhjMzh4eDdoZw&#038;hl=en_US">FreeBSD Training #3 &#8211; Service Management</a><br />
Part 4:<br />
<a href="https://docs.google.com/present/edit?id=0AUi2JyKe_ya2ZGNtZmZ3MnhfNTg0bm1nNnpjNg&#038;hl=en_US">FreeBSD Training #4 &#8211; Hardware Management</a></p>
<p>The last class was me running through SysInstall. My logic for that was simple, everyone should first know how to install and manage software and services before they begin installing a fresh OS.</p>
<p>There you go Internets, enjoy, and please don&#8217;t add Viagra links in my presentations :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mywushublog.com/2011/08/freebsd-training/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bacula in the Enterprise &#8211; Part 2</title>
		<link>http://www.mywushublog.com/2011/07/bacula-in-the-enterprise-part-2/</link>
		<comments>http://www.mywushublog.com/2011/07/bacula-in-the-enterprise-part-2/#comments</comments>
		<pubDate>Sat, 23 Jul 2011 19:10:26 +0000</pubDate>
		<dc:creator>Mike Carlson</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Geekyness]]></category>
		<category><![CDATA[Backups]]></category>
		<category><![CDATA[Bacula]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Jenny]]></category>
		<category><![CDATA[ZFS]]></category>

		<guid isPermaLink="false">http://www.mywushublog.com/?p=1524</guid>
		<description><![CDATA[Software As mentioned many times, this is a FreeBSD based environment. Some good sysinfo output below: Operating system release: FreeBSD 8.2-RELEASE OS architecture: amd64 Kernel build dir location: /usr/obj/usr/src/sys/GENERIC Currently booted kernel: /boot/kernel/kernel Currently loaded kernel modules (kldstat(8)): zfs.ko opensolaris.ko Bootloader settings for the Director/Database node: The /boot/loader.conf has the ...]]></description>
			<content:encoded><![CDATA[<h1>Software</h1>
<p>As mentioned many times, this is a FreeBSD based environment. Some good sysinfo output below:</p>
<pre>
Operating system release: FreeBSD 8.2-RELEASE
OS architecture: amd64
Kernel build dir location: /usr/obj/usr/src/sys/GENERIC
Currently booted kernel: /boot/kernel/kernel

Currently loaded kernel modules (kldstat(8)):
zfs.ko
opensolaris.ko
</pre>
<p>Bootloader settings for the Director/Database node:</p>
<pre>
The /boot/loader.conf has the following contents:
kern.ipc.semmni=1024
kern.ipc.semmns=2048
kern.ipc.semmnu=1024
</pre>
<p>All of the storage nodes and the director are running a GENERIC kernel with very few system tweaking. One of the storage nodes has a Chelsio 10Gb controller, but that hasn&#8217;t had a high enough load to crack the 1Gb/sec barrier.</p>
<p>I&#8217;m using Bacula from the ports tree, and the directory has a special Make flag to build with gcc&#8217;s debugging symbols. Jenny worked on getting that setup when we were having some stability issues.</p>
<p>The Bacula configuration one the director node is backed by a git repository. It adds a little bit of complexity for a systems administrator, when they want to add a client, but the benefit is clear. This backup project actually enforces change control and tracks all of the commits by who.</p>
<p>I&#8217;ve also setup Redmine as a project front-end, and I&#8217;ve begun to file tickets and reference what commit fixed what. This not only tracks my progress, but it is the first time I&#8217;ve had a backup server that was clearly documented and had some type of accountability.<br />
<div id="attachment_1525" class="wp-caption aligncenter" style="width: 643px"><a href="http://www.mywushublog.com/wp-content/uploads/2011/07/redmine.png"><img src="http://www.mywushublog.com/wp-content/uploads/2011/07/redmine.png" alt="" title="redmine" width="633" height="412" class="size-full wp-image-1525" /></a><p class="wp-caption-text">A snippet of the Redmine site</p></div></p>
<h1>The Structure</h1>
<p>I&#8217;ve compared projects like bacula to a large box of LegosTM. It doesn&#8217;t enforce a structure by any means, and I&#8217;ve taken it upon myself to add meaning to the otherwise flat and incomprehensible bacula-dir.conf</p>
<p>The Bacula Port on FreeBSD installs all configuration files in <strong>/usr/local/etc</strong>.</p>
<p>Write, the Director, only contains the following in /usr/local/etc/bacula-dir.conf:</p>
<pre>
@/usr/local/etc/bacula/bacula-dir.conf
@/usr/local/etc/bacula/storage.conf
@/usr/local/etc/bacula/clients.conf
@/usr/local/etc/bacula/messages.conf
@/usr/local/etc/bacula/schedules.conf
@/usr/local/etc/bacula/pools.conf
</pre>
<p>As you can see, I place everything in etc/bacula/.</p>
<p>Here is a beautiful output of tree(1):</p>
<pre>
bacula
|-- bacula-dir.conf
|-- bin
|   |-- create_client.sh
|   `-- package_list.sh
|-- clients.conf
|-- clients.d
|   |-- 10am
|   |-- 10pm
|   |-- 11pm
|   |-- 12am
|   |-- 1am
|   |-- 2am
|   |-- 3am
|   |-- 4am
|   |-- 4pm
|   |-- 5am
|   |-- 5pm
|   |-- 6am
|   |-- 6pm
|   |-- 7am
|   |-- 7pm
|   |-- 8am
|   |-- 8pm
|   |-- 9am
|   |-- 9pm
|   |-- TEMPLATE-mac
|   |-- TEMPLATE-unix
|   `-- TEMPLATE-win32
|-- excludes.d
|   |-- common.conf
|   |-- mac.conf
|   |-- unix.conf
|   `-- win32.conf
|-- messages.conf
|-- pools.conf
|-- schedules.conf
|-- storage.conf
`-- storage.d
    |-- write-01.conf
    |-- write-02.conf
    |-- write-03.conf
    |-- write-04.conf
    |-- write-05.conf
    `-- write-06.conf
</pre>
<h1>Storage Nodes</h1>
<p>All of the storage nodes are using <strong>ZFS</strong> as the filesystem/Volume manager.</p>
<pre>
write-06# zpool list
NAME         SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
filevol001  90.6T  33.3T  57.3T    36%  ONLINE  -
</pre>
<p>They all have one volume, <strong>/filevol001</strong>, and I created 512 &#8220;drives&#8221; within that volume. Effectivly, each storage node has 512 drives, and clients are randomly assigned a drive.</p>
<p>Since I have 6 storage nodes, I wrote a little shell script to handle the directory creation:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #007800;">i</span>=<span style="color: #000000;">1</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$i</span> <span style="color: #660033;">-le</span> <span style="color: #000000;">512</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">do</span>
        <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #660033;">-d</span> <span style="color: #660033;">-o</span> bacula <span style="color: #660033;">-g</span> bacula <span style="color: #660033;">-m</span> <span style="color: #000000;">770</span> <span style="color: #000000; font-weight: bold;">/</span>filevol001<span style="color: #000000; font-weight: bold;">/</span>drive<span style="color: #007800;">$i</span>
        <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>i++<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<p>Simple, right? I also wrote a script to generate the bacula-sd.conf file on a storage node as well:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
usage<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
<span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #cc0000; font-style: italic;">&lt;&lt; EOF
    Usage $0 NUMBER &gt; /usr/local/etc/bacula-sd.conf
&nbsp;
    Where &quot;NUMBER&quot; is just a single digit indicating which storage node this is.
&nbsp;
    Example, for write-07:
    $ make_sd.sh 7 &gt; /usr/local/etc/bacula-sd.conf
EOF</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #007800;">i</span>=<span style="color: #000000;">1</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #007800;">$1</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
    usage
    <span style="color: #7a0874; font-weight: bold;">exit</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;Storage {<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Name = write-0$1.llnl.gov-sd<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>SDAddress = write-0$1.llnl.gov<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>SDPort = 9103<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>WorkingDirectory = <span style="color: #000099; font-weight: bold;">\&quot;</span>/var/db/bacula<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Pid Directory = <span style="color: #000099; font-weight: bold;">\&quot;</span>/var/run<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Maximum Concurrent Jobs = 516<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;}<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;#<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;# List Directors who are permitted to contact Storage daemon<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;#<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;Director {<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Name = write.llnl.gov-dir<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Password = <span style="color: #000099; font-weight: bold;">\&quot;</span>ItsASecret<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;}<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;#<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;# Restricted Director, used by tray-monitor to get the<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;#   status of the storage daemon<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;#<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;Director {<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Name = write.llnl.gov-mon<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Password = <span style="color: #000099; font-weight: bold;">\&quot;</span>ItsANotherSecret<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Monitor = yes<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;}<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;Messages {<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Name = Standard<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>director = write.llnl.gov-dir = all<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;}<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
&nbsp;
&nbsp;
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;Device {<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Name = W0$1FileStorage<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Media Type = File<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Archive Device = /filevol001<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>LabelMedia = yes;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Random Access = Yes;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>AutomaticMount = yes;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>RemovableMedia = no;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>AlwaysOpen = no;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Maximum Concurrent Jobs = 2<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;}<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$i</span> <span style="color: #660033;">-le</span> <span style="color: #000000;">512</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">do</span>
        <span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
        <span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;Device {<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
        <span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Name = W0$1FileStorageD<span style="color: #007800;">$i</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
        <span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Media Type = File<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
        <span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Archive Device = /filevol001/drive<span style="color: #007800;">$i</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
        <span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>LabelMedia = yes;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
        <span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Random Access = Yes;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
        <span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>AutomaticMount = yes;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
        <span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>RemovableMedia = no;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
        <span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>AlwaysOpen = no;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
        <span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Maximum Concurrent Jobs = 2<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
        <span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;}<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
        <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>i++<span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<p>On the Directory, a storage node definition is saved in /usr/local/etc/bacula/storage.d/write-0{N}.conf, which is included in /usr/local/etc/bacula/storage.conf:</p>
<pre>
@/usr/local/etc/bacula/storage.d/write-01.conf
@/usr/local/etc/bacula/storage.d/write-02.conf
@/usr/local/etc/bacula/storage.d/write-03.conf
@/usr/local/etc/bacula/storage.d/write-04.conf
@/usr/local/etc/bacula/storage.d/write-05.conf
@/usr/local/etc/bacula/storage.d/write-06.conf
</pre>
<h1>Client Generation</h1>
<p>There are two components, the TEMPLATE file (there are three, TEMPLATE-unix, TEMPLATE-win32 and TEMPATE-mac) and the shell script.</p>
<h2>The Client TEMPLATE File</h2>
<p>Here is what one of the TEMPLATE files looks like:</p>
<pre>
#
# Client Definition, the Password here must match
#  the clients bacula-fd.conf Client definition.
#
# Using Vi/m, you can easily replaced HOSTNAME with
#  the short hostname of the client with:
#  %s/HOSTNAME/yourhostname/
#
#

Client {
    Name = HOSTNAME.llnl.gov
    Address = HOSTNAME.llnl.gov
    FDPort = 9102
    Catalog = Catalog001
    Password = "ItsASecret"
    File Retention = 40 days
    Job Retention = 1 months
    AutoPrune = yes
    Maximum Concurrent Jobs = 10
    Heartbeat Interval = 300
}

Console {
    Name = HOSTNAME.llnl.gov-acl
    Password = ItsASecret
    JobACL = "HOSTNAME.llnl.gov RestoreFiles", "HOSTNAME.llnl.gov"
    ScheduleACL = *all*
    ClientACL = HOSTNAME.llnl.gov
    FileSetACL = "HOSTNAME.llnl.gov FileSet"
    CatalogACL = Catalog001
    CommandACL = *all*
    StorageACL = *all*
    PoolACL = HOSTNAME.llnl.gov-File
}

Job {
    Name = "HOSTNAME.llnl.gov"
    Type = Backup
    Level = Incremental
    FileSet = "HOSTNAME.llnl.gov FileSet"
    Client = "HOSTNAME.llnl.gov"
    Storage = FileStorageD##
    Pool = HOSTNAME.llnl.gov-File
    Schedule = "@@"
    Messages = Standard
    Priority = 10
    Write Bootstrap = "/var/db/bacula/%c.bsr"
    Maximum Concurrent Jobs = 10
    Reschedule On Error = yes
    Reschedule Interval = 1 hour
    Reschedule Times = 1
    Max Wait Time = 30 minutes
    Cancel Lower Level Duplicates = yes
    Allow Duplicate Jobs = no
    RunScript {
        RunsWhen = Before
        FailJobOnError = no
        Command = "/etc/scripts/package_list.sh"
        RunsOnClient = yes
    }
}

Pool {
    Name = HOSTNAME.llnl.gov-File
    Pool Type = Backup
    Recycle = yes
    AutoPrune = yes
    Volume Retention = 1 months
    Maximum Volume Bytes = 10G
    Maximum Volumes = 100
    LabelFormat = "HOSTNAME.llnl.govFileVol"
    Maximum Volume Jobs = 5
}

Job {
    Name = "HOSTNAME.llnl.gov RestoreFiles"
    Type = Restore
    Client= HOSTNAME.llnl.gov
    FileSet="HOSTNAME.llnl.gov FileSet"
    Storage = FileStorageD##
    Pool = HOSTNAME.llnl.gov-File
    Messages = Standard
    #Where = /tmp/bacula-restores
}

FileSet {
    Name = "HOSTNAME.llnl.gov FileSet"
    Include {
        Options {
            signature = MD5
            compression = GZIP6
                        fstype = ext2
                        fstype = xfs
                        fstype = jfs
                        fstype = ufs
                        fstype = zfs
                        onefs = no
                        Exclude = yes
                        @/usr/local/etc/bacula/excludes.d/common.conf
        }
                File = /
                File = /usr/local
                Exclude Dir Containing = .excludeme
    }
    Exclude {
        @/usr/local/etc/bacula/excludes.d/unix.conf
    }
}
</pre>
<h2>The Create Client Script</h2>
<p>So here is what really makes creating clients easy for us, the create_client script.</p>
<p>I didn&#8217;t want to do it this way, really, so part of me is very ashamed of this tool. I would have preferred to re-write this in Python, or make a web page out of it, and let admins create clients from their desktop. Or, I would have loved to create a puppet module to handle this automagically (but that would exlcude everything that *isn&#8217;t* running Puppet, which is huge).</p>
<p>With that disclaimer, here is my create_client shell script:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/env bash</span>
<span style="color: #666666; font-style: italic;"># usage: cclient -t unix -s 12am -h hostname</span>
<span style="color: #666666; font-style: italic;">#</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">umask</span> 022
&nbsp;
<span style="color: #666666; font-style: italic;"># Variables</span>
<span style="color: #666666; font-style: italic;">## Randomize Schedule</span>
<span style="color: #007800;">SCHEDULES</span>=<span style="color: #ff0000;">&quot;4pm 5pm 6pm 7pm 8pm 9pm 10pm 11pm 12am 1am 2am 3am 4am 5am 6am 7am 8am 9am 10am&quot;</span>
<span style="color: #007800;">s</span>=<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$SCHEDULES</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #007800;">num_s</span>=<span style="color: #800000;">${#s[*]}</span>
<span style="color: #007800;">RAND_SCHED</span>=<span style="color: #800000;">${s[$((RANDOM%num_s))]}</span>
<span style="color: #666666; font-style: italic;"># Randomize which storage node we use</span>
<span style="color: #007800;">NODES</span>=<span style="color: #ff0000;">&quot;write-06 write-01 write-06 write-01 write-02 write-03 write-04 write-05&quot;</span>
<span style="color: #007800;">n</span>=<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$NODES</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #007800;">num_n</span>=<span style="color: #800000;">${#n[*]}</span>
<span style="color: #007800;">RAND_NODE</span>=<span style="color: #800000;">${n[$((RANDOM%num_n))]}</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">DRIVE</span>=<span style="color: #000000; font-weight: bold;">`</span>jot <span style="color: #660033;">-r</span> <span style="color: #000000;">1</span> <span style="color: #000000;">1</span> <span style="color: #000000;">512</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">BDIR</span>=<span style="color: #ff0000;">&quot;/usr/local/etc/bacula&quot;</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">TYPE</span>=<span style="color: #ff0000;">&quot;unix&quot;</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">SCHEDULE</span>=<span style="color: #007800;">$RAND_SCHED</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">HOSTNAME</span>=<span style="color: #ff0000;">&quot;&quot;</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">STORAGE_NODE</span>=<span style="color: #007800;">$RAND_NODE</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">GIT_DIR</span>=<span style="color: #ff0000;">&quot;/usr/local/etc/bacula/.git&quot;</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">CLASS</span>=<span style="color: #ff0000;">&quot;desktop&quot;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">whoami</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> == <span style="color: #ff0000;">&quot;root&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #cc0000; font-style: italic;">&lt;&lt; EOF
                Please do not run this as root. This script runs a
                git add/commit, which is how changes are managed and
                tracked. If you run this as root, then it shows up
                as carlson39 or root.
&nbsp;
                If you encounter a problem with your normal OUN account,
                please contact Mike Carlson, or submit a bug here:
                https://st-scm.llnl.gov/redmine/snt/projects/bacula/issues/new
EOF</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
usage<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
<span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #cc0000; font-style: italic;">&lt;&lt; EOF
&nbsp;
        Usage: $0 [OPTION]... -h HOSTNAME
&nbsp;
        This script will generate a bacula client definition.
&nbsp;
        OPTIONS:
        -s      schedule, (4pm|5pm|6pm|7pm|8pm|9pm|10pm|11pm|12am|1am|2am|3am|4am|5am|6am|7am|8am|9am). The default schedule is random.
        -t      type, (unix|win32|mac), unix is the default
        -n      storage node (write-01|write-02|...), the default is random.
        -h      hostname (use the short hostname)
EOF</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$BDIR</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #7a0874; font-weight: bold;">getopts</span> <span style="color: #ff0000;">'c:t:s:n:h:'</span> OPTION
<span style="color: #000000; font-weight: bold;">do</span>
        <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #007800;">$OPTION</span> <span style="color: #000000; font-weight: bold;">in</span>
                c<span style="color: #7a0874; font-weight: bold;">&#41;</span>
                        <span style="color: #007800;">CLASS</span>=<span style="color: #007800;">$OPTARG</span>
                        <span style="color: #000000; font-weight: bold;">;;</span>
                t<span style="color: #7a0874; font-weight: bold;">&#41;</span>
                        <span style="color: #007800;">TYPE</span>=<span style="color: #007800;">$OPTARG</span>
                        <span style="color: #000000; font-weight: bold;">;;</span>
                s<span style="color: #7a0874; font-weight: bold;">&#41;</span>
                        <span style="color: #007800;">SCHEDULE</span>=<span style="color: #007800;">$OPTARG</span>
                        <span style="color: #000000; font-weight: bold;">;;</span>
                h<span style="color: #7a0874; font-weight: bold;">&#41;</span>
                        <span style="color: #007800;">HOSTNAME</span>=<span style="color: #007800;">$OPTARG</span>
                        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$HOSTNAME</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">egrep</span> <span style="color: #660033;">-q</span> <span style="color: #ff0000;">&quot;(llnl.gov|ucllnl.org)&quot;</span>
                        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$?</span> <span style="color: #660033;">-eq</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
                        <span style="color: #000000; font-weight: bold;">then</span>
                        <span style="color: #007800;">HOSTNAME</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$HOSTNAME</span><span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/.llnl.gov//'</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/.ucllnl.org//'</span><span style="color: #000000; font-weight: bold;">`</span>
                        <span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
                        <span style="color: #000000; font-weight: bold;">;;</span>
                n<span style="color: #7a0874; font-weight: bold;">&#41;</span>
                        <span style="color: #007800;">STORAGE_NODE</span>=<span style="color: #007800;">$OPTARG</span>
                        <span style="color: #000000; font-weight: bold;">;;</span>
                ?<span style="color: #7a0874; font-weight: bold;">&#41;</span>
                        usage
                        <span style="color: #7a0874; font-weight: bold;">exit</span>
                        <span style="color: #000000; font-weight: bold;">;;</span>
        <span style="color: #000000; font-weight: bold;">esac</span>
<span style="color: #000000; font-weight: bold;">done</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #007800;">$CLASS</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #007800;">$TYPE</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #007800;">$SCHEDULE</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #007800;">$HOSTNAME</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #007800;">$STORAGE_NODE</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
        usage
        <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-w</span> <span style="color: #007800;">$HOSTNAME</span> <span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.conf
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$?</span> <span style="color: #660033;">-eq</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'client '</span><span style="color: #007800;">$HOSTNAME</span> <span style="color: #ff0000;">'already exists...'</span>
<span style="color: #000000; font-weight: bold;">else</span>
        <span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">RETRY_COUNT</span>=<span style="color: #ff0000;">&quot;2&quot;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$STORAGE_NODE</span> == <span style="color: #ff0000;">&quot;write-01&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
        <span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #007800;">DRIVE</span>=<span style="color: #000000; font-weight: bold;">`</span>jot <span style="color: #660033;">-r</span> <span style="color: #000000;">1</span> <span style="color: #000000;">33</span> <span style="color: #000000;">512</span><span style="color: #000000; font-weight: bold;">`</span>
                <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/HOSTNAME/'</span><span style="color: #007800;">$HOSTNAME</span><span style="color: #ff0000;">'/g'</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/FileStorageD##/FileStorageD'</span><span style="color: #007800;">$DRIVE</span><span style="color: #ff0000;">'/'</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/\@\@/'</span><span style="color: #007800;">$SCHEDULE</span><span style="color: #ff0000;">'/'</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/RETRY_COUNT/'</span><span style="color: #007800;">$RETRY_COUNT</span><span style="color: #ff0000;">'/g'</span> <span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.d<span style="color: #000000; font-weight: bold;">/</span>TEMPLATE-<span style="color: #007800;">$TYPE</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$SCHEDULE</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span>.conf
                <span style="color: #7a0874; font-weight: bold;">echo</span> \<span style="color: #000000; font-weight: bold;">@</span><span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$SCHEDULE</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span>.conf <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.conf
        <span style="color: #000000; font-weight: bold;">else</span>
                <span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">SN</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$STORAGE_NODE</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cut</span> <span style="color: #660033;">-c</span> <span style="color: #000000;">7</span>-<span style="color: #000000;">8</span><span style="color: #000000; font-weight: bold;">`</span>
                <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/HOSTNAME/'</span><span style="color: #007800;">$HOSTNAME</span><span style="color: #ff0000;">'/g'</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/FileStorageD##/W'</span><span style="color: #007800;">$SN</span><span style="color: #ff0000;">'FileStorageD'</span><span style="color: #007800;">$DRIVE</span><span style="color: #ff0000;">'/'</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/\@\@/'</span><span style="color: #007800;">$SCHEDULE</span><span style="color: #ff0000;">'/'</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/RETRY_COUNT/'</span><span style="color: #007800;">$RETRY_COUNT</span><span style="color: #ff0000;">'/g'</span> <span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.d<span style="color: #000000; font-weight: bold;">/</span>TEMPLATE-<span style="color: #007800;">$TYPE</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$SCHEDULE</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span>.conf
                <span style="color: #7a0874; font-weight: bold;">echo</span> \<span style="color: #000000; font-weight: bold;">@</span><span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$SCHEDULE</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span>.conf <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.conf
        <span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
        <span style="color: #c20cb9; font-weight: bold;">chgrp</span> st-bacula-admins <span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$SCHEDULE</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span>.conf
        <span style="color: #c20cb9; font-weight: bold;">git</span> add <span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$SCHEDULE</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span>.conf <span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.conf
        <span style="color: #c20cb9; font-weight: bold;">git</span> commit
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'created client definition: '</span><span style="color: #007800;">$BDIR</span><span style="color: #000000; font-weight: bold;">/</span>clients.d<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$SCHEDULE</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$HOSTNAME</span>.conf
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'for '</span><span style="color: #007800;">$HOSTNAME</span><span style="color: #ff0000;">'.llnl.gov'</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

<p>This is always a work in progress, but at the core, it is a simple sed wrapper with a lot of randomization and a git commit.</p>
<p>Why all the randomization?</p>
<p>Because I had to add around 1000 clients in a VERY short amount of time. We didn&#8217;t have a problem pushing the Bacula client to all of the platforms, nor the bacula-fd.conf file either. What I could not do was spend the time to create and manage all of the resources for each client. That is why I have so many devices/drives, so I can attempt to have a 1:1 without having to actually think about it.</p>
<p>So, I wrote ANOTHER script to wrap around this one when I need to do bulk client creations. I&#8217;m not going to post that, it just loops through the above command.</p>
<h2>Pre-Job command &#8211; Package List</h2>
<p>I only do this on the Unix/Linux clients, and I thought it was a cool idea. </p>
<p>Yeah, I will pat myself on the back a little bit for that :)</p>
<p>I exclude the Operating System from backups for two reasons, 1) to reduce backing up duplicate and reproducible data and 2) Our build/Imaging process is so quick and clean it is just faster to rebuild than restore everything.</p>
<p>Still, I needed a way to keep the state of installed packages/software.</p>
<p>This is where the pre-job command comes in handy. This part right here:</p>
<pre>
    RunScript {
        RunsWhen = Before
        FailJobOnError = no
        Command = "/etc/scripts/package_list.sh"
        RunsOnClient = yes
    }
</pre>
<p>That package_list.sh file looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">&nbsp;
<span style="color: #666666; font-style: italic;">#!/usr/bin/env bash</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PLIST</span>=<span style="color: #ff0000;">&quot;/root/plist.txt&quot;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #ff0000;">&quot;<span style="color: #780078;">`uname -s`</span>&quot;</span> <span style="color: #000000; font-weight: bold;">in</span>
Linux<span style="color: #7a0874; font-weight: bold;">&#41;</span>
                <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-x</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>lsb_release <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                        <span style="color: #007800;">DIST</span>=<span style="color: #000000; font-weight: bold;">`</span>lsb_release -d<span style="color: #000000; font-weight: bold;">`</span>
                <span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
                <span style="color: #666666; font-style: italic;"># RHEL</span>
                <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-x</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>up2date <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                        rpm <span style="color: #660033;">-qa</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$PLIST</span>
                <span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
                <span style="color: #666666; font-style: italic;"># RHEL 5</span>
                <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-x</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>yum <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>yum.pid <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Yum currently in use, exiting gracefully...&quot;</span>
                                <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
                        <span style="color: #000000; font-weight: bold;">else</span>
                        <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>yum list installed <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $1}'</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$PLIST</span>
                        <span style="color: #000000; font-weight: bold;">fi</span>
                <span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
                <span style="color: #666666; font-style: italic;"># Ubuntu</span>
                <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-x</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">dpkg</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                        <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">dpkg</span> <span style="color: #660033;">--get-selections</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $1}'</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$PLIST</span>
                <span style="color: #000000; font-weight: bold;">fi</span>
                <span style="color: #000000; font-weight: bold;">;;</span>
&nbsp;
FreeBSD<span style="color: #7a0874; font-weight: bold;">&#41;</span>
                pkg_info<span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $1}'</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$PLIST</span>
                <span style="color: #000000; font-weight: bold;">;;</span>
SunOS<span style="color: #7a0874; font-weight: bold;">&#41;</span>
                pkginfo <span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $1}'</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$PLIST</span>
                <span style="color: #000000; font-weight: bold;">;;</span>
<span style="color: #000000; font-weight: bold;">esac</span></pre></div></div>

<p>That file, /root/plist.txt, gets backed up.</p>
<p>Now we have a record of what was installed on our Unix platforms :)</p>
<p>That is it for now, see you at <a href="/#">Part 3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mywushublog.com/2011/07/bacula-in-the-enterprise-part-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  www.mywushublog.com/feed/ ) in 0.80285 seconds, on May 19th, 2012 at 9:30 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on May 19th, 2012 at 10:30 pm UTC -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Quick Cache Is Fully Functional :-) ... A Quick Cache file was just served for (  www.mywushublog.com/feed/ ) in 0.00048 seconds, on May 19th, 2012 at 10:00 pm UTC. -->
