<?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 &#187; Jenny</title>
	<atom:link href="http://www.mywushublog.com/tag/jenny/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mywushublog.com</link>
	<description></description>
	<lastBuildDate>Tue, 31 Jan 2012 18:42:14 +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>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>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>0</slash:comments>
		</item>
		<item>
		<title>The Redeem Team &#8211; Rose Peak</title>
		<link>http://www.mywushublog.com/2010/11/the-redeem-team-rose-peak/</link>
		<comments>http://www.mywushublog.com/2010/11/the-redeem-team-rose-peak/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 23:43:22 +0000</pubDate>
		<dc:creator>Mike Carlson</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[hiking]]></category>
		<category><![CDATA[jen]]></category>
		<category><![CDATA[Jenny]]></category>

		<guid isPermaLink="false">http://www.mywushublog.com/?p=1120</guid>
		<description><![CDATA[If you want to refresh your memory of why Rose Peak is my Moby-Dick, you can (re-)read last years post. In short, I didn&#8217;t make it to the top. I&#8217;ll hold you in suspense no longer, I made it to the top, and back down, without any physical issues like ...]]></description>
			<content:encoded><![CDATA[<p>If you want to refresh your memory of why Rose Peak is my Moby-Dick, you can (re-)read <a href="http://www.mywushublog.com/2009/10/rose-peak-hike-or-how-i-was-destroyed/">last years post</a>. In short, I didn&#8217;t make it to the top.</p>
<p>I&#8217;ll hold you in suspense no longer, I made it to the top, and back down, without any physical issues like cramping. The hike was in fact, very pleasent, and it rained on us but it was nice.</p>
<p>Last year&#8217;s experience was a really good learning experience, and it made me a lot more aware of the warning signs of fatigue. I know now that I have to properly prepare for extraneousness activities, and of course, be conscious of the fact that my ill-preparedness will effect those around me. I think Jenny learned a lot too, like how to make sure Mike doesn&#8217;t break down&#8230; So, along with plenty of extra food, she also brought her Husbands rain-gear and hiking boots (thanks, to both Jenny and Marshall!). I had a moment of reservation about borrowing it, because I hate the feeling of depending on someone else&#8230; but, then I came to my senses and realized how awesome being comfortable and dry was going to be!</p>
<p>So, while this hiking trip will lack some of the great details the last one did, it was a much more rewarding trip. The group we went with was cool, especially Mark. He retired from the Lab in 2008, and he was such a nice and complementary person. He is also a &#8220;sweat hog&#8221; like me, and even though he quickly conceeded to my stunning shirt-drenching prowess, it was great to meet another person that perspired (and even suffered from muscle cramping!). It was also great to hear him and Jenny chat it up, those two were pretty cute on the trail swapping stories :)</p>
<p>Here is the first half of the trip, my phones battery was at 60%, I didn;t charge it the night before, but it was nice to track the &#8220;big burn&#8221;:<br />
<small>View <a style="color: #0000ff; text-align: left;" href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;msid=116343409263304007731.0004935554a5d69425c1c&amp;ll=37.554104,-121.706371&amp;spn=0.065323,0.109863&amp;t=p&amp;z=13&amp;source=embed">Track 6</a> in a larger map</small></p>
<p>And here are some photo&#8217;s that Jenny took, both from this year and last year:</p>
<div id="attachment_1124" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2009.09.26_12.48.36.jpg"><img class="size-medium wp-image-1124" title="rose-peak-2009.09.26_12.48.36" src="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2009.09.26_12.48.36-300x199.jpg" alt="" width="300" height="199" /></a><p class="wp-caption-text">This was me last year, already dying...</p></div>
<p>&nbsp;</p>
<div id="attachment_1125" class="wp-caption aligncenter" style="width: 209px"><a href="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_11.21.08.jpg"><img class="size-medium wp-image-1125" title="rose-peak-2010.10.23_11.21.08" src="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_11.21.08-199x300.jpg" alt="" width="199" height="300" /></a><p class="wp-caption-text">Me this year, imitating Jenny&#39;s UCD chant that she does.. </p></div>
<div id="attachment_1126" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2009.09.26_14.41.52.jpg"><img class="size-medium wp-image-1126" title="rose-peak-2009.09.26_14.41.52" src="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2009.09.26_14.41.52-300x199.jpg" alt="" width="300" height="199" /></a><p class="wp-caption-text">Probably the funnest picture the three of us took last year. It was Velimir&#39;s idea to pretend we were looking at something in the distance.</p></div>
<div id="attachment_1127" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_12.45.52.jpg"><img class="size-medium wp-image-1127" title="rose-peak-2010.10.23_12.45.52" src="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_12.45.52-300x199.jpg" alt="" width="300" height="199" /></a><p class="wp-caption-text">So here, Jenny and I tried to re-create the photo at the same spot... if you look, it is nearly identical.</p></div>
<div id="attachment_1130" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2009.09.26_13.05.44.jpg"><img class="size-medium wp-image-1130" title="rose-peak-2009.09.26_13.05.44" src="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2009.09.26_13.05.44-300x199.jpg" alt="" width="300" height="199" /></a><p class="wp-caption-text">Last years group photo</p></div>
<p>&nbsp;</p>
<div id="attachment_1131" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_11.34.04.jpg"><img class="size-medium wp-image-1131" title="rose-peak-2010.10.23_11.34.04" src="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_11.34.04-300x199.jpg" alt="" width="300" height="199" /></a><p class="wp-caption-text">This years group photo reenactment. I somehow managed to get rabbit ears again too...</p></div>
<p>&nbsp;</p>
<div id="attachment_1128" class="wp-caption aligncenter" style="width: 209px"><a href="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_11.35.33.jpg"><img class="size-medium wp-image-1128" title="rose-peak-2010.10.23_11.35.33" src="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_11.35.33-199x300.jpg" alt="" width="199" height="300" /></a><p class="wp-caption-text">Jenny petting the dead Coyote... there there dead coyote...</p></div>
<p>&nbsp;</p>
<div id="attachment_1129" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_12.08.04.jpg"><img class="size-medium wp-image-1129" title="rose-peak-2010.10.23_12.08.04" src="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_12.08.04-300x199.jpg" alt="" width="300" height="199" /></a><p class="wp-caption-text">This is the log we had lunch at last year. This was when I first saw my calf muscles cramping up. I re-lived the moment, making sure they were not cramping up.</p></div>
<p>&nbsp;</p>
<div id="attachment_1132" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_13.24.55.jpg"><img class="size-medium wp-image-1132" title="rose-peak-2010.10.23_13.24.55" src="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_13.24.55-300x199.jpg" alt="" width="300" height="199" /></a><p class="wp-caption-text">Small group photo, Mark, Me, Teresa and Jenny</p></div>
<p>&nbsp;</p>
<div id="attachment_1133" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_13.23.23.jpg"><img class="size-medium wp-image-1133" title="rose-peak-2010.10.23_13.23.23" src="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_13.23.23-300x199.jpg" alt="" width="300" height="199" /></a><p class="wp-caption-text">The top of Rose Peak! Adding to the rock pile.</p></div>
<p>&nbsp;</p>
<div id="attachment_1134" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_13.23.49.jpg"><img class="size-medium wp-image-1134" title="rose-peak-2010.10.23_13.23.49" src="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_13.23.49-300x199.jpg" alt="" width="300" height="199" /></a><p class="wp-caption-text">Jenny adding her, what is it now, 4th rock to the peak :) what a pro</p></div>
<p>&nbsp;</p>
<div id="attachment_1135" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_14.48.33.jpg"><img class="size-medium wp-image-1135" title="rose-peak-2010.10.23_14.48.33" src="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_14.48.33-300x199.jpg" alt="" width="300" height="199" /></a><p class="wp-caption-text">Jenny and her new friend</p></div>
<p>&nbsp;</p>
<div id="attachment_1136" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_17.11.58.jpg"><img class="size-medium wp-image-1136" title="rose-peak-2010.10.23_17.11.58" src="http://www.mywushublog.com/wp-content/uploads/2010/11/rose-peak-2010.10.23_17.11.58-300x199.jpg" alt="" width="300" height="199" /></a><p class="wp-caption-text">Cow</p></div>
<p>I&#8217;ll link Jenny&#8217;s gallery back here when I grab the URL</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mywushublog.com/2010/11/the-redeem-team-rose-peak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why you should use disk labels</title>
		<link>http://www.mywushublog.com/2009/12/why-you-should-use-disk-labels/</link>
		<comments>http://www.mywushublog.com/2009/12/why-you-should-use-disk-labels/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 03:19:34 +0000</pubDate>
		<dc:creator>Mike Carlson</dc:creator>
				<category><![CDATA[Geekyness]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[GEOM]]></category>
		<category><![CDATA[Jenny]]></category>
		<category><![CDATA[Labels]]></category>

		<guid isPermaLink="false">http://www.mywushublog.com/?p=607</guid>
		<description><![CDATA[I recently had a little problem with a new FreeBSD install, and it is one of those times were I sort of appreciate how FreeBSD assigns device handles, yet at the same time hate it :) The setup is this: The OS was installed on a mirrored hardware raid device ...]]></description>
			<content:encoded><![CDATA[<p>I recently had a little problem with a new FreeBSD install, and it is one of those times were I sort of appreciate how FreeBSD assigns device handles, yet at the same time hate it :)</p>
<p>The setup is this:<br />
The OS was installed on a mirrored hardware raid device (using the <a href="http://www.freebsd.org/cgi/man.cgi?query=mpt&#038;sektion=4&#038;manpath=FreeBSD+8.0-RELEASE">mpt(4)</a> driver), and then I had a large RAID6 array attached via a FC controller (using the <a href="http://www.freebsd.org/cgi/man.cgi?query=isp&#038;sektion=4&#038;manpath=FreeBSD+8.0-RELEASE">isp(4)</a> driver). When I installed the OS, the mpt device was showing up as da0. So I went ahead with the install and rebooted the system, so far so good.</p>
<p>What I didn&#8217;t realize was the FC device was not seen yet, so after some fiddling, <a href="http://jettagirl.wordpress.com">Jenny</a> and I got the large RAID6 array to show up&#8230; unfortunately, the isp card was before the mpt card on the PCI bus:<br />
<code><br />
isp0@pci0:2:1:0:	class=0x0c0400 card=0x01321077 chip=0x63221077 rev=0x03 hdr=0x00<br />
    vendor     = 'QLogic Corporation'<br />
    device     = 'QLA6322 Fibre Channel Adapter'<br />
    class      = serial bus<br />
    subclass   = Fibre Channel<br />
mpt0@pci0:2:3:0:	class=0x010000 card=0x30601000 chip=0x00501000 rev=0x02 hdr=0x00<br />
    vendor     = 'LSI Logic (Was: Symbios Logic, NCR)'<br />
    device     = 'SAS 3000 series, 4-port with 1064 -StorPort'<br />
    class      = mass storage<br />
    subclass   = SCSI<br />
</code><br />
and the RAID6 now became da0, and the OS device now became da1. </p>
<p>Doh!</p>
<p>The system prompted for the / drive, so I had to call out the correct device at the mount> prompt:<br />
<code><br />
mount> ufs:/dev/da1s1a<br />
</code><br />
After that, the system continue to boot into mult-user mode, which cause some very strange console behavior (it acted like the return key was being held down), and my only option was to SSH in as local user, su to root, and then fix /etc/fstab.</p>
<p>This was not devastating, however, it show the importance of using disk labels instead of device handles in certain use cases. I haven&#8217;t fixed the / mount, but to get a comfort level with using GEOM labels I added another drive to the system and called it EXPORT.</p>
<p>You can assign a permanent label in two ways (that I know of). When you newfs the device, you can specify the L flag (BTW, -O2 means to use UFS2, and -U will use Soft-Updates):<br />
<code>[root@paper ~]&gt; newfs -O2 -U -L EXPORT /dev/da2s1a</code><br />
OR using glabel (which is what you would have to do for a non UFS filesystem.<br />
<code>[root@paper ~]&gt; glabel create EXPORT da2s1a</code><br />
Now we can see our newly labeled device in action:<br />
<code>[root@paper ~]&gt; ls /dev/label<br />
.      ..     EXPORT<br />
[root@paper ~]&gt; glabel status<br />
                  Name  Status  Components<br />
            label/EXPORT     N/A  da2s1a<br />
</code><br />
To add it to /etc/fstab, you can either edit the file, or append the correctly tab-delimited line like so:<br />
<code><br />
[root@paper ~]&gt; echo "/dev/label/EXPORT\t/export\tufs\trw\t2\t2" &gt;&gt; /etc/fstab<br />
[root@paper ~]&gt; mkdir /export<br />
[root@paper ~]&gt; mount export<br />
</code><br />
Hurray!<br />
<code><br />
[root@paper ~]&gt; df<br />
Filesystem      1K-blocks        Used       Avail Capacity  Mounted on<br />
/dev/da1s1a        60931274   4754540    51302234     8%    /<br />
devfs                     1         1           0   100%    /dev<br />
tank            10569645824 107237376 10462408448     1%    /tank<br />
/dev/label/EXPORT   132022788         4   121460962     0%    /export</p>
<p>[root@paper ~]&gt; mount<br />
/dev/da1s1a on / (ufs, local, soft-updates)<br />
devfs on /dev (devfs, local, multilabel)<br />
tank on /tank (zfs, NFS exported, local)<br />
/dev/label/EXPORT on /export (ufs, local)<br />
</code></p>
<p>This is now a persistent label. To be safe, I&#8217;ll have to boot off of a CD/USB drive and modify the root device.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mywushublog.com/2009/12/why-you-should-use-disk-labels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PuppetCamp09</title>
		<link>http://www.mywushublog.com/2009/10/puppetcamp09/</link>
		<comments>http://www.mywushublog.com/2009/10/puppetcamp09/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 22:17:30 +0000</pubDate>
		<dc:creator>Mike Carlson</dc:creator>
				<category><![CDATA[Geekyness]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Jenny]]></category>
		<category><![CDATA[kickassery]]></category>
		<category><![CDATA[port management]]></category>
		<category><![CDATA[Puppet]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.mywushublog.com/?p=512</guid>
		<description><![CDATA[This was a very cool conference. I picked up a lot of useful information on both the open source tool, Puppet, and some ideas on infrastructure. What also made this conference unique, is how honest the Puppet team and community were about the projects strength and weaknesses. Those that have ...]]></description>
			<content:encoded><![CDATA[<p>This was a very cool conference. I picked up a lot of useful information on both the open source tool, <a href="http://reductivelabs.com">Puppet</a>, and some ideas on infrastructure.</p>
<p>What also made this conference unique, is how honest the Puppet team and community were about the projects strength and weaknesses. Those that have deployed Puppet on a larger scale (MessageOne and Google) seemed to go through the same iterations in attempting to scale out their Puppetmaster&#8217;s. From WEBrick (which is what I&#8217;m currently running Puppet with :) ), which is hated by all since its a single process/thread web server that can only handle one request at a time. To Mongrel, which you have to manage a mongrel cluster script, feed it lots of memory, and then throw an apache proxy server in front of them. Now, people are starting to settle on using Passenger/mod_rack, which is what I spent most of yesterday looking into and setting up. This allows apache to mount a rails instance, and then you don&#8217;t actually have to run puppetmasterd. This still requires some decent hardware, and I&#8217;m currently running my puppetmaster on a VM with 2GB or memory, so I&#8217;ll have to watch out for that. <a href="http://www.zeus.com/resources/case_studies/greatschools.html">Chris</a>, the one who introduced me to Puppet, said he still uses WEBrick for all of his DB, Tomcat, and Apache servers (I think he said something like 200 systems) and it has been working out nicely. He, like the guys at Google, also doesn&#8217;t run puppet as a daemon.</p>
<p>Anyway, the point is, we learned a lot about the project, way more than if a sales person had come to us and just told us the things puppet does well, or how it operates on paper (*cough* LANDesk *cough*). It was really awesome to talk with Andrew Pollock and <a href="http://explanatorygap.net/">Nigel Kersten</a> from Google. See, I was a little unsure about Puppet in our environment, where we have multi-purpose servers, computer servers, and desktops that we have to manage. It seemed, at a first glance, that most of the Puppet users out there have a homogeneous environment, and <a href="http://stochasticresonance.wordpress.com/">Andrew (Shafer)</a> had stressed the concept of single role servers. After talking with them, I felt a lot more comfortable pursuing Puppet across our servers and desktops. Did I mention they were super cool and friendly?</p>
<p>We also learned a lot about the Puppet developers, which had its own interesting advantage. I have a lot of respect for what <a href="http://madstop.com/">Luke Kanies</a> has been able to do, and by the end of the conference, he showed significant mastery in what he has done, as well as some humility and admitting what he has not been able to do and why. I was a little put off the first day though, when both him and Andrew came off a little arrogant and crass. It did make me step back and think, &#8220;Is this project going to be well managed in the future with personalities like this in charge? Is their answer of &#8216;don&#8217;t do that!&#8217; tongue in cheek, or are they not supportive of a diverse environment?&#8221;. In the end, I have more respect for the project than ever, and with it still being a young project, I hope they listened to some of the feedback, and I also can&#8217;t wait to see where it ends up in the next year.</p>
<p>Andrew, the Puppet Andrew, came up to us a lot during the conference, and he was fun to talk too, and he&#8217;s very academic and he had a lot of abstract concepts to talk about. Also, he said this was the first conference he has arranged, and I think he did a fantastic job. Jenny had commented that this was the first conference she had lasted the entire duration, so that says a lot about the pacing and content of PuppetCamp. I felt the same way, every session was incredibly engaging, and how Andrew had setup the democratic and chaotic Open Sessions was very impressive. Lets put it this way, I even got up there and pitched a topic, which is something I would have never done. Hurray for me stepping outside of my comfort zone!</p>
<h2>Warning: side topic!</h2>
<p>Now that I&#8217;ve had the weekend to google all the cool technologies I was exposed too, I&#8217;m also reminded why I really like having a FreeBSD server at my disposal. They had talked about CouchDB, so on a whim I did a<br />
<code><br />
~> cd /usr/ports<br />
/usr/ports> make search name=couchdb<br />
Port:	couchdb-0.9.0_1,1<br />
Path:	/usr/ports/databases/couchdb<br />
Info:	A document database server, accessible via a RESTful JSON API<br />
Maint:	till@php.net<br />
B-deps:	ca_root_nss-3.11.9_2 curl-7.19.6_1 erlang-lite-r13b01_6,1 gettext-0.17_1 gmake-3.81_3 icu-3.8.1_2 libiconv-1.13.1 libtool-2.2.6a nspr-4.8 perl-5.8.9_3 spidermonkey-1.7.0<br />
R-deps:	ca_root_nss-3.11.9_2 curl-7.19.6_1 erlang-lite-r13b01_6,1 gettext-0.17_1 gmake-3.81_3 icu-3.8.1_2 libiconv-1.13.1 libtool-2.2.6a nspr-4.8 perl-5.8.9_3 spidermonkey-1.7.0<br />
WWW:	http://couchdb.org/</code><br />
<code><br />
Port:	py26-simplecouchdb-0.9.26<br />
Path:	/usr/ports/databases/py-simplecouchdb<br />
Info:	Simple Librairy to Allow Python Applicationto Use CouchDB<br />
Maint:	wenheping@gmail.com<br />
B-deps:	py26-httplib2-0.5.0 py26-py-restclient-1.3.2 py26-setuptools-0.6c9 python26-2.6.2_3<br />
R-deps:	py26-httplib2-0.5.0 py26-py-restclient-1.3.2 py26-setuptools-0.6c9 python26-2.6.2_3<br />
WWW:	http://code.google.com/p/py-simplecouchdb/<br />
</code><br />
I did a &#8216;make install&#8217;, and I had a cool little couchdb up and running. What is also cool is FreeBSD likes to give you very helpful information when you install something. For example, this is what is printed out when you install the CouchDB port:<br />
<code><br />
===>  COMPATIBILITY NOTE:<br />
      CouchDB is still pre-stable; between 0.8 and 0.9 the database format<br />
      changed which breaks BC. In current trunk, the format changed again, so<br />
      please double-check in case you are updating an existing installation.</p>
<p>      More info:<br />
        * http://wiki.apache.org/couchdb/Breaking_changes?action=show&#038;redirect=BreakingChanges<br />
        * http://wiki.apache.org/couchdb/BreakingChangesUpdateTrunkTo0Dot9<br />
</code><br />
See, isn&#8217;t that helpful? Best of all, I didn&#8217;t have to enable additional repositories, or fetch the src manually, and its dependencies and then figure out how to run the right configure script flags&#8230; FreeBSD makes it easy, and since it automatically uses what you already have with what is required, its an incredibly stable build. Removing it is pretty simple as well, just:<br />
<code><br />
> pkg_deinstall -R couchdb<br />
--->  Deinstalling 'couchdb-0.9.0_1,1'<br />
--->  Deinstalling 'erlang-lite-r13b02,1'<br />
[Updating the pkgdb<br />
<format:bdb_btree> in /var/db/pkg ... - 118 packages found (-1 +0) (...) done]<br />
--->  Deinstalling 'curl-7.19.6_1'<br />
[Updating the pkgdb<br />
<format:bdb_btree> in /var/db/pkg ... - 117 packages found (-1 +0) (...) done]<br />
--->  Deinstalling 'ca_root_nss-3.11.9_2'<br />
--->  Deinstalling 'spidermonkey-1.7.0'<br />
--->  Deinstalling 'nspr-4.8'<br />
[Updating the pkgdb<br />
<format:bdb_btree> in /var/db/pkg ... - 116 packages found (-1 +0) (...) done]<br />
--->  Deinstalling 'gmake-3.81_3'<br />
[Updating the pkgdb<br />
<format:bdb_btree> in /var/db/pkg ... - 115 packages found (-1 +0) (...) done]<br />
--->  Deinstalling 'perl-threaded-5.8.9_3'<br />
[Updating the pkgdb<br />
<format:bdb_btree> in /var/db/pkg ... - 114 packages found (-1 +0) (...) done]<br />
--->  Deinstalling 'gettext-0.17_1'<br />
--->  Deinstalling 'libiconv-1.13.1'<br />
--->  Deinstalling 'icu-3.8.1_2'<br />
--->  Deinstalling 'libtool-2.2.6a'<br />
** Listing the failed packages (-:ignored / *:skipped / !:failed)<br />
	! curl-7.19.6_1	(pkg_delete failed)<br />
	! ca_root_nss-3.11.9_2	(pkg_delete failed)<br />
	! perl-threaded-5.8.9_3	(pkg_delete failed)<br />
	! gettext-0.17_1	(pkg_delete failed)<br />
	! libiconv-1.13.1	(pkg_delete failed)<br />
</code><br />
This does a upwards recursive dependency removal. Also, if one dependency is relied on by another, it wont get removed. Like, if Perl58 was a dependency of a package, it wouldn&#8217;t be removed if perl58 is used by many other packages. This is smart. So, above, the packages that failed to deinstall where ones that are required dependencies of other installed packages.</p>
<p>Speaking of package management; have you ever installed something that ended up having a few dozen dependencies, then you want to uninstall that package with a &#8220;rpm -e cba8&#8243;, or something equivalent, but what about all the other cruft that came along with it? You would have to keep track of each dependency, and specify all of them and hope you don&#8217;t break another program. FreeBSD has a few tools to do this, one in particular, <strong>portmaster</strong> can remove all ports that were once a dependency but no longer used:<br />
<code><br />
> portmaster -s<br />
Information for neon28-0.28.4:<br />
Comment:<br />
An HTTP and WebDAV client library for Unix systems<br />
===>>> neon28-0.28.4 is no longer depended on, delete? [n] y<br />
===>>> Delete old and new distfiles for www/neon28<br />
       without prompting? [n] y<br />
===>>> Running pkg_delete -f neon28-0.28.4<br />
Information for rubygem-actionwebservice-1.2.6:<br />
...<br />
</code><br />
I ended up removing 4 packages that were no longer used.</p>
<p>CentOS and RHEL are the larger Puppet consumers, I&#8217;m still a big proponent for FreeBSD, and at work, it has allowed me to quickly build an Apache + Puppet + RubyPassenger/mod_rack stack with the minimal dependencies installed. So, the puppet server is still pretty lean, which means updates are smaller and faster. It still surprises me that its relatively unknown, even though Netcraft always has it listed in the top domains with the best uptime and consistently growing over the years. Why do I feel like an AmigaOS fan sometimes?</p>
<p>Hmm, it is sort of weird that this turned into a FreeBSD ports management entry :)</p>
<p>Okay, final word: PuppetCamp09 was Freaking awesome. There were a lot of smart developers and sysadmins there. We even got a very cool git howto, which I found useful. It was very diverse, which is strange for a conference based on one project in particular.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mywushublog.com/2009/10/puppetcamp09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rose Peak Hike &#8211; Or How I Was Destroyed</title>
		<link>http://www.mywushublog.com/2009/10/rose-peak-hike-or-how-i-was-destroyed/</link>
		<comments>http://www.mywushublog.com/2009/10/rose-peak-hike-or-how-i-was-destroyed/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 18:36:51 +0000</pubDate>
		<dc:creator>Mike Carlson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[conditioning]]></category>
		<category><![CDATA[hiking]]></category>
		<category><![CDATA[Jenny]]></category>
		<category><![CDATA[kickassery]]></category>

		<guid isPermaLink="false">http://www.mywushublog.com/?p=503</guid>
		<description><![CDATA[The trail from Del Valle park to Rose Peak, the one we took, is about 21 miles round trip. 10 mikes up, 10 back, easy peasy right? I went with Jenny (and Velimir) and the hiking group she goes with, the Society of Outdoor Cardinals, lead by &#8220;V&#8221;. I went ...]]></description>
			<content:encoded><![CDATA[<p>The trail from Del Valle park to Rose Peak, the one we took, is about 21 miles round trip. 10 mikes up, 10 back, easy peasy right?</p>
<p>I went with Jenny (and Velimir) and the hiking group she goes with, the Society of Outdoor Cardinals, lead by &#8220;V&#8221;. I went with Jenny and &#8220;V&#8221; in January on a 14 mile hike up Mount Diablo. That trip was a good deal of fun, and I didn&#8217;t die so I naturally assumed that a 21 mile hike would be difficult, but not impossible&#8230;</p>
<p>The weather could have been better, it was supposed to be around 102, so I brought plenty of water (6L) and the first half of the trip was good. I was powering up the steep incline without a problem, and it wasn&#8217;t until right before lunch that I started to feel the convulsion of my leg muscles. I&#8217;ve had cramps here and there, usually after a strenuous class at Wushu West, but I can deal with it. However, while we sat down for lunch, I noticed (and even joked about it) my calf muscles were twitching. It was like they were dancing to some unknown rhythm. &#8220;V&#8221; said it was because I was low on salt ( and then he told me that every muscle contraction required both Potassium and Salt), and the simple evidence of my salt encrusted backpack was proof enough that I needed to do something. So, I had what I felt to be a salty lunch, and then got back on the trail for the last 3 miles to Rose Peak.</p>
<p>That last stretch of the trail was very intense for me, and soon lead up to a series of the most painful moments in my life.</p>
<p>Jenny, Velimir and I were sticking together, and maybe a mile in I wasn&#8217;t feeling so hot. I had to rest on a log because my right foot was twisted outwards to the far right, because my shin muscle was completely contracted from a cramp. This was uncomfortable, but still tolerable. I really hated holding them up, so I did my best to flex it out and get back on my feet. I always feel like I can tolerate my own pain pretty well, and I&#8217;d rather do that than feel like I&#8217;m being a nuisance to everyone else by resting so much. Resting is for sissies!</p>
<p>I don&#8217;t know how much further I had lasted, maybe another mile or so. My shins, calves, quads, and ham strings decided they would all get in on the cramping game, and they seized up all at once. I think I pointed out to Jenny that my quads were hard as a rock. I said this between my teeth though, as the pain was like nothing I have every felt before, and as much as I try to keep my cool, I did make some awful hissing and breathing sounds. I felt that standing was easier, for all but a second, and then I sort of plopped down, hopped up again because that didn&#8217;t feel any better, then sat down again. The thing was, when I had my legs straight, my quads would cramp up. If I bent my knees at all, my calves would join in, if I tried really anything, both legs would take turns locking up.</p>
<p>While I rested yet again, Jenny and Velimir offered my food, water, and it was unfortunate that I could hardly think or talk clearly due to the pain. What was cool, is two horses and three cows came around the corner and came right up to us. I&#8217;ve grown up around horses, so while they are not new to me, its very unnerving to have them roaming free without an owner.I also  though, if anything happened, like they got spooked, I was in no shape to get out of the way. I tried to envision what it would be like to get trampled to death in my current state, and I actually thought that would be better :)</p>
<p>After some more time had passed, and I ate some salty jerky, I decided it was time to make rose peak my bitch and get back on my feet. I had come this far, and I did NOT want to give up for anything. So, Jenny and I hiked a bit further, and we came across Magda. She said we were almost there, about 15 more minutes&#8230; shortly after that, I had another cramp attack, and this was way more intense than the previous ones. After this, I started to get the suspicion that this was it, my hike was done for. Jenny ran off to the peak to see if anyone else was there (check that out, I&#8217;m freaking dying, and shes JOGGING up the trail and back :) ). When she got back, she helped me get comfortable, filled me up with more salty food, a banana, and handed me water. Jenny has terrific bedside manners, and I felt terrible for putting her through the trauma of my pain.</p>
<p>Once I was laid out on the trail, and Jenny was off to get someone else, I let out a nice howl, and dare I say a F-Bomb. I also managed to shove some water bottles under my knees. This help my legs stay in a neutral state, where my quads or calves were not working at all (even in this position, they were still 100% camped up). &#8220;V&#8221; came around, and then at that point I know it would have been REALLY stupid to tell &#8220;V&#8221; and Jenny that I still wanted to reach the peak. I knew that would have been pretty insulting, especially since my injury forced him to say behind with us. He was very nice, and both him and Jenny waited with my while my legs at least stopped locking up. Seriously, I felt completely betrayed by my own body, it was incredible what was going on. This is what I get for pushing my legs around all these years, making them run, kick and jump all the time :)</p>
<p>The only problem with that hike is I was only 1/2 way done. I had another 9 or so miles to go, and it was all up and down terrain. &#8220;V&#8221; had told me that once my cramping had subsided, and I got the right nutrients in me, I would be sore, but I would eventually get the blood flowing again and be okay.</p>
<p>Unfortunately, that was not the case at all. I&#8217;ve got some freaky body chemistry or sumthin&#8217; cause there was no recovering from this. I was only slightly uncomfortable if we were on flat even ground, anything outside of that was either exerting force on my quads and shins (which would cramp up), or my calves and hamstrings (which would cramp up). So for the next few miles it was a slow process of hiking for a bit, then stopping to either nurse a new series of cramps away or try and prevent another wave.</p>
<p>It was also getting late, and thankfully both &#8220;V&#8221; and Jenny brought head lamps, so our nice day hike turned into a nice night hike :) &#8220;V&#8221; lead the four of us with his lamp, Magda and Velimir trailed him while I used Jenny&#8217;s headlamp and Jenny trailed behind me. We did catch a cool view of the sun going down, and there was some relief to hiking back in a cooler climate. I was also now using &#8220;V&#8221;s hiking poles and training myself to use my arms and the poles as much as my legs to move along. I was getting a pretty good workout, now I had to use my entire body to move myself forward as well as fighting my own muscles from cramping.</p>
<p>Let me relate this to the Wushu folks; You know when your doing a form and you are tense? I&#8217;ve heard it a lot, Mark or Patti will say &#8220;relax! your shoulders are too tight, loosen up.&#8221;, because it saps all your energy to try and move around with those muscles activated. That is was this was like, every step required twice the amount of effort.</p>
<p>The rest of the trip was pretty monotonous, I still had to take a break from time to time. There was one part where I had to take a large step UP, and it really sucked because by this time I had a very good idea as to what actions would incur the wrath of my legs. Basically, anytime I had to flex my muscles in a quick and major way, I would completely cramp up. So, I looked at the large step up, took a deep breath and did it, hobbled out of harms way (like, away from the ledge so I wouldn&#8217;t fall back) and stop immediately to rest and wait for it to pass.</p>
<p>Around 9:15pm, a pair of park rangers found us and asked if we were the droids they were looking for :) Velimir, who has a strange sense of humor said &#8220;Hey, we should hide from them !!&#8221; and then laughed. By this time, I was completely out of it, my body was shot, my brain was fried, and I was still dehydrated. Seeing these rangers was the best thing that could have happened. Sure, I felt a little robbed that I didn&#8217;t get to make it to the peak, OR finish off the last 2 miles of the hike, but really, it was for the best. We had also exceeded the park hours, so there wasn&#8217;t a choice, we were escorted out :)</p>
<p>We said out goodbyes, Jenny Drove those two back to Stanford, and I made my way home. I stopped by the gas station to pick up a few necessities:</p>
<ul>
<li>Gatorade, to continue and replenish my ph balance</li>
<li>more water, as I had ran out</li>
<li>New Castle&#8230; hey, &#8220;V&#8221; said it would help :)</li>
</ul>
<p>The commute home was an adventure in itself, because Vasco Road is reduced to one lane in the evenings now. Cal Trans has decided the two year old asphalt needs replacing, and since that entire organization hates me, they feel the need to close down almost all of Vasco to one lane while they perform the same work they did two years ago. Normally this just results in a lot of my time waisted, sitting there in traffic. Tonight though, that was extra special. Driving in stop and go traffic with both legs cramping up is an interesting situation to be in. I spent most of my commute in tears.</p>
<p>When I finally go home, I had two more steps to face, those leading to my front door. That kicked off one of the last cramping sessions of the day, and it was quit the grand finally. I recounted the entire day to Michele as I winced in pain, and maybe 30 minutes later I got up and took a hot shower. That felt GREAT, I was already on the road to a good recovery after that. The only thing left was to have a salty dinner, a beer, and ice my legs down.  I ended going to bed around 1:30am, and as exhausted as I was, I hardly slept a wink. The pain was still bad enough to keep me awake all night, but at least I didn&#8217;t cramp up any more. The next day was pretty rough as well, I felt woozy and sick all day, be resting has become easier since then.</p>
<p>So, that was my hike. It is now Tuesday, and my legs are still very very sore. I still did weights Monday though :) Ha, I&#8217;m back bitches!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mywushublog.com/2009/10/rose-peak-hike-or-how-i-was-destroyed/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dirty Rotten Scoundrels</title>
		<link>http://www.mywushublog.com/2009/04/dirty-rotten-scoundrels/</link>
		<comments>http://www.mywushublog.com/2009/04/dirty-rotten-scoundrels/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 20:12:58 +0000</pubDate>
		<dc:creator>Mike Carlson</dc:creator>
				<category><![CDATA[Movies]]></category>
		<category><![CDATA[Jenny]]></category>

		<guid isPermaLink="false">http://www.mywushublog.com/?p=358</guid>
		<description><![CDATA[I had never seen this movie, I mean, I think I saw the ending of it a long time ago when it first came out on VHS, but I didn&#8217;t know what it was about. Over the past few years, Jenny has asked me maybe a half dozen times if ...]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_359" class="wp-caption aligncenter" style="width: 209px"><a href="http://www.mywushublog.com/wp-content/uploads/2009/04/dirty_rotten_scoundrels.jpg"><img src="http://www.mywushublog.com/wp-content/uploads/2009/04/dirty_rotten_scoundrels-199x300.jpg" alt="Freddy, what I am saying is: know your limitations. You are a moron. " title="dirty_rotten_scoundrels" width="199" height="300" class="size-medium wp-image-359" /></a><p class="wp-caption-text">Freddy, what I am saying is: know your limitations. You are a moron. </p></div><br />
I had never seen this movie, I mean, I think I saw the ending of it a long time ago when it first came out on VHS, but I didn&#8217;t know what it was about. Over the past few years, Jenny has asked me maybe a half dozen times if I had ever seen it, and after the last few times she finally brought it in for me to watch :)</p>
<p>This movie was complete shit&#8230; Ha, just kidding Jenny :)</p>
<p>No, really, it was hilarious. There is a lot of quick come backs and one liners that you really have to pay attention to catch. At the risk of sounding (even more) like an old man, they don&#8217;t make comedies like they used to. Really, you don&#8217;t see this kind of a movie now, this is the kind of comedy I like, way more than what Judd Apatow and the like pump out. It&#8217;s classy, yet its about coning people which isn&#8217;t classy at all.</p>
<p>Now, back to chasing kids off my lawn&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mywushublog.com/2009/04/dirty-rotten-scoundrels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mount Diablo Hike</title>
		<link>http://www.mywushublog.com/2009/03/mount-diablo-hike/</link>
		<comments>http://www.mywushublog.com/2009/03/mount-diablo-hike/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 22:30:41 +0000</pubDate>
		<dc:creator>Mike Carlson</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[hiking]]></category>
		<category><![CDATA[Jenny]]></category>

		<guid isPermaLink="false">http://www.mywushublog.com/?p=178</guid>
		<description><![CDATA[I didn&#8217;t want to forget to blog about this, it is a little late. Over a month ago (Jan 31st), Jenny invited me to hike Mount Diablo with the Stanford Outing Group, lead by &#8220;V&#8221;. I&#8217;ve posted her photos to the gallery here, and you should read her post on ...]]></description>
			<content:encoded><![CDATA[<p>I didn&#8217;t want to forget to blog about this, it is a little late.</p>
<p>Over a month ago (Jan 31st), Jenny invited me to hike Mount Diablo with the Stanford Outing Group, lead by &#8220;V&#8221;. I&#8217;ve posted her photos to the gallery <a href="http://www.mywushublog.com/photos/">here</a>, and you should read her post on our trip. Its more entertaining than mine :)</p>
<p><a href="http://jettagirl.wordpress.com/2009/02/01/mount-diablo-hike-to-the-summit/">http://jettagirl.wordpress.com/2009/02/01/mount-diablo-hike-to-the-summit/</a></p>
<p>This was a 14 mile hike, took about 6-7 hours (I think) and made my legs feel like jelly. That&#8217;s definitely my kind of workout, now only if it was 20 miles instead&#8230;</p>
<p>The start of our hike, at Mitchell Canyon Road, is about 15 minutes away from my house. Thats right, I have a freaking mountain to hike in my backyard and I&#8217;ve never actually done it. For that matter, its been about 10 &#8211; 12 years since I was last at Mt. Diablo. I really do need a group of people to get me out of the house on a weekend. The entire group ( Jenny is excluded from this statement, because she&#8217;s always cool) was cool, and the leader, V, was hilarious. I loved how he would mention ways we could die, or how to check for ticks (or you&#8217;ll die!), or if you trip&#8230; you get the idea. He comes off as overly- cautious, but he was great to hike with and talk too.</p>
<p>This was my first hike, and I was glad I could ask Jenny before hand what I should bring or wear. I brought a couple of bottles of water, and I ended up re-filling one on the way back down. The three of you that check out this blog already know how much I sweat, so the minimum water recommendation for a normal human being should be doubled for me :)</p>
<p>The trip up was strenuous, I would zone out and put one foot in front of the othe during the real up-hill parts. We took a few breaks to get some water, have a snack, but the real enjoyment was when we reached the peak. After all the &#8220;hard&#8221; work was done, I felt I could look around more, check out the scenery, and even talk a little. On the way down, &#8220;V&#8221; and Jenny told me about the different rock types (&#8220;scree&#8221; is difficult to walk on), saw a little waterfall and a cave on the side of a cliff, and then we found our own little cave on the side of the path. It was cool.</p>
<p>Overall it was a awesome trip and I look forward to doing one again. I don&#8217;t think I&#8217;ll get lucky with it being 15 minutes away from my house any time soon though. Eventually I&#8217;ll have to start learning to get up before 8am :)</p>
<p>So thanks Jenny and &#8220;V&#8221; for a memorable trip.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mywushublog.com/2009/03/mount-diablo-hike/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  www.mywushublog.com/tag/jenny/feed/ ) in 0.46098 seconds, on Feb 5th, 2012 at 10:53 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 5th, 2012 at 11:53 am UTC -->
