<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[because we all share ...]]></title>
  <link href="http://www.likens.us/atom.xml" rel="self"/>
  <link href="http://www.likens.us/"/>
  <updated>2012-02-18T20:57:35-08:00</updated>
  <id>http://www.likens.us/</id>
  <author>
    <name><![CDATA[Scott M. Likens]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[a process of making a custom HVM virtualized AMI for EC2]]></title>
    <link href="http://www.likens.us/blog/2012/01/07/amazon-hvm-custom-ami-on-ec2/"/>
    <updated>2012-01-07T14:46:00-08:00</updated>
    <id>http://www.likens.us/blog/2012/01/07/amazon-hvm-custom-ami-on-ec2</id>
    <content type="html"><![CDATA[<p><em>Forewarning: This post is about a process; it is not meant to give you a complete working basis to create a hvm virtualization AMI.  It is here to give you the information and or tools to build your own.</em></p>

<h4>Required Reading Material.</h4>

<ul>
<li><a href="http://wiki.xen.org/xenwiki/hvmloader">hvmloader</a></li>
<li><p><a href="http://wiki.xen.org/xenwiki/XenLinuxPVonHVMdrivers">pv-on-hvm</a></p></li>
<li><p>Note: Usage of a vanilla kernel later then 2.6.37+ will have the pv-on-hvm drivers.  Pick a kernel later then that at your descretion.</p></li>
</ul>


<h4>Requirements.</h4>

<ul>
<li><a href="http://aws.amazon.com">Amazon AWS Account</a></li>
<li><a href="http://aws.amazon.com/developertools/351">Amazon API Tools Installed</a></li>
<li><a href="http://docs.amazonwebservices.com/AmazonDevPay/latest/DevPayDeveloperGuide/X509Certificates.html">Amazon SOAP Keys Created</a></li>
<li>Time; patience and a willingness to fail.</li>
</ul>


<h3>Step 1</h3>

<figure class='code'><figcaption><span>booting an instance.</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>ec2-run-instances ami-0da96764 -k ssh_key -t cc1.4xlarge -H
</span><span class='line'>Type  ReservationID   Owner   Groups  Platform
</span><span class='line'>RESERVATION   r-f5743394  000000000000    default
</span><span class='line'>INSTANCE  i-de453ebc  ami-0da96764            pending ssh_key 0       cc1.4xlarge 2012-01-07T23:01:54+0000    us-east-1c              monitoring-disabled                 ebs                 hvm xen     sg-7baf4812 default
</span></code></pre></td></tr></table></div></figure>


<ul>
<li><p>Take note of the <em>instance-id</em> and the <em>zone</em> the instance is booted in.</p></li>
<li><p>additionally Amazon limits us to an 8G root volume; so create an 8gig volume in the zone specifieid.</p></li>
</ul>


<figure class='code'><figcaption><span>create your EBS Root volume</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>ec2-create-volume -z us-east-1c -s 8
</span><span class='line'>VOLUME    vol-03aff26e    8       us-east-1c  creating    2012-01-07T23:03:25+0000
</span></code></pre></td></tr></table></div></figure>




<figure class='code'><figcaption><span>attach the volume to the instance as /dev/sdp</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>ec2-attach-volume vol-03aff26e -d /dev/sdp -i i-de453ebc
</span><span class='line'>ATTACHMENT    vol-03aff26e    i-de453ebc  /dev/sdp    attaching   2012-01-07T23:05:26+0000
</span></code></pre></td></tr></table></div></figure>


<ul>
<li>SSH to the instance in question as ec2-user@$hostname</li>
</ul>


<figure class='code'><figcaption><span>obtain root priviledges and install screen</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>sudo -s
</span><span class='line'>yum install screen
</span><span class='line'>screen -S ami
</span></code></pre></td></tr></table></div></figure>




<figure class='code'><figcaption><span>install the amazon api and ami tools</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>mkdir -p /mnt/work <span class="o">&amp;&amp;</span> <span class="nb">cd</span> /mnt/work
</span><span class='line'>wget http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip
</span><span class='line'>unzip ec2-ami-tools.zip
</span><span class='line'>wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip
</span><span class='line'>unzip ec2-api-tools.zip*
</span></code></pre></td></tr></table></div></figure>


<ul>
<li><p>Place your X.509 keys in /mnt/work/.ec2</p></li>
<li><p>Note: the version numbers do change; please update to reflect this.</p></li>
</ul>


<figure class='code'><figcaption><span>configure your environment</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'><span class="nb">export </span><span class="nv">EC2_BASE</span><span class="o">=</span><span class="s2">&quot;/mnt/work&quot;</span>
</span><span class='line'><span class="nb">export </span><span class="nv">EC2_AMIHOME</span><span class="o">=</span><span class="s2">&quot;${EC2_BASE}/ec2-ami-tools-1.4.0.5&quot;</span>
</span><span class='line'><span class="nb">export </span><span class="nv">EC2_HOME</span><span class="o">=</span><span class="s2">&quot;${EC2_BASE}/ec2-api-tools-1.5.2.3&quot;</span>
</span><span class='line'><span class="nb">export </span><span class="nv">PATH</span><span class="o">=</span><span class="k">${</span><span class="nv">EC2_AMIHOME</span><span class="k">}</span>/bin:<span class="k">${</span><span class="nv">EC2_HOME</span><span class="k">}</span>/bin:<span class="k">${</span><span class="nv">PATH</span><span class="k">}</span>
</span><span class='line'><span class="nb">export </span><span class="nv">EC2_CERT</span><span class="o">=</span><span class="s2">&quot;/mnt/work/.ec2/cert-example.pem&quot;</span>
</span><span class='line'><span class="nb">export </span><span class="nv">EC2_PRIVATE_KEY</span><span class="o">=</span><span class="s2">&quot;/mnt/work/.ec2/pk-example.pem&quot;</span>
</span><span class='line'><span class="nb">export </span><span class="nv">EC2_SECRET_KEY</span><span class="o">=</span><span class="s2">&quot;secret_key&quot;</span>
</span><span class='line'><span class="nb">export </span><span class="nv">EC2_ACCESS_KEY</span><span class="o">=</span><span class="s2">&quot;access_key&quot;</span>
</span><span class='line'><span class="nb">export </span><span class="nv">SOURCE_AMI_NAME</span><span class="o">=</span><span class="s2">&quot;example_ami_name&quot;</span>
</span><span class='line'><span class="nb">export </span><span class="nv">SOURCE_AMI_MANIFEST</span><span class="o">=</span><span class="s2">&quot;${SOURCE_AMI_NAME}.manifest.xml&quot;</span>
</span><span class='line'><span class="nb">export </span><span class="nv">EC2_AMIS</span><span class="o">=</span><span class="s2">&quot;${EC2_BASE}/amis&quot;</span>
</span><span class='line'><span class="nb">export </span><span class="nv">EBS_DEV</span><span class="o">=</span><span class="s2">&quot;/dev/xvdp1&quot;</span>
</span></code></pre></td></tr></table></div></figure>




<figure class='code'><figcaption><span>download your s3 ami locally</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>ln -sf <span class="nv">$EC2_AMIHOME</span>/lib/ec2 <span class="nv">$EC2_HOME</span>/lib/ec2
</span><span class='line'><span class="nv">temp_dir</span><span class="o">=</span><span class="k">$(</span>mktemp -d<span class="k">)</span>
</span><span class='line'>mkdir -p <span class="k">${</span><span class="nv">EC2_AMIS</span><span class="k">}</span>
</span><span class='line'><span class="nb">cd</span> <span class="k">${</span><span class="nv">EC2_AMIS</span><span class="k">}</span>
</span><span class='line'>ec2-download-bundle -b example_bucket -a <span class="k">${</span><span class="nv">EC2_ACCESS_KEY</span><span class="k">}</span> -s <span class="k">${</span><span class="nv">EC2_SECRET_KEY</span><span class="k">}</span> -k <span class="k">${</span><span class="nv">EC2_CERT</span><span class="k">}</span> -m <span class="k">${</span><span class="nv">SOURCE_AMI_MANIFEST</span><span class="k">}</span>
</span></code></pre></td></tr></table></div></figure>




<figure class='code'><figcaption><span>unbundle your s3 ami and mount it</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>ec2-unbundle -k <span class="k">${</span><span class="nv">EC2_PRIVATE_KEY</span><span class="k">}</span> -m <span class="k">${</span><span class="nv">SOURCE_AMI_MANIFEST</span><span class="k">}</span> -d <span class="k">${</span><span class="nv">temp_dir</span><span class="k">}</span>
</span><span class='line'><span class="nb">cd</span> <span class="k">${</span><span class="nv">EC2_BASE</span><span class="k">}</span>
</span><span class='line'><span class="nb">export </span><span class="nv">EC2_AMI_IMAGE</span><span class="o">=</span><span class="s2">&quot;${temp_dir}/${SOURCE_AMI_NAME}&quot;</span>
</span><span class='line'><span class="nb">export </span><span class="nv">EC2_SOURCE_MOUNT</span><span class="o">=</span><span class="k">$(</span>mktemp -d<span class="k">)</span>
</span><span class='line'><span class="nb">export </span><span class="nv">EC2_DEST_MOUNT</span><span class="o">=</span><span class="k">$(</span>mktemp -d<span class="k">)</span>
</span><span class='line'>mount -o loop <span class="k">${</span><span class="nv">EC2_AMI_IMAGE</span><span class="k">}</span> <span class="k">${</span><span class="nv">EC2_SOURCE_MOUNT</span><span class="k">}</span>
</span></code></pre></td></tr></table></div></figure>


<ul>
<li><em>Please send suggestions on how to improve this to /dev/null</em>.</li>
</ul>


<figure class='code'><figcaption><span>partition out your ebs volume</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>fdisk /dev/xvdp
</span><span class='line'>n
</span><span class='line'>p
</span><span class='line'>1
</span><span class='line'>&lt;enter&gt;
</span><span class='line'>&lt;enter&gt;
</span><span class='line'>a
</span><span class='line'>1
</span><span class='line'>w
</span><span class='line'>q
</span></code></pre></td></tr></table></div></figure>




<figure class='code'><figcaption><span>format the EBS volume and mount it.  No filesystem checks desired. </span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>blockdev --rereadpt /dev/xvdp
</span><span class='line'>mkfs -t ext4 -L rootfs <span class="k">${</span><span class="nv">EBS_DEV</span><span class="k">}</span>
</span><span class='line'>tune2fs -i 0 -c 0 <span class="k">${</span><span class="nv">EBS_DEV</span><span class="k">}</span>
</span><span class='line'>mount <span class="k">${</span><span class="nv">EBS_DEV</span><span class="k">}</span> <span class="k">${</span><span class="nv">EC2_DEST_MOUNT</span><span class="k">}</span>
</span></code></pre></td></tr></table></div></figure>




<figure class='code'><figcaption><span>copy your local S3 AMI to the EBS volume</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>rsync -aHAS <span class="k">${</span><span class="nv">EC2_SOURCE_MOUNT</span><span class="k">}</span>/ <span class="k">${</span><span class="nv">EC2_DEST_MOUNT</span><span class="k">}</span>/
</span></code></pre></td></tr></table></div></figure>




<figure class='code'><figcaption><span>chroot into your EBS root and download the linux kernel</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>cp /boot/config* <span class="k">${</span><span class="nv">EC2_DEST_MOUNT</span><span class="k">}</span>
</span><span class='line'>mount -o <span class="nb">bind</span> /dev <span class="k">${</span><span class="nv">EC2_DEST_MOUNT</span><span class="k">}</span>/dev
</span><span class='line'>chroot <span class="k">${</span><span class="nv">EC2_DEST_MOUNT</span><span class="k">}</span>
</span><span class='line'><span class="nb">cd</span> /usr/src <span class="o">&amp;&amp;</span> curl http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.4.tar.bz2 | tar jxf -
</span><span class='line'>ln -s /usr/src/linux-2.6.39.4 linux
</span></code></pre></td></tr></table></div></figure>




<figure class='code'><figcaption><span>configure your kernel</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'><span class="nb">cd</span> /usr/src/linux
</span><span class='line'>cp /config* .config
</span><span class='line'>make bzImage -j16
</span><span class='line'>make modules -j16
</span><span class='line'>make modules_install
</span><span class='line'>cp arch/x86/boot/bzImage /boot/vmlinuz-hvm
</span></code></pre></td></tr></table></div></figure>


<ul>
<li><p>Configure /boot/grub/menu.lst similar to how you see provided by amazon; but replace the kernel and initrd with your own.</p></li>
<li><p>Use your favorite package manager to install grub.  The following should work provided no ephemeral disks are attached.</p></li>
</ul>


<figure class='code'><figcaption><span>install grub on the disk</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>grub
</span><span class='line'>root <span class="o">(</span>hd1,0<span class="o">)</span>
</span><span class='line'>setup <span class="o">(</span>hd1<span class="o">)</span>
</span><span class='line'>quit
</span></code></pre></td></tr></table></div></figure>


<ul>
<li>Exit out of your chroot and unmount everything</li>
</ul>


<figure class='code'><figcaption><span>unmount your ebs root</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>umount <span class="k">${</span><span class="nv">EC2_DEST_MOUNT</span><span class="k">}</span>/dev
</span><span class='line'>umount <span class="k">${</span><span class="nv">EC2_DEST_MOUNT</span><span class="k">}</span>
</span></code></pre></td></tr></table></div></figure>


<ul>
<li>Now locally create a snapshot of your EBS root in case something goes wrong and you want to re-attach it; fix it; re-register.</li>
</ul>


<figure class='code'><figcaption><span>snapshot your ebs-root</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>ec2-create-snapshot vol-03aff26e
</span><span class='line'>SNAPSHOT  snap-9239e6f6   vol-03aff26e    pending 2012-01-07T23:37:08+0000        621517282122    8
</span></code></pre></td></tr></table></div></figure>




<figure class='code'><figcaption><span>stop your instance while it&#8217;s snapshotting</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>ec2-stop-instances i-de453ebc
</span><span class='line'>INSTANCE  i-de453ebc  running stopping
</span></code></pre></td></tr></table></div></figure>


<ul>
<li>Verify the instance is stopped</li>
</ul>


<figure class='code'><figcaption><span>list your instance stopping</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>ec2-describe-instances i-de453ebc -H
</span><span class='line'>Type  ReservationID   Owner   Groups  Platform
</span><span class='line'>RESERVATION   r-f5743394  621517282122    default
</span><span class='line'>INSTANCE  i-de453ebc  ami-0da96764            stopped ssh_key 0       cc1.4xlarge 2012-01-07T23:01:54+0000    us-east-1c              monitoring-disabled                 ebs                 hvm xen     sg-7baf4812 default
</span><span class='line'>BLOCKDEVICE   /dev/sda1   vol-a9acf1c4    2012-01-07T23:39:34.000Z    
</span><span class='line'>BLOCKDEVICE   /dev/sdp    vol-03aff26e    2012-01-07T23:39:34.000Z    
</span></code></pre></td></tr></table></div></figure>




<figure class='code'><figcaption><span>detach the old root volume provided by amazon and your ebs root volume you made</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>ec2-detach-volume vol-a9acf1c4
</span><span class='line'>ATTACHMENT    vol-a9acf1c4    i-de453ebc  /dev/sda1   detaching   2012-01-07T23:39:34+0000
</span><span class='line'>ec2-detach-volume vol-03aff26e
</span><span class='line'>ATTACHMENT    vol-03aff26e    i-de453ebc  /dev/sdp    detaching   2012-01-07T23:39:34+0000
</span></code></pre></td></tr></table></div></figure>




<figure class='code'><figcaption><span>attach volume</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>ec2-attach-volume vol-03aff26e -i i-de453ebc -d /dev/sda1
</span><span class='line'>ATTACHMENT    vol-03aff26e    i-de453ebc  /dev/sda1   attaching   2012-01-07T23:42:38+0000
</span></code></pre></td></tr></table></div></figure>




<figure class='code'><figcaption><span>create your AMI</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>ec2-create-image i-de453ebc -n <span class="s2">&quot;fail&quot;</span>
</span><span class='line'>IMAGE ami-ed9d4a84
</span></code></pre></td></tr></table></div></figure>


<ul>
<li>Once it&#8217;s done preparing the AMI; boot it and hope for success.  If you have a problem review the Console log and research.  I suggest reviewing Amazon&#8217;s Kernel configuration and Ubuntu&#8217;s Kernel configuration for the HVM instance types if you have any problems; most of all good luck!</li>
</ul>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Learn to Respect the Problem]]></title>
    <link href="http://www.likens.us/blog/2011/07/24/learn-to-respect-the-problem/"/>
    <updated>2011-07-24T12:06:00-07:00</updated>
    <id>http://www.likens.us/blog/2011/07/24/learn-to-respect-the-problem</id>
    <content type="html"><![CDATA[<p>There is a time in your life when you start learning to respect the problem.  Of course you can fix a problem easily by doing x.  But if you spend a little more time you can fix x,y and z and in a way that you feel proud of.</p>

<p>Yes I am likely twisting the definition for my own gains.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Getting Chef 0.8 Bootstrapped and Up in Screen]]></title>
    <link href="http://www.likens.us/blog/2009/12/14/getting-chef-08-bootstrapped-and-up-in-screen/"/>
    <updated>2009-12-14T11:00:00-08:00</updated>
    <id>http://www.likens.us/blog/2009/12/14/getting-chef-08-bootstrapped-and-up-in-screen</id>
    <content type="html"><![CDATA[<p>Simple post, just to detail if you want .8 and don&#8217;t want to use bootstrap or runit or init and you just want it working.</p>

<ul>
<li>Get the base system up</li>
</ul>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>sed -i 's/universe/multiverse universe/' /etc/apt/sources.list
</span><span class='line'>apt-get update
</span><span class='line'>env DEBIAN_FRONTEND=noninteractive apt-get upgrade -y
</span><span class='line'>echo 'sun-java6-jdk shared/accepted-sun-dlj-v1-1 boolean true' | sudo debconf-set-selections
</span><span class='line'>apt-get install -y ruby ruby1.8-dev libopenssl-ruby1.8 rdoc ri irb build-essential zlib1g-dev libxml2-dev wget ssl-cert git-core couchdb sun-java6-jdk sun-java6-jre</span></code></pre></td></tr></table></div></figure>


<ul>
<li>Setup gem to not annoy me</li>
</ul>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>echo "gem: --no-rdoc --no-ri" >> ~/.gemrc</span></code></pre></td></tr></table></div></figure>


<ul>
<li>Now install rubygems,</li>
</ul>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>cd /tmp
</span><span class='line'>wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
</span><span class='line'>tar zxf rubygems-1.3.5.tgz
</span><span class='line'>cd rubygems-1.3.5
</span><span class='line'>sudo ruby setup.rb --no-ri --no-rdoc
</span><span class='line'>sudo ln -sfv /usr/bin/gem1.8 /usr/bin/gem</span></code></pre></td></tr></table></div></figure>


<ul>
<li>Install RabbitMQ</li>
</ul>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>wget http://www.rabbitmq.com/releases/rabbitmq-server/v1.7.0/rabbitmq-server_1.7.0-1_all.deb
</span><span class='line'>dpkg -i rabbitmq-server_1.7.0-1_all.deb</span></code></pre></td></tr></table></div></figure>


<ul>
<li>Make sure you have rake/etc installed</li>
</ul>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>gem install rake cucumber rspec libxml-ruby jeweler thin unicorn merb-core merb-slices</span></code></pre></td></tr></table></div></figure>


<ul>
<li>now setup RabbitMQ so that chef can talk to it</li>
</ul>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>rabbitmqctl add_vhost /chef
</span><span class='line'>rabbitmqctl add_user chef testing
</span><span class='line'>rabbitmqctl set_permissions -p /chef chef ".*" ".*" ".*"</span></code></pre></td></tr></table></div></figure>


<ul>
<li>Grab Chef .8 from master and start work</li>
</ul>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>mkdir git;git clone git://github.com/opscode/chef.git</span></code></pre></td></tr></table></div></figure>


<ul>
<li>Install chef from master</li>
</ul>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>rake install</span></code></pre></td></tr></table></div></figure>


<ul>
<li><p>You may catch a few missing dependencies, gem install them if I missed it (but I think this is right)</p></li>
<li><p>Now you need to install the chef-solr bins (the gemspec isn&#8217;t fixed to do this yet)</p></li>
</ul>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>cd git/chef/chef-solr/bin;cp * /usr/bin</span></code></pre></td></tr></table></div></figure>


<ul>
<li>Grab mixlib-authentication from git</li>
</ul>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>git clone git://github.com/opscode/mixlib-authentication.git</span></code></pre></td></tr></table></div></figure>


<ul>
<li>Install mixlib-authentication</li>
</ul>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>cd mixlib-authentication && rake install</span></code></pre></td></tr></table></div></figure>


<ul>
<li>Grab mixlib-log from git</li>
</ul>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>git clone git://github.com/opscode/mixlib-log</span></code></pre></td></tr></table></div></figure>


<ul>
<li>Install that also</li>
</ul>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>cd mixlib-log && rake install</span></code></pre></td></tr></table></div></figure>


<ul>
<li><p>Now fire up screen and start it up</p></li>
<li><p>In not the perfect order, but.</p></li>
<li><p>Start chef-solr</p></li>
</ul>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>chef-solr</span></code></pre></td></tr></table></div></figure>


<ol>
<li>Start chef-solr-indexer</li>
</ol>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>chef-solr-indexer</span></code></pre></td></tr></table></div></figure>


<ol>
<li>Grab some configs that should work,</li>
</ol>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>mkdir -p /etc/chef
</span><span class='line'>cd /etc/chef;wget http://likens.us/server.rb  
</span><span class='line'>cd /etc/chef;wget http://likens.us/client.rb</span></code></pre></td></tr></table></div></figure>


<ol>
<li>Start chef-server</li>
</ol>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>chef-server</span></code></pre></td></tr></table></div></figure>


<ol>
<li>Now configure knife to work with the webui key and you should be solid.</li>
</ol>


<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>knife configure</span></code></pre></td></tr></table></div></figure>


<ol>
<li><p>Run chef-client over localhost and it should register and work hopefully</p></li>
<li><p>Enjoy</p></li>
<li><p>Thanks to Bryan Helmkamp for updates to this post.</p></li>
</ol>

]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Why you should never change API on a minor release]]></title>
    <link href="http://www.likens.us/blog/2009/11/02/why-you-should-never-change-api-on-a-minor-release/"/>
    <updated>2009-11-02T10:33:00-08:00</updated>
    <id>http://www.likens.us/blog/2009/11/02/why-you-should-never-change-api-on-a-minor-release</id>
    <content type="html"><![CDATA[<p><rant>
In this case, my pain is Chef; as 0.7.0 came out we were rocking with metadata.rb, as I wasn&#8217;t paying attention and reading release documentation properly suddenly that doesn&#8217;t do squat, and everything is in metadata.json.  I&#8217;m sure there was something in one of the release notes that I omitted, however it brings up a valid point that Opscode has broken many times (I am only mentioning these 2) in the .7 release cycle</p>

<p>They have repeatedly broken the basic idea of not making major changes in a minor release, such as this, or when they re-wrote the bootstrap system; and then neutered the old system so you had to use the old bootstrap tarball (which is the only reason I am not up in arms).</p>

<p>&#8230; However, if you want to do things like this, you should release a new major version and allow people to get used to the major changes.  There are always growing pains with anything new, different, &#8230; however the past has taught us that you should not make stupid major changes to a structure without a major release.
</rant></p>

<p>Opscode has made this much smoother since the original post of this message and they have delivered a much better product then this post originally ranted about.</p>
]]></content>
  </entry>
  
</feed>

