<?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>Rhonabwy</title>
	<atom:link href="http://www.rhonabwy.com/wp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rhonabwy.com/wp</link>
	<description>Mac, iOS, DevOps, Cloud Services, and daily life in Seattle</description>
	<lastBuildDate>Fri, 19 Apr 2013 22:11:23 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>OpenStack docs and tooling in 20 minutes</title>
		<link>http://www.rhonabwy.com/wp/2013/04/19/openstack-docs-and-tooling-in-20-minutes/</link>
		<comments>http://www.rhonabwy.com/wp/2013/04/19/openstack-docs-and-tooling-in-20-minutes/#comments</comments>
		<pubDate>Fri, 19 Apr 2013 22:08:32 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[openstack]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1206</guid>
		<description><![CDATA[I&#8217;ve gone through the routine several times now, so I decided to make it easy to replicate to help out some friends get started with all the tooling and setup needed to build, review, and contribute to OpenStack Documentation. I&#8217;m a huge fan of CloudEnvy, so I&#8217;ve created a public github repository with the envy [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve gone through the routine several times now, so I decided to make it easy to replicate to help out some friends get started with all the tooling and setup needed to build, review, and contribute to OpenStack Documentation.</p>
<p>I&#8217;m a huge fan of <a href="https://github.com/cloudenvy/cloudenvy">CloudEnvy</a>, so I&#8217;ve created a public github repository with the envy configuration and setup scripts to be able to set up a VM and completely build out all the existing documentation in roughly 20-25 minutes. </p>
<p>First, we install cloudenvy. It&#8217;s a python module, so it&#8217;s really easy to install with pip. My recommended installation process:</p>
<pre class="wp-code-highlight prettyprint">pip install -U cloudenvy</pre>
<p>If you&#8217;re working on a mac laptop (like I do), you may need to use</p>
<pre class="wp-code-highlight prettyprint">sudo pip install -U cloudenvy</pre>
<p>Once cloudenvy is installed, you need to set up the credentials to your handy-dandy local OpenStack cloud (y&#8217;all have one of those, don&#8217;t you?). For cloudenvy, you create a file in your home directory named <code><strong>.cloudenvy</strong></code> akin to this:</p>
<pre class="wp-code-highlight prettyprint">
cloudenvy:
  clouds:
    cloud01:
      os_username: username
      os_password: password
      os_tenant_name: tenant_name
      os_auth_url: http://keystone.example.com:5000/v2.0/
</pre>
<p>Obviously, put in the proper values for your cloud.</p>
<p>Now you just need to clone the doctools envyfile setup, switch to that directory, and kick off Envy!</p>
<pre class="wp-code-highlight prettyprint">
git clone https://github.com/heckj/envyfile-openstack-docs.git
cd envyfile-openstack-docs
envy up
</pre>
<p>20-25 minutes later, you&#8217;ll have a virtual machine running with all the tooling installed, run-through, and the output generated for all the documentation in the openstack manuals repository. The envyfile puts all this into your virtual machine at
<pre class="wp-code-highlight prettyprint">~/src/openstack-manuals</pre>
<p>To get there, you can use the command <code><strong>envy ssh</strong></code> to connect to the machine and do what you need.</p>
<p>For more on the how-to with contributing to OpenStack documentation, check out the wiki page <a href="https://wiki.openstack.org/wiki/Documentation/HowTo">https://wiki.openstack.org/wiki/Documentation/HowTo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2013/04/19/openstack-docs-and-tooling-in-20-minutes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Do photon&#8217;s have mass?</title>
		<link>http://www.rhonabwy.com/wp/2013/04/13/do-photons-have-mass/</link>
		<comments>http://www.rhonabwy.com/wp/2013/04/13/do-photons-have-mass/#comments</comments>
		<pubDate>Sat, 13 Apr 2013 21:04:38 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1201</guid>
		<description><![CDATA[My grandmother in Burlington, IA had this massive house overlooking the mississippi there. In the windows, she had these ornaments &#8211; little glass bulbs with pinwheel looking things in them that spun and spun and spun in the sunlight streaming through the huge windows overlooking the river. Years later in college, I learned that the [...]]]></description>
				<content:encoded><![CDATA[<p>My grandmother in Burlington, IA had this massive house overlooking the mississippi there. In the windows, she had these ornaments &#8211; little glass bulbs with pinwheel looking things in them that spun and spun and spun in the sunlight streaming through the huge windows overlooking the river.</p>
<p>Years later in college, I learned that the window trinket was a classic science experiment regarding photons having mass. I saw one on think-geek some time ago, and got one for my house:</p>
<p><iframe width="420" height="315" src="http://www.youtube.com/embed/oO4usOkfKdQ" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2013/04/13/do-photons-have-mass/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making keystoneclient python library a little easier to work with</title>
		<link>http://www.rhonabwy.com/wp/2012/11/11/making-keystoneclient-python-library-a-little-easier-to-work-with/</link>
		<comments>http://www.rhonabwy.com/wp/2012/11/11/making-keystoneclient-python-library-a-little-easier-to-work-with/#comments</comments>
		<pubDate>Sun, 11 Nov 2012 23:48:21 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[openstack]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1191</guid>
		<description><![CDATA[A few weeks prior to the Grizzly OpenStack Design Summit, I was digging around in various python-*client libraries for OpenStack. Glanceclient had just started to use python-keystoneclient to take care of it&#8217;s auth needs, but everyone else was doing it themselves &#8211; intertia from having it in the base project from the early days and [...]]]></description>
				<content:encoded><![CDATA[<p>A few weeks prior to the Grizzly OpenStack Design Summit, I was digging around in various python-*client libraries for OpenStack. Glanceclient had just started to use python-keystoneclient to take care of it&#8217;s auth needs, but everyone else was doing it themselves &#8211; intertia from having it in the base project from the early days and never refactoring things as clients replicated and split in the Essex release.</p>
<p>Looking at what glanceclient did, and had to do, I got really annoyed and wanted the client to have a much easier to use interface. At the same time, I was also digging around trying to allow the keystoneclient CLI to accept and use an override for the endpoint from the command line. Turns out the various mechanations to make the original client setup work with a system with two distinct URL endpoints was quite a mess under the covers, and that mess just propagated through to anyone trying to use the library.</p>
<p>We just landed some new code updates with keystoneclient to make it much easier to use. So this little article is intended to be a quick guide to using the python keystoneclient library and some of it&#8217;s new features. While we&#8217;re getting v3 API support installed, we&#8217;re still very actively using v2 apis, so we&#8217;ll use v2 API examples throughout.</p>
<p>The first is just getting a client object established.</p>
<p><code><br />
>>> from keystoneclient.v2_0 import client<br />
>>> help(client)<br />
</code></p>
<p>We&#8217;ve expanded the documentation extensively to make it easier to use the library. The base client is still working from <a href="http://code.google.com/p/httplib2/">httplib2</a> &#8211; I didn&#8217;t rage-change it into the <a href="http://docs.python-requests.org/en/latest/">requests</a> library (although it was damned close).</p>
<p>There&#8217;s a couple of common things that you&#8217;ll want to do with initializing the client. The first is to authorize the client with the bootstrapping pieces so you can use it to configure keystone. In general, I&#8217;m sort of expecting this to be done mostly from the CLI, but you can also do it from the python code directly. To use this setup, you&#8217;ll need to initialize the client with two pieces of data:</p>
<ul>
<li>token</li>
<li>endpoint</li>
</ul>
<p>Token is what you&#8217;ll have configured in your keystone.conf file under <b><code>admin_token</code></b> and endpoint is the URL to your keystone service. If you were using devstack, it would be <b><code>http://localhost:35357/v2.0</code></b></p>
<p>A bit of example code (making up the admin_token)</p>
<pre class="wp-code-highlight prettyprint">
from keystone client.v2_0 import client

adminclient = client.Client(token=&#039;9fc31e32f61e78f114a40999fbf594c2&#039;,
                            endpoint=&#039;http://localhost:35357/v2.0&#039;)
</pre>
<p>Now at this point, you&#8217;ll have an instance of the client, and can start interacting with all the internal structures in keystone. <code>adminclient.tenants.list()</code> for example.</p>
<p>You may have spotted the authenticate() method on the client. If you&#8217;re using the token/endpoint setup, you <strong>do not</strong> want to call this method. When you&#8217;re using the admin_token setup, you don&#8217;t<br />
have a full authorization token as retrieved from keystone, you&#8217;re short-cutting the system. This mode is really only intended to be used to bootstrap in projects, users, etc. Once you&#8217;ve done that, you&#8217;re better using the username/password setup with the client.</p>
<p>To do that, you minimally need to know the username, the password, and the &#8220;public&#8221; endpoint of Keystone. With the v2 API, the public and administrative endpoints are separate. With devstack, the example public API endpoint is <code>http://localhost:5000/v2.0</code>.</p>
<p>A bit of an example:</p>
<pre class="wp-code-highlight prettyprint">
from keystoneclient.v2_0 import client
kc = client.Client(username=&#039;heckj&#039;, password=&#039;e2112EFFd3ff&#039;,
                   auth_url=&#039;http://localhost:5000/v2.0&#039;)
</pre>
<p>At this point, the client has been initialized, and as a default it will immediately attempt to authenticate() to the endpoint, so it already has some authorization data. With the updated keystoneclient library, this authorization info is stashed into an attribute &#8220;auth_ref&#8221;. You can check out the code in more detail &#8211; the class is <code>keystoneclient.access.AccessInfo</code>, and this represents the token that we retrieved after calling authenticate() to auth against keystone.</p>
<p>With only providing a username and password, the token is really only useful for about two things &#8211; getting a list of clients that this user can authorize to (getting a &#8216;scoped&#8217; token &#8211; where the token represents authorization to a project), and then retrieving that token.</p>
<pre class="wp-code-highlight prettyprint">
&gt;&gt;&gt; kc.username
&#039;heckj&#039;
&gt;&gt;&gt; kc.auth_ref
{u&#039;token&#039;: {u&#039;expires&#039;: u&#039;2012-11-12T23:28:58Z&#039;, u&#039;id&#039;: u&#039;97913f8839634946afab2897ac19908d&#039;}, u&#039;serviceCatalog&#039;: {}, u&#039;user&#039;: {u&#039;username&#039;: u&#039;heckj&#039;, u&#039;roles_links&#039;: [], u&#039;id&#039;: u&#039;c8d112a0932a454097dfba0f3b598bdc&#039;, u&#039;roles&#039;: [], u&#039;name&#039;: u&#039;heckj&#039;}}
&gt;&gt;&gt; kc.auth_ref.scoped
False
&gt;&gt;&gt; kc.tenants.list()
[&lt;Tenant {u&#039;id&#039;: u&#039;7dbf826d086c4580a28cf860a6d13046&#039;, u&#039;enabled&#039;: True, u&#039;description&#039;: u&#039;&#039;, u&#039;name&#039;: u&#039;heckj-project&#039;}&gt;]
&gt;&gt;&gt; kc.authenticate(tenant_name=&#039;heckj-project&#039;)
True
&gt;&gt;&gt; kc.auth_ref.scoped
True
&gt;&gt;&gt; kc.auth_ref
{u&#039;token&#039;: {u&#039;expires&#039;: u&#039;2012-11-12T23:37:10Z&#039;, u&#039;id&#039;: u&#039;6d811d7c39034813b6cab2ad083cdf3e&#039;, u&#039;tenant&#039;: {u&#039;id&#039;: u&#039;7dbf826d086c4580a28cf860a6d13046&#039;, u&#039;enabled&#039;: True, u&#039;description&#039;: u&#039;&#039;, u&#039;name&#039;: u&#039;heckj-project&#039;}}, u&#039;serviceCatalog&#039;: [{u&#039;endpoints_links&#039;: [], u&#039;endpoints&#039;: [{u&#039;adminURL&#039;: u&#039;http://localhost:8776/v1/7dbf826d086c4580a28cf860a6d13046&#039;, u&#039;region&#039;: u&#039;RegionOne&#039;, u&#039;internalURL&#039;: u&#039;http://localhost:8776/v1/7dbf826d086c4580a28cf860a6d13046&#039;, u&#039;publicURL&#039;: u&#039;http://localhost:8776/v1/7dbf826d086c4580a28cf860a6d13046&#039;}], u&#039;type&#039;: u&#039;volume&#039;, u&#039;name&#039;: u&#039;Volume Service&#039;}, {u&#039;endpoints_links&#039;: [], u&#039;endpoints&#039;: [{u&#039;adminURL&#039;: u&#039;http://localhost:9292/v1&#039;, u&#039;region&#039;: u&#039;RegionOne&#039;, u&#039;internalURL&#039;: u&#039;http://localhost:9292/v1&#039;, u&#039;publicURL&#039;: u&#039;http://localhost:9292/v1&#039;}], u&#039;type&#039;: u&#039;image&#039;, u&#039;name&#039;: u&#039;Image Service&#039;}, {u&#039;endpoints_links&#039;: [], u&#039;endpoints&#039;: [{u&#039;adminURL&#039;: u&#039;http://localhost:8774/v2/7dbf826d086c4580a28cf860a6d13046&#039;, u&#039;region&#039;: u&#039;RegionOne&#039;, u&#039;internalURL&#039;: u&#039;http://localhost:8774/v2/7dbf826d086c4580a28cf860a6d13046&#039;, u&#039;publicURL&#039;: u&#039;http://localhost:8774/v2/7dbf826d086c4580a28cf860a6d13046&#039;}], u&#039;type&#039;: u&#039;compute&#039;, u&#039;name&#039;: u&#039;Compute Service&#039;}, {u&#039;endpoints_links&#039;: [], u&#039;endpoints&#039;: [{u&#039;adminURL&#039;: u&#039;http://localhost:8773/services/Admin&#039;, u&#039;region&#039;: u&#039;RegionOne&#039;, u&#039;internalURL&#039;: u&#039;http://localhost:8773/services/Cloud&#039;, u&#039;publicURL&#039;: u&#039;http://localhost:8773/services/Cloud&#039;}], u&#039;type&#039;: u&#039;ec2&#039;, u&#039;name&#039;: u&#039;EC2 Service&#039;}, {u&#039;endpoints_links&#039;: [], u&#039;endpoints&#039;: [{u&#039;adminURL&#039;: u&#039;http://localhost:35357/v2.0&#039;, u&#039;region&#039;: u&#039;RegionOne&#039;, u&#039;internalURL&#039;: u&#039;http://localhost:5000/v2.0&#039;, u&#039;publicURL&#039;: u&#039;http://localhost:5000/v2.0&#039;}], u&#039;type&#039;: u&#039;identity&#039;, u&#039;name&#039;: u&#039;Identity Service&#039;}], u&#039;user&#039;: {u&#039;username&#039;: u&#039;heckj&#039;, u&#039;roles_links&#039;: [], u&#039;id&#039;: u&#039;c8d112a0932a454097dfba0f3b598bdc&#039;, u&#039;roles&#039;: [{u&#039;name&#039;: u&#039;Member&#039;}], u&#039;name&#039;: u&#039;heckj&#039;}, u&#039;metadata&#039;: {u&#039;is_admin&#039;: 0, u&#039;roles&#039;: [u&#039;08ccc339c0074a548104b9050bdf9492&#039;]}}
</pre>
<p>You might have noticed that you can now call authenticate() on the client and just pass in values that are missing from previous authenticate() calls, or you can switch them out entirely. You can change the username, password, project, etc &#8211; anything that you&#8217;d otherwise normally initialize with the client to do what you need.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2012/11/11/making-keystoneclient-python-library-a-little-easier-to-work-with/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenStack Keystone plans for the Grizzly release</title>
		<link>http://www.rhonabwy.com/wp/2012/11/08/openstack-keystone-plans-for-the-grizzly-release/</link>
		<comments>http://www.rhonabwy.com/wp/2012/11/08/openstack-keystone-plans-for-the-grizzly-release/#comments</comments>
		<pubDate>Thu, 08 Nov 2012 19:59:35 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[openstack]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1187</guid>
		<description><![CDATA[I posted this information to the OpenStack-dev mailing list, but thought it would be worthwhile as a blog post as well. Here is an overview of what&#8217;s looking to happen in Keystone over the grizzly release cycle. From the summit, we had the state of the project slides, which might be of interest: http://www.slideshare.net/ccjoe/oct-2012-state-of-project-keystone Since [...]]]></description>
				<content:encoded><![CDATA[<p>I <a href="http://markmail.org/thread/orumuygr7yfqz2px">posted this information to the OpenStack-dev mailing list</a>, but thought it would be worthwhile as a blog post as well.</p>
<p>Here is an overview of what&#8217;s looking to happen in Keystone over the grizzly release cycle.</p>
<p>From the summit, we had the state of the project slides, which might be of interest: <a href="http://www.slideshare.net/ccjoe/oct-2012-state-of-project-keystone">http://www.slideshare.net/ccjoe/oct-2012-state-of-project-keystone</a></p>
<p>Since then, we&#8217;ve been working on fleshing out more details around those initial discussions, and we&#8217;ve been correlating who&#8217;s working on what to get an overview of what&#8217;s coming up for Keystone. If you&#8217;re into reading raw notes, take a look at https://etherpad.openstack.org/keystone-grizzly-plans. </p>
<p>For those looking for more of a tl;dr:</p>
<p>grizzly-1 plans:<br />
 * merging in V3 API work &#8211; &#8220;tech preview&#8221;<br />
<a href="https://blueprints.launchpad.net/keystone/+spec/implement-v3-core-api">https://blueprints.launchpad.net/keystone/+spec/implement-v3-core-api</a></p>
<p> * move auth_token middleware to keystoneclient repo<br />
<a href="https://blueprints.launchpad.net/keystone/+spec/authtoken-to-keystoneclient-repo">https://blueprints.launchpad.net/keystone/+spec/authtoken-to-keystoneclient-repo</a></p>
<p> * AD LDAP extensions<br />
<a href="https://blueprints.launchpad.net/keystone/+spec/ad-ldap-identity-backend">https://blueprints.launchpad.net/keystone/+spec/ad-ldap-identity-backend</a></p>
<p> * enabling policy &#038; RBAC access for V3 API<br />
<a href="https://blueprints.launchpad.net/keystone/+spec/rbac-keystone-api">https://blueprints.launchpad.net/keystone/+spec/rbac-keystone-api</a></p>
<p>grizzly-2 plans:<br />
* pre-authenticated token<br />
 <a href="https://blueprints.launchpad.net/keystone/+spec/pre-auth">https://blueprints.launchpad.net/keystone/+spec/pre-auth</a></p>
<p>* plugable authentication handlers<br />
<a href="https://blueprints.launchpad.net/keystone/+spec/pluggable-identity-authentication-handlers">https://blueprints.launchpad.net/keystone/+spec/pluggable-identity-authentication-handlers</a></p>
<p>* consolidated policy documentation/recommendations<br />
<a href="https://blueprints.launchpad.net/keystone/+spec/document-deployment-suggestions-policy">https://blueprints.launchpad.net/keystone/+spec/document-deployment-suggestions-policy</a></p>
<p>* PKI future work<br />
<a href="https://blueprints.launchpad.net/keystone/+spec/delegation">https://blueprints.launchpad.net/keystone/+spec/delegation</a><br />
  &#8211; starting into delegation, signing of tokens<br />
  &#8211; annotations on signing for authorization</p>
<p>grizzly-3 plans:<br />
* delegation<br />
<a href="https://blueprints.launchpad.net/keystone/+spec/delegation">https://blueprints.launchpad.net/keystone/+spec/delegation</a></p>
<p>* multifactor authN<br />
<a href="https://blueprints.launchpad.net/keystone/+spec/multi-factor-authn">https://blueprints.launchpad.net/keystone/+spec/multi-factor-authn</a></p>
<p>Much of the work and desires around Delegation  has yet to be fully defined and nailed down, and relies on a lot of additions in making PKI based tokens a stable, solid, default mechanism. I&#8217;m sure there will be some redirection once we get a few weeks down the road and see what&#8217;s happening with the V3 API rollout and PKI token extensions to support delegation, pre-auth, and so forth. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2012/11/08/openstack-keystone-plans-for-the-grizzly-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CloudEnvy &#8211; vagrant for OpenStack</title>
		<link>http://www.rhonabwy.com/wp/2012/10/28/cloudenvy-vagrant-for-openstack/</link>
		<comments>http://www.rhonabwy.com/wp/2012/10/28/cloudenvy-vagrant-for-openstack/#comments</comments>
		<pubDate>Sun, 28 Oct 2012 17:54:35 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[openstack]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1183</guid>
		<description><![CDATA[I work on OpenStack, I work in OpenStack. Seems like everyone I know that&#8217;s been working on, in, or with OpenStack has their own little script to &#8220;set up their environment&#8221; &#8211; meaning getting a VM spun up with their dotfiles, tools, etc, all configured and ready to roll. I had one myself for quite [...]]]></description>
				<content:encoded><![CDATA[<p>I work on OpenStack, I work in OpenStack. Seems like everyone I know that&#8217;s been working on, in, or with OpenStack has their own little script to &#8220;set up their environment&#8221; &#8211; meaning getting a VM spun up with their dotfiles, tools, etc, all configured and ready to roll. I had one myself for quite a while, and recently I threw it away. </p>
<p><a href="https://github.com/cloudenvy/cloudenvy">CloudEnvy</a> (https://github.com/cloudenvy/cloudenvy) is what started that cascade. <a href="https://github.com/bcwaldon">Brian Waldon</a> started it some time ago as a script that emulated the ease of spinning up VM&#8217;s with vagrant, except wrapped over the OpenStack clients. I always wanted to like Vagrant, but it never really synced for me. I think mostly because I was in never-ending kernel panic hell with virtualbox. CloudEnvy is a different story.</p>
<p>I think the most interesting illustration of CloudEnvy is using it to spin up an instance in a cloud, and then run <a href="https://github.com/openstack-dev/devstack">devstack</a> in that instance.</p>
<p>CloudEnvy relies on a starter of two files &#8211; one that&#8217;s specific to the project (DevStack in this case): Envyfile, and one for your personal cloud configuration (~/.cloudenvy).</p>
<p>Here&#8217;s my .cloudenvy file (with the hostname and password redacted):<br />
<script src="https://gist.github.com/3969250.js?file=.cloudenvy"></script></p>
<p>And the Envyfile I use with <a href="https://github.com/openstack-dev/devstack">devstack</a>:<br />
<script src="https://gist.github.com/3969250.js?file=Envyfile"></script></p>
<p>You&#8217;ll notice that the Envyfile references a script I named &#8220;cloudenvy-setup.sh&#8221; &#8211; this is the basic script that cloudenvy uploads to the instance it creates to automatically provision things up. You could easily replace this with Puppet, Chef, or whatever it is you like to configure VMs in your world.</p>
<p>Here&#8217;s what I&#8217;m doing:<br />
<script src="https://gist.github.com/3969250.js?file=cloudenvy-setup.sh"></script></p>
<p>(all three of these files are in the gist <a href="https://gist.github.com/3969250">https://gist.github.com/3969250</a>)</p>
<p>The Envyfile also refers to a image_name. I&#8217;m using a stock UEC precise image that I uploaded to our instance of OpenStack. Pretty shortly, CloudEnvy will be replacing &#8220;image_name&#8221; with just &#8220;image&#8221;, and they recommend that you use an image ID (guaranteed uniqueness) over a name. For my immediate use, the name works pretty well.</p>
<p>Once this is all in place:</p>
<p><code><br />
envy up<br />
</code></p>
<p>Creates the instance, assigns it a floating IP address, SSH&#8217;s into the instance, uploads the provision script, and starts cranking on the provisioning. 763 seconds later, a fully operational devstack in an instance running on OpenStack.</p>
<p><code><br />
envy ssh<br />
</code></p>
<p>Gets you in, lets you do what you want. </p>
<p><code><br />
envy list<br />
</code></p>
<p>Shows you the instance(s) you have running.</p>
<p>There&#8217;s more, a lot more, but hopefully this is sufficient to get you started. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2012/10/28/cloudenvy-vagrant-for-openstack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenStack Design Summit &#8211; wrap-up and links</title>
		<link>http://www.rhonabwy.com/wp/2012/10/20/openstack-design-summit-wrap-up-and-links/</link>
		<comments>http://www.rhonabwy.com/wp/2012/10/20/openstack-design-summit-wrap-up-and-links/#comments</comments>
		<pubDate>Sat, 20 Oct 2012 20:04:32 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[openstack]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1180</guid>
		<description><![CDATA[This fall&#8217;s OpenStack design summit in San Diego is wrapped up, and we&#8217;re all back to being distributed across the globe. I was pleased with the summit, and pleased to see the project I&#8217;m helping coordinate (Keystone) move forward with a lot of ideas, growing interest in contributions, and concrete feedback from a wide mix [...]]]></description>
				<content:encoded><![CDATA[<p>This fall&#8217;s OpenStack design summit in San Diego is wrapped up, and we&#8217;re all back to being distributed across the globe. I was pleased with the summit, and pleased to see the project I&#8217;m helping coordinate (<a href="http://wiki.openstack.org/Keystone">Keystone</a>) move forward with a lot of ideas, growing interest in contributions, and concrete feedback from a wide mix of folks. </p>
<p>The design sessions are definitely less about actually hacking code than they were a year ago, offset though with the increasing diversity of backgrounds and interests participating in the sessions. The core team developers joined me through-out Thursday and drove most of the discussions, with fantastic input from David Chadwick, Khaja, Ryan Lane. There were way more people in the sessions than that, but to me these three represent a set of fresh inputs from folks with a deep academic background, previous experience building identity systems, and active operator points of view. They and the the previous contributors provided tremendous feedback, asked great questions, and set the stage for a lot of interesting ideas.</p>
<p>This year all the project technical leads gave a &#8220;state of the project&#8221; overview, but we did that on Tuesday &#8211; so like John Griffith (the project technical lead for <a href="http://wiki.openstack.org/Cinder">cinder</a>), I was doing the &#8216;state of the project&#8217; routine prior to getting the feedback and doing the brainstorming in the sessions. The <a href="http://www.slideshare.net/ccjoe/oct-2012-state-of-project-keystone">slides from that presentation are online</a> at <a href="http://www.slideshare.net/ccjoe/oct-2012-state-of-project-keystone">http://www.slideshare.net/ccjoe/oct-2012-state-of-project-keystone</a> if you&#8217;re interested. The coordinators all video-taped those segments, as I understand it, they should be appearing on the <a href="http://www.youtube.com/channel/HC8Qp-iErLZE0?feature=g-all-lgv">OpenStack channel in Youtube</a> in the next couple of days.</p>
<p>There was also a very active session led by Gabriel Hurley seeking to drive more continuity into the OpenStack APIs, and a matching session by Doug Hellman and Dean Troyer for the OpenStack CLIs. The continued focus on bringing in new ideas while keeping the interfaces consistent and clear is a great sign for the project overall, and I was pleased to see a large number of like minded folks wanting to continue to move things forward in those areas.</p>
<p>This was also the first summit under the auspices of the <a href="http://www.openstack.org/foundation/">OpenStack Foundation</a> &#8211; they all met for an extended period of time early in the conference, and the <a href="http://www.openstack.org/foundation/technical-committee/">Technical Committee</a> managed to pull of a first all-in-person meeting over dinner and scattered conversation Tuesday evening. </p>
<p>And not at all related to any core projects or overall effort: check out the very creative riff on the OpenStack theme <a href="http://www.dopenstack.com">Dope&#8217;n'Stack</a>, (<a href="http://www.youtube.com/watch?v=3jUQ09Jf4GU">video on YouTube</a> as well). Gabriel and Erik were working their tails off prior to and during the conference to pull this off, culminating in a great presentation Wednesday evening at Piston&#8217;s party. (I was disappointed that Gabriel lost the mohawk for the summit, but he said he was sick of wearing it after three weeks).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2012/10/20/openstack-design-summit-wrap-up-and-links/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OpenStack Folsom RC1</title>
		<link>http://www.rhonabwy.com/wp/2012/09/22/openstack-folsom-rc1/</link>
		<comments>http://www.rhonabwy.com/wp/2012/09/22/openstack-folsom-rc1/#comments</comments>
		<pubDate>Sat, 22 Sep 2012 20:05:49 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[openstack]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1175</guid>
		<description><![CDATA[It&#8217;s been a busy couple of weeks, and I expect the new several to be busy as well, leading up to the next OpenStack Design Summit (Oct 15th-18th in San Diego, CA). We rolled RC1 for Keystone Folsom release out the door this past week, and at this point I think all the projects have [...]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s been a busy couple of weeks, and I expect the new several to be busy as well, leading up to the next OpenStack Design Summit (Oct 15th-18th in San Diego, CA).</p>
<p>We rolled RC1 for Keystone <a href="http://wiki.openstack.org/FolsomReleaseSchedule">Folsom</a> release out the door this past week, and at this point I think all the projects have an initial release candidate out the door. The original release date is 5 days away, and it&#8217;s looking pretty good for hitting it. If you want a quick overview of what&#8217;s coming in this release, I&#8217;d recommend a look at Emilien Macchi&#8217;s <a href="http://my1.fr/blog/whats-new-in-openstack-folsom/">Folsom overview</a>, which is a pretty nice high level summary.</p>
<p>While we&#8217;ve been busy nailing down bugs and wrapping this release together, the <a href="http://www.openstack.org/foundation/">OpenStack Foundation</a> has finally come into form. As the Keystone project technical lead, I&#8217;m on the <a href="http://www.openstack.org/foundation/technical-committee/">OpenStack technical committee</a> &#8211; picture and title, but I haven&#8217;t written a bio yet. (Sorry Lauren). I find it really quite difficult to write a bio at myself. Regardless, it&#8217;s great to finally see this moving into a foundation external to any single corporate interest. That&#8217;s not to say it&#8217;s all in the land of milk and cookies, there&#8217;s just a lot of people with all slightly different interests jumping into the pool to push this little rowboat in different directions.</p>
<p>One thing that we did early out of excellent foresight was keeping the direction of the core projects democratically oriented by the contributors to those projects. The people that show up to write, update, and support the code are the ones that are ultimately making the decisions on what features get implemented, and when. Lots of folks talk about what could be, but it&#8217;s the contributors that make it happen.</p>
<p>A perfect example of this is <a href="http://www.linkedin.com/in/admiyo">Adam Young</a>, who in the past 6 months drove the implementation of PKI based tokens in Keystone. I&#8217;m not even sure I&#8217;ve met Adam face to face, but I definitely know him &#8211; and he&#8217;s been a fantastic contributor, and in the Folsom development cycle was promoted to the core Keystone team.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2012/09/22/openstack-folsom-rc1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>View from the ISS at Night</title>
		<link>http://www.rhonabwy.com/wp/2012/07/21/view-from-the-iss-at-night/</link>
		<comments>http://www.rhonabwy.com/wp/2012/07/21/view-from-the-iss-at-night/#comments</comments>
		<pubDate>Sat, 21 Jul 2012 19:25:40 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1171</guid>
		<description><![CDATA[View from the ISS at Night from Knate Myers on Vimeo.]]></description>
				<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/45878034" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
<p><a href="http://vimeo.com/45878034">View from the ISS at Night</a> from <a href="http://vimeo.com/knatephoto">Knate Myers</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2012/07/21/view-from-the-iss-at-night/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Traveller, a long time affair&#8230;</title>
		<link>http://www.rhonabwy.com/wp/2012/06/16/traveller-a-long-time-affair/</link>
		<comments>http://www.rhonabwy.com/wp/2012/06/16/traveller-a-long-time-affair/#comments</comments>
		<pubDate>Sat, 16 Jun 2012 22:00:43 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1166</guid>
		<description><![CDATA[I&#8217;ve been following the stories of crowd-funding, and vaguely paying attention to KickStarter. I hadn&#8217;t done much even in terms of looking, only hearing about the periodic article from friends about various old-school video games getting a remake and such based on the funding they arranged on that site. So then I caught word about [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been following the stories of crowd-funding, and vaguely paying attention to <a href="http://www.kickstarter.com/">KickStarter</a>. I hadn&#8217;t done much even in terms of looking, only hearing about the periodic article from friends about various old-school video games getting a remake and such based on the funding they arranged on that site.</p>
<p>So then I caught word about one of my longest running obsessions/hobbies/collections/etc &#8211; Traveller. Mark Miller is hosting a crowd-sourcing setup on <a href="http://www.kickstarter.com/projects/traveller5/traveller-5th-edition">KickStarter to fund the release of Traveller 5</a>. I saw it, was tempted, and then just a day or so ago decided to dive in and help back it. I have pieces of most every edition of traveller that ever came out, a huge collection of little black books, 8.5&#215;11 paperbacks and a few hardcovers. Side games, spinoffs, and other do-dads. &#8220;Back in the day&#8221;, I was actively involved in a mailing list run on <a href="http://en.wikipedia.org/wiki/BITNET">BITNET</a> that we just called the &#8220;TML&#8221;. From there, and other places, I collected a fairly large archive of fan works and related pieces, a few bits of software, all sorts of things. I published them in one of my first web-based sites. I don&#8217;t recall what I called it early on, but now I just call it the &#8220;Missouri Archive&#8221; and even though I haven&#8217;t updated it or really touched the collection in 10 years, I keep it online with the help of a few friends. It&#8217;s still sticking around out there at <a href="http://traveller.mu.org/">http://traveller.mu.org/</a>.</p>
<p>I don&#8217;t even want to think about how long that game has managed to capture my attention, how many days I spent day-dreaming about space operas, designing &#8220;starships&#8221; for the game, or generally just reading published games or stories related to it. I&#8217;ve enjoyed that setting and that game longer than any other I can image (far longer D&#038;D as it turns out), so I&#8217;m very happy to help fund <a href="http://www.kickstarter.com/projects/traveller5/traveller-5th-edition">Traveller 5</a> and look forward to it shipping, and more evenings of reading and daydreaming.</p>
<p>I do still hope for some video or compute games that capture some of Traveller. <a href="http://www.traveller-ar.com/">TravellerAR</a> was a long shot &#8211; of course I spent my money it too, but they&#8217;ve had to close up shop and I never really got to anything with it that I found fun or good (it crashed quite a bit). Sooner or later, I guess. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2012/06/16/traveller-a-long-time-affair/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>6 months later&#8230; Essex</title>
		<link>http://www.rhonabwy.com/wp/2012/04/08/6-months-later-essex/</link>
		<comments>http://www.rhonabwy.com/wp/2012/04/08/6-months-later-essex/#comments</comments>
		<pubDate>Sun, 08 Apr 2012 19:37:13 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[openstack]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1155</guid>
		<description><![CDATA[Easter Sunday and I&#8217;ve some time to sit back, relax, and spend the weekend doing a little cleaning and catching up. I&#8217;ve got to admit to some embarrassment that the last post here was the wrap-up of the OpenStack Diablo design summit. To say it&#8217;s been a busy six months since the last post is [...]]]></description>
				<content:encoded><![CDATA[<p>Easter Sunday and I&#8217;ve some time to sit back, relax, and spend the weekend doing a little cleaning and catching up. I&#8217;ve got to admit to some embarrassment that the last post here was the wrap-up of the OpenStack Diablo design summit.</p>
<p>To say it&#8217;s been a busy six months since the last post is really quite an understatement. What we released in the past month, and the work that went in to getting us there, is nothing short of phenomenal.</p>
<p>The <a href="http://www.openstack.org/projects/essex/">OpenStack Essex</a> release is out, and I&#8217;m still sort of catching my breath from that. Just six withs prior to the release I was elected as the PTL for Keystone. I had no idea how much additional work it was to wrangle the bugs, approvals, and the other sundry details that go into getting the release out the door. I rather wish there was a &#8220;new PTL user&#8217;s manual&#8221; for the process. It was a lot of learning, most of it last-minute and ad-hoc around our project management, release process and associated the mechanics. I spent a lot of time trying to figure out how to wrangle Launchpad into some semblance of useful tracking, etc. (To be fair, it was mostly a matter of learning what Launchpad could and couldn&#8217;t do, and figuring out the conventions that were already in place).</p>
<p>The past month was terrifically busy with getting OpenStack deployed and tested &#8211; running in small environments (<a href="http://devstack.org/">devstack</a>), and large. I&#8217;ve been working from the Ubuntu distributions myself, and the whole gang that has been packaging OpenStack (Chuck, Adam, Kiall, and others &#8211; inside Canonical and out) with the downstream distributions has done a tremendous job wrapping together the changes and making it into a deployable release from packages.</p>
<p><strong>A much better release:</strong></p>
<p>Where I was, er, more than disappointed with the Diablo, I&#8217;m significantly happier with the Essex release. <a href="https://launchpad.net/keystone/">Keystone</a> (the project for which I am now the PTL) didn&#8217;t advance this release cycle so much as retrench and prepare for advancement this next release cycle. <a href="https://launchpad.net/horizon/">Horizon</a> made huge leaps and bounds, which I think is fantastic as the face of OpenStack to many users. <a href="https://launchpad.net/nova/">Nova</a> and <a href="https://launchpad.net/swift/">Swift</a> advanced, and the integration work and definition going into making <a href="https://launchpad.net/quantum/">Quantum</a> (and <a href="https://launchpad.net/melange/">Melange</a>) a reality has been terrific.</p>
<p>I think if I were to pull out a star of the show for the Essex release, then I&#8217;ve really got to point to the combined work for the crew formulating and keeping <a href="http://devstack.org/">DevStack</a> solid, and the <a href="https://launchpad.net/openstack-ci">CI team</a> that integrated it into our development and review process so that we had a minimum of guaranteed interoperability. Where I was screaming into the wind during the last milestone of Diablo for continued breakages between the components, the integration of devstack has demanded that changes be rolled in with though to an overall use case and interop. With 200+ developers all kicking this ball down the field, the guaranteed CI has been the piece that has done us the most good.</p>
<p><strong>A little about Keystone:</strong></p>
<p>Keystone, as we retrenched and simplified the codebase, also has a significant advancement in integration testing. We replaced the entire codebase based on a series of integration tests that verified and guaranteed API compatibility with the Diablo and trunk releases as well as the client while we made that switch. The underlying code base is now significantly simplified, and the <a href="http://keystone.openstack.org/architecture.html">internal architecture of that service now wrapped around some core &#8220;internal service&#8221; concepts</a> to allow us to have drivers that cleanly back-end into external systems to support identity and authorization.</p>
<p>I&#8217;ve received a number of questions about &#8220;why the API still sucks&#8221; six months later after Diablo. There&#8217;s still no obvious means for a user to &#8220;log out&#8221; (invalidate their own token), or change their own password (assuming the back-end were to support it). In switching out the underlying code base and architecture we needed to keep the API stable so that we could make sure we had the internals correct. With the internals switched out, it is now time to revisit the API and take the lessons we&#8217;ve learned from 6+ months of using the v2.0 API and improve upon it.</p>
<p><strong>Looking towards the summit:</strong></p>
<p>While I&#8217;m much, much happier with the Essex release, there are still plenty of places for improvement &#8211; many that I remember from the Diablo summit, and some new things that I&#8217;d love to see some focus on for the upcoming six months.</p>
<p>While Horizon has given us a dramatically improved user experience for OpenStack, there&#8217;s much more that we could do there &#8211; both with a web based UI, and with our command line interfaces to OpenStack. One thing that could use some explicit attention is the proliferation of &#8220;clients&#8221; needed to interact with OpenStack. As projects are splintering off Nova into their own domains, we have a number of new command line clients (nova, keystone, glance, quantum) &#8211; and they don&#8217;t all act the same. There is some great work on driving them to consistency, but I wonder if we shouldn&#8217;t bag all the individual clients and roll them together into one &#8220;OpenStack&#8221; client that is consistent in how it handles command line options, what the &#8220;commands&#8221; look like, and generally how you interact with them. </p>
<p>I hate to admit this, but even as the PTL of Keystone, I ran into a brick wall of old docs referring to using the command of &#8220;<code>nova-manage project list</code>&#8221; to see the projects, when I knew darn well and good they were all in the keystone system, and to see a list of them I should use the command &#8220;<code>keystone tenant-list</code>&#8220;. Not so hot, huh? Quantum and the nova-network components are going to really come into their own in this release, so we&#8217;ll have more shattering of the user experience from a deployer&#8217;s point of view unless we do something to be specific about tying it together.</p>
<p>There are more changes to be made in Keystone that I&#8217;m paying a lot of attention to &#8211; some of which are honestly going to require buy-in from the entire community to make happen. Where we place the boundaries of role based access, and how we deal with trust and information sharing about identity between the projects is probably going to need some changes that will ripple all the way down into the API&#8217;s of nova, swift, glance, quantum, melange, etc. Getting the brainstorming around those concepts and desired features is what I primarily want to accomplish at the <a href="http://www.openstack.org/conference/san-francisco-2012/">Design Summit</a>, with follow on in the milestone timeframe thereafter to bring the new features into existence and integrate them across OpenStack. My ideal goal is to get all the heavy features implemented early in the Folsom release cycle so that they&#8217;re solid and nailed down for the later milestones, and we can tweak and fix what may be broken long before any release points.</p>
<p><strong>About that CloudStack thing:</strong></p>
<p>Seems like in the last week, everybody (or at least the pundits) got their knickers in a twist about Citrix finally being more open about their dual-interest in CloudStack and OpenStack. Regardless of Gartner pundit sensationalistic babbling, the release of CloudStack as an Apache licensed project is nothing but goodness for the whole community. The Apache license makes me feel more comfortable with reviewing their code and looking at how they attacked the same issues and problems OpenStack has, and I expect they&#8217;ll look closely at how OpenStack has done the same. I applaud any company trying to build an open-source community, and I&#8217;m looking forward to seeing what Citrix does to actually do that community building. If it gains ground and folks contribute to CloudStack, we&#8217;re all better off &#8211; it&#8217;s more ideas hitting the street and becoming reality.</p>
<p>Finally, for anyone that didn&#8217;t think that the user-facing EC2 API was the defacto API, wake the F* up. It is reasonable, solid, and nobody is going to be turning it off any time soon. It also doesn&#8217;t allow/enable some things that a lot of cloud administrators would like to do &#8211; so it shouldn&#8217;t surprise anyone that CloudStack has their &#8220;api&#8221; and OpenStack has their &#8220;api&#8221;. The APIs are another place where we can learn from each other, as we add some value beyond what the bookseller down street might want to impose and expose.</p>
<p>If you want a little pundit action from this source, watch the API&#8217;s of both CloudStack and OpenStack (not just the EC2 compatibility layer) over the next six months. I think you&#8217;ll be seeing some very interesting steps forward.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2012/04/08/6-months-later-essex/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Openstack Summit Fall 2011 &#8211; Wrap-up and overview</title>
		<link>http://www.rhonabwy.com/wp/2011/10/08/openstack-summit-fall-2011-wrap-up-and-overview/</link>
		<comments>http://www.rhonabwy.com/wp/2011/10/08/openstack-summit-fall-2011-wrap-up-and-overview/#comments</comments>
		<pubDate>Sat, 08 Oct 2011 21:48:00 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[devops]]></category>
		<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1146</guid>
		<description><![CDATA[I&#8217;m back from the OpenStack design summit and conference, just held in Boston, MA. It was a fantastic week, with the first three days dedicated to the design summit &#8211; getting down and dirty with the details, and the last two dedicated to the conference portion &#8211; talks and panels about folks actively using OpenStack, [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m back from the <a href="http://www.openstack.org/">OpenStack</a> design summit and conference, just held in Boston, MA. It was a fantastic week, with the first three days dedicated to the design summit &#8211; getting down and dirty with the details, and the last two dedicated to the conference portion &#8211; talks and panels about folks actively using OpenStack, and a little wrap-up and overview from the project technical leads of the next 6 month roadmap for the core and incubation projects in OpenStack.</p>
<p>One thing that was intended as new, and I think worked well, was the splitting of the conference and design summit. It really made it a lot easier to be involved in the technical details and not have to choose between that and listening to folks talk to what they&#8217;re Openstack experiences have been, governance models and choices, and so forth. As an active contributor to (and general jack-of-all-trades with) a number of the OpenStack projects, it&#8217;s hard enough to balance my focus between the technical sessions.</p>
<p>There was also a ton of news related to OpenStack that is just fantastic for the community. <a href="http://www.openstack.org/blog/2011/10/openstack-foundation/">Rackspace is starting to form out a foundation</a> to run OpenStack long term, and the governance round-table at the conference made it clear that pretty much everyone agreed to a thoughtful, careful process to set it up to really make a long term run with OpenStack. There was notable consensus on ideas and vision of how to set up governance, including taking some long and deep looks at how other successful open source foundations have been set up, and looking to those foundations to learn what&#8217;s been successful, and what they might have done differently.</p>
<p>There was also the entrance of Hewlett Packard very publicly actively into the OpenStack world. <a href="http://h30529.www3.hp.com/t5/HP-Scaling-the-Cloud-Blog/HP-Announces-Support-for-OpenStack/ba-p/109">Back in September, they said they&#8217;d be there</a>, and with the conference <a href="http://openstackconference2011.sched.org/event/4e321f227cd76589defcb7a443af370c">they have committed hardware and time to continuous integration efforts</a>. They were notably involved in the design summit as well, hosting a couple of sessions and getting actively involved in others. And I think most pleasing to me, they are actively submitting code contributions to the OpenStack core projects. I think it&#8217;s a little odd that they&#8217;re all coming in as &#8220;<a href="https://review.openstack.org/#dashboard,1631">HP Nova Contributors</a>&#8220;, but I&#8217;m glad to see it. </p>
<p>With HP running <a href="http://www.vimeo.com/27928411">their cloud offering</a> on OpenStack, they&#8217;re getting deeper in the details of the code. Dell&#8217;s been focusing their efforts on the <a href="http://robhirschfeld.com/2011/03/14/how-openstack-installer-works/">amazing OpenStack deployment tool: Crowbar</a>, and it seems clear to me that HP is taking their interest quite a bit deeper into the core projects.</p>
<p>I won&#8217;t even do justice the the individual project roadmaps from the summit &#8211; I think that the most of the project technical leads are likely recovering this weekend from an intensely focused week. In the next couple of weeks, we&#8217;ll see them hit the mailing list  &#8211; and from what I saw from the sessions in the conference, there&#8217;s going to be some hard choices coming up on where to expend resources. Every one of the projects has more that they want to do than they will be able to smoothly accomplish in the next 6 months. We&#8217;ll see the details hitting the <a href="https://blueprints.launchpad.net/openstack">blueprints</a> in the very near future I&#8217;m sure. Suffice to say that if you&#8217;ve been thinking about getting involved in OpenStack, now is very definitely the time to jump in &#8211; there&#8217;s a ton to do, and a lot of really interesting problems to solve in getting it done.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/10/08/openstack-summit-fall-2011-wrap-up-and-overview/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installing OpenStack &#8211; Diablo release (nova and glance)</title>
		<link>http://www.rhonabwy.com/wp/2011/09/23/installing-openstack-diablo-release-nova-and-glance/</link>
		<comments>http://www.rhonabwy.com/wp/2011/09/23/installing-openstack-diablo-release-nova-and-glance/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 16:41:09 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1139</guid>
		<description><![CDATA[I know a lot of folks are using the StackOps script thingy to install OpenStack. I&#8217;ve been installing it (quite a bit) lately just from packages, and it&#8217;s not all that difficult, so I thought I&#8217;d write up the details on how to do that. A lot of this is exactly what&#8217;s encoded into Chef [...]]]></description>
				<content:encoded><![CDATA[<p>I know a lot of folks are using the <a href="http://www.stackops.com/">StackOps</a> script thingy to install OpenStack. I&#8217;ve been installing it (quite a bit) lately just from packages, and it&#8217;s not all that difficult, so I thought I&#8217;d write up the details on how to do that. A lot of this is exactly what&#8217;s encoded into <a href="https://github.com/cloudbuilders/openstack-cookbooks">Chef recipes</a> and <a href="https://github.com/puppetlabs/puppetlabs-openstack">Puppet modules</a> out there &#8211; so if you&#8217;re looking to run with something already made, there&#8217;s plenty of options.</p>
<p>These instructions are assuming you&#8217;re starting with an Ubuntu based system &#8211; either 10.10 or 11.04. I haven&#8217;t tried it as yet with 11.10.</p>
<p>First things first, I recommend you make sure you have the latest bits of everything:</p>
<pre class="wp-code-highlight prettyprint">
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get autoremove
</pre>
<p>Then we need to add the release &#8220;PPA&#8221; so that your system can grab the packages for Openstack:</p>
<pre class="wp-code-highlight prettyprint">
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:openstack-release/2011.3
sudo apt-get update
</pre>
<p>Now we get into the details. I&#8217;m going to drive out the instructions that will start with a single host, but are set up to add additional virtualization hosts as you need. I&#8217;m writing this assuming you&#8217;re working in a small network, and setting it up for FlatDHCP networking. Choosing the networking strategy and IP address space to use is actually one of the trickier parts of doing a reasonable install. For just testing something out in a test lab, this setup will work reasonable well &#8211; the only thing to really note is that this *will* install a DHCP server to provide IP addresses to the virtual instances, so if you have another DHCP server handing out addresses, you might need to get into the details and change some of these settings.</p>
<p>Installing the packages:</p>
<p>OpenStack relies on using MySQL as a data repository for information about the openstack configuration, so we&#8217;ll need to set up a MySQL server. Normally when you install the packages for MySQL, it&#8217;ll ask you about configuring a root password and such. We can make that hands-off by pre-answering some of those questions. To do this, make a file named &#8220;/tmp/mysql_preseed.txt&#8221; and put in it the following:</p>
<pre class="wp-code-highlight prettyprint">
mysql-server-5.1 mysql-server/root_password password openstack
mysql-server-5.1 mysql-server/root_password_again password openstack
mysql-server-5.1 mysql-server/start_on_boot boolean true
</pre>
<p>Then we can get into the commands to install the packages:</p>
<pre class="wp-code-highlight prettyprint">
cat /tmp/mysql_preseed.txt | debconf-set-selections
apt-get install mysql-server python-mysqldb
apt-get install rabbitmq-server
# ^^ pre-reqs for running controller nova instance
apt-get install euca2ools unzip
# ^^ for accessing nova through EC2 APIs
apt-get install nova-volume nova-vncproxy nova-api nova-ajax-console-proxy
apt-get install nova-doc nova-scheduler nova-objectstore
apt-get install nova-network nova-compute
apt-get install glance
</pre>
<p>That&#8217;s got all the packages installed onto your local system! Now we just need to configure it up and initialize some information (that&#8217;s the bit about networks, etc).</p>
<p>Before I get into changing configs, let me explain what I&#8217;ll be setting up. In this example, my internal &#8220;network&#8221; is 172.17.0.0/24 &#8211; and I have a dedicated IP address for this host that is 172.17.0.133. The virtual machines will be in their own network space (10.0.0.0 to 10.0.0.254), and (at this point) not visible from the local network, but will be able to access the local network through their virtualization hosts. The machine I&#8217;m using also only has a single NIC (eth0), which is fine for a little test bed, but not likely what you want to do in any sort of real setup.</p>
<p><strong>/etc/nova/nova.conf</strong></p>
<pre class="wp-code-highlight prettyprint">--dhcpbridge_flagfile=/etc/nova/nova.conf
--dhcpbridge=/usr/bin/nova-dhcpbridge
--logdir=/var/log/nova
--state_path=/var/lib/nova
--lock_path=/var/lock/nova
--flagfile=/etc/nova/nova-compute.conf
--verbose
#
--sql_connection=mysql://novadbuser:novaDBsekret@172.17.0.133/nova
#
--network_manager=nova.network.manager.FlatDHCPManager
--flat_network_bridge=br100
--flat_injected=False
--flat_interface=eth0
--public_interface=eth0
#
--vncproxy_url=http://172.17.0.133:6080
--daemonize=1
--rabbit_host=172.17.0.133
--osapi_host=172.17.0.133
--ec2_host=172.17.0.133
--image_service=nova.image.glance.GlanceImageService
--glance_api_servers=172.17.0.133:9292
--use_syslog
</pre>
<p>Now you might have noticed the MySQL connection string in there. We need to set up that user and password in MySQL to do what needs to be done. I also change the MySQL configuration so that remote systems can connect to MySQL. It&#8217;s not needed on a single host, but if you ever want to have more than one compute host, you need to make this change. In <strong>/etc/mysql/my.conf</strong>, find the line:</p>
<pre class="wp-code-highlight prettyprint">bind-address = 127.0.0.1</pre>
<p>and change it to</p>
<pre class="wp-code-highlight prettyprint">bind-address 0.0.0.0</pre>
<p>Now lets make the user in Mysql:</p>
<pre class="wp-code-highlight prettyprint">
mysql -popenstack
CREATE USER &#039;novadbuser&#039; IDENTIFIED BY &#039;novaDBsekret&#039;;
GRANT ALL PRIVILEGES ON *.* TO &#039;novadbuser&#039;@&#039;%&#039; WITH GRANT OPTION;
FLUSH PRIVILEGES;
</pre>
<p>And set up the database:</p>
<pre class="wp-code-highlight prettyprint">
mysql -popenstack -e &#039;CREATE DATABASE nova;&#039;
nova-manage db sync
</pre>
<p>If that last command gives you any trouble, then we likely don&#8217;t have the MySQL system configured correctly &#8211; the user can&#8217;t access the tables or something. Check in the logs for MySQL to get a sense of what might have gone wrong.</p>
<p>At this point, it&#8217;s time to configure up the internals of openstack &#8211; create projects, networks, etc.<br />
We&#8217;ll start by creating an admin user:</p>
<pre class="wp-code-highlight prettyprint">
# create admin user called &quot;cloudroot&quot;
nova-manage user admin --name=cloudroot --secret=sekret
</pre>
<p>This should respond with something like:</p>
<pre class="wp-code-highlight prettyprint">export EC2_ACCESS_KEY=sekret
export EC2_SECRET_KEY=653f3fad-df22-449b-9e6a-ea6c81e32621</pre>
<p>You can scratch that down, but we&#8217;ll be getting that same information again later and using it, so don&#8217;t worry too much about it.</p>
<p>Now we create a project:</p>
<pre class="wp-code-highlight prettyprint">
# create project &quot;cloudproject&quot; with project mgr: &quot;cloudroot&quot;
nova-manage project create --project=cloudproject --user=cloudroot
</pre>
<p>And finally, a network configuration for those internal IP addresses:</p>
<pre class="wp-code-highlight prettyprint">
nova-manage network create private \
    --fixed_range_v4=10.0.0.0/24 \
    --num_networks=1 \
    --network_size=256 \
    --bridge=br100 \
    --bridge_interface=eth0 \
    --multi_host=T
# gateway assumed at 10.0.0.1
# broadcast assumed at 10.0.0.255
</pre>
<p>Now I&#8217;m using the multi-host flag, which is new in the Diablo release. This makes each compute node it&#8217;s own networking host for the purposes of allowing the VM&#8217;s you spin up to access your network or the internet.</p>
<p>At this point, you&#8217;re system should be up and running, all systems operational. Let me walk you through the command steps to actually kick up a little test VM though. These commands are all meant to be done as a local user (not root!)</p>
<pre class="wp-code-highlight prettyprint">
sudo nova-manage project zipfile cloudproject cloudroot /tmp/nova.zip
unzip -o /tmp/nova.zip -d ~/creds
cat creds/novarc &gt;&gt; ~/.bashrc
source creds/novarc
#
euca-add-keypair mykey &gt; mykey.priv
chmod 600 mykey.priv
#
image=&quot;ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz&quot;
wget http://smoser.brickies.net/ubuntu/ttylinux-uec/$image
uec-publish-tarball $image mybucket
#
wget http://uec-images.ubuntu.com/releases/10.04/release/ubuntu-10.04-server-uec-amd64.tar.gz
uec-publish-tarball ubuntu-10.04-server-uec-amd64.tar.gz mybucket
...OUTPUT...
Thu Aug 18 14:02:20 PDT 2011: ====== extracting image ======
Warning: no ramdisk found, assuming &#039;--ramdisk none&#039;
kernel : lucid-server-uec-amd64-vmlinuz-virtual
ramdisk: none
image  : lucid-server-uec-amd64.img
Thu Aug 18 14:02:29 PDT 2011: ====== bundle/upload kernel ======
Thu Aug 18 14:02:34 PDT 2011: ====== bundle/upload image ======
Thu Aug 18 14:03:12 PDT 2011: ====== done ======
emi=&quot;ami-00000002&quot;; eri=&quot;none&quot;; eki=&quot;aki-00000001&quot;;
...OUTPUT...
</pre>
<p>And running the instances:</p>
<pre class="wp-code-highlight prettyprint">
euca-run-instances ami-00000002 -k mykey -t m1.large
...OUTPUT...
RESERVATION r-1jj2a80v  cloudproject    default
INSTANCE    i-00000001  ami-00000002            scheduling  mykey (cloudproject, None)  0       m1.tiny2011-08-18T21:06:03Z unknown zone    aki-00000001    ami-00000000
...OUTPUT...
#
euca-describe-instances 
...OUTPUT...
RESERVATION r-1jj2a80v  cloudproject    default
INSTANCE    i-00000001  ami-00000002    10.0.0.2    10.0.0.2    building    mykey (cloudproject, SIX)   0   m1.tiny 2011-08-18T21:06:03Z    nova    aki-00000001    ami-00000000
...OUTPUT...
#
euca-describe-instances 
...OUTPUT...
RESERVATION r-1jj2a80v  cloudproject    default
INSTANCE    i-00000001  ami-00000002    10.0.0.2    10.0.0.2    running mykey (cloudproject, SIX)   0       m1.tiny 2011-08-18T21:06:03Z    nova    aki-00000001    ami-00000000
...OUTPUT...
#
euca-authorize -P tcp -p 22 default
ssh -i mykey.priv root@10.0.0.2
</pre>
<p>To add on additional hosts to support more VMs, you only need to install a few of the packages:</p>
<pre class="wp-code-highlight prettyprint">
apt-get install nova-compute nova-network nova-api
</pre>
<p>You do need that exact same <b>/etc/nova/nova.conf</b> file though.</p>
<p>Note:<br />
The default install of Glance expects the images that you&#8217;ve loaded up to be available on the local file system for every compute node at /var/lib/glance. Either NFS mount this directory from a central machine, or replicate the files underneath it to all your &#8220;compute hosts&#8221; when you upload a new image to be used in the virtual machines.</p>
<p>Also, the metadata URL needed for UEC images (169.154.169.154) may need help getting forwarded when running on a system with a single NIC. Two potential solutions: A) run nova-api on each of the compute nodes (quick and dirty) or B) specify the &#8211;ec2_dmz_host=$HOSTIP, and potentially invoke the command ip link set dev br100 promisc on to turn on promiscuous mode (per <a href="https://answers.launchpad.net/nova/+question/152528">https://answers.launchpad.net/nova/+question/152528</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/09/23/installing-openstack-diablo-release-nova-and-glance/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>OpenStack Diablo Release Meetup in Seattle</title>
		<link>http://www.rhonabwy.com/wp/2011/09/17/openstack-diablo-release-meetup-in-seattle/</link>
		<comments>http://www.rhonabwy.com/wp/2011/09/17/openstack-diablo-release-meetup-in-seattle/#comments</comments>
		<pubDate>Sat, 17 Sep 2011 18:09:03 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[openstack]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1134</guid>
		<description><![CDATA[If you&#8217;re into OpenStack, come join us on September 28th to celebrate the Diablo release with other stackers in Seattle. HP Cloud Services has graciously offered up their offices at 701 Pike St, Suite 1100, Seattle WA to host a meetup. If you&#8217;re planning on coming, please stop by the Meetup link at http://www.meetup.com/OpenStack-Seattle/events/33922932/ and [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://photos1.meetupstatic.com/photos/event/7/4/d/8/global_56129912.jpeg" alt="OpenStack Seattle Logo" /></p>
<p>If you&#8217;re into <a href="http://openstack.org/">OpenStack</a>, come <a href="http://www.meetup.com/OpenStack-Seattle/events/33922932/">join us</a> on September 28th to celebrate the Diablo release with other stackers in Seattle.</p>
<p>HP Cloud Services has graciously offered up their offices at <a href="http://maps.google.com/maps?q=701+Pike+Street%2C+Suite+1100%2C+Seattle%2C+WA">701 Pike St, Suite 1100, Seattle WA</a> to host a meetup.</p>
<p>If you&#8217;re planning on coming, please stop by the Meetup link at <a href="http://www.meetup.com/OpenStack-Seattle/events/33922932/">http://www.meetup.com/OpenStack-Seattle/events/33922932/</a> and RSVP for us so we can get a sense of who might be wandering by chat and say hello!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/09/17/openstack-diablo-release-meetup-in-seattle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>As the diablo milestone nears&#8230;</title>
		<link>http://www.rhonabwy.com/wp/2011/09/17/as-the-diablo-milestone-nears/</link>
		<comments>http://www.rhonabwy.com/wp/2011/09/17/as-the-diablo-milestone-nears/#comments</comments>
		<pubDate>Sat, 17 Sep 2011 17:10:25 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[openstack]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1131</guid>
		<description><![CDATA[In the openstack project, we&#8217;re nearing the &#8220;Diablo Milestone&#8221;. To a large respect, it&#8217;s the fourth release of OpenStack. Even as we close down on the tail end of this release, there has been and is a huge amount of movement in the project. We have Quantum and Glance shifting to use Github as a [...]]]></description>
				<content:encoded><![CDATA[<p>In the openstack project, we&#8217;re nearing the &#8220;Diablo Milestone&#8221;. To a large respect, it&#8217;s the fourth release of OpenStack. Even as we close down on the tail end of this release, there has been and is a huge amount of movement in the project.</p>
<p>We have <a href="https://github.com/openstack/quantum">Quantum</a> and <a href="https://github.com/openstack/glance">Glance</a> shifting to use Github as a repository, <a href="https://review.openstack.org/">new processes (that would be using Gerrit)</a> wrapped around GitHub to allow the project to have a &#8220;gated trunk&#8221; methodology, and lots of &#8220;motion&#8221; within the various projects. It&#8217;s pretty easy to see on Github, a little harder with launchpad (I just don&#8217;t have the tools handy to create the pretty graphs) &#8211; you can see the impact graphs for <a href="https://github.com/openstack/swift/graphs/impact">swift</a>, <a href="https://github.com/openstack/keystone/graphs/impact">keystone</a>, <a href="https://github.com/openstack/glance/graphs/impact">glance</a>, <a href="https://github.com/openstack/quantum/graphs/impact">quantum</a>, and <a href="https://github.com/4p/openstack-dashboard/graphs/impact">openstack-dashbaord</a> to see what I mean.</p>
<p>The shifting to Gerrit hasn&#8217;t been without it&#8217;s trials, but is coming along pretty well now. I really wish the GitHub folks had been a bit more amenable to putting in a field that external folks could use to store metadata about a pull request. Several folks from the OpenStack project (including myself) reached out to them about this, all rebuffed (nicely, but still). In fact, one of the suggestions I got back from the github&#8217;r support was &#8220;Why don&#8217;t you set up Gerrit?&#8221;</p>
<p>With the changes in core repository, lots of dependencies are shifting as well. Dashboard was broken a bit this week we kicked things around to get the dependencies to match the new locations, I think we&#8217;ve got all those pieces worked around now (pull request outstanding for openstack-dashboard). The other piece that really shifted and broke with these changes were the install scripts that we&#8217;ve been using to build and work on a developer&#8217;s environment. The cloudbuilder team at Rackspace recently created a whole new setup that works very nicely, so I think we&#8217;re going to drop our older scripts (based on over-extended versions of Vish&#8217;s excellent <a href="https://github.com/vishvananda/novascript/blob/master/nova.sh">nova.sh</a> script) and move to using their new &#8220;<a href="https://github.com/cloudbuilders/devstack/blob/master/stack.sh">stack.sh</a>&#8220;. (And yeah, of course we&#8217;ll want to mess with it ourselves, so I&#8217;ve forked it&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/09/17/as-the-diablo-milestone-nears/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mental gear shifting and reflections</title>
		<link>http://www.rhonabwy.com/wp/2011/09/10/mental-gear-shifting-and-reflections/</link>
		<comments>http://www.rhonabwy.com/wp/2011/09/10/mental-gear-shifting-and-reflections/#comments</comments>
		<pubDate>Sat, 10 Sep 2011 19:44:26 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1127</guid>
		<description><![CDATA[I&#8217;m in this weird mental space today. At work, I&#8217;ve been putting a lot of effort into building infrastructure &#8211; or more specifically, creating things that build infrastructure. While doing this over the past month, I&#8217;ve hit a few interesting realizations: That I primarily work in two modes: &#8220;gettin&#8217; shit done and stay the fuck [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m in this weird mental space today. At work, I&#8217;ve been putting a lot of effort into building infrastructure &#8211; or more specifically, creating things that build infrastructure. While doing this over the past month, I&#8217;ve hit a few interesting realizations:</p>
<p>That I primarily work in two modes: </p>
<ul>
<li>&#8220;gettin&#8217; shit done and stay the fuck outa my way&#8221;</li>
</ul>
<p>Which is the rude way of saying I&#8217;m hammering out basic frameworks, making sure the theories of how something will go together work, mostly ignoring error conditions and error checking, and testing is manual and just as I need it. I sketch out structures, build blocks on each other, and hopefully end up with my arch/bridge/sofware component/etc &#8211; whatever construct I&#8217;m making.</p>
<ul>
<li>&#8220;making it correct&#8221;</li>
</ul>
<p>In which I get totally OCD about understanding how something works &#8211; even something I&#8217;ve just created, down to creating tests to cover the logic, defining the failure conditions, and picking &#8220;just the right names&#8221; for objects, method calls, and general analogies.</p>
<p>The first shows more apparent progress &#8211; really short term progress &#8211; very quickly. But if that&#8217;s all you do, then I&#8217;m deep in the bug/muck in not very long at all. I&#8217;ve worked with a lot of people who don&#8217;t toggle between these modes &#8211; or I think even recognize them. I think that&#8217;s a bit of a tragedy, and something I encourage people to look at introspectively when they&#8217;re working for me.</p>
<p>Another realization:</p>
<blockquote><p>I have far, far less patience with executives and managers than I do with technical folks/line workers.</p></blockquote>
<p>The explanation into that is a bit more lengthy:</p>
<p>Being a good manager is very, very difficult. (Related reading that I highly recommend: <a href="http://managinghumans.com/">Managing Humans</a> and <a href="http://pragprog.com/book/rdbcd/behind-closed-doors">Behind Closed Doors</a>. Being a good executive (director or whatever up) is even harder. Doing either of those jobs without resorting to being a dick &#8211; keeping an objective and fair eye out is damn near impossible. The dirty truth (that most folks in management positions realize pretty darn quickly) is that you get more money and tend to make more progress if you ARE a dick/backstabber/amoral sonuvabitch. Much of the thinking at an executive level is about capital, progress, and rewards &#8211; where anything you control is capital, what you output is progress, and what you get from all this is rewards. If you want to know in a general sense why an executive is doing anything, find out what their reward structure is. The track from there is usually abundantly clear.</p>
<p>Oh &#8211; and as for that &#8216;progress&#8217; thing, that&#8217;s really naive of me to assert. Here&#8217;s the cynical me: </p>
<p>I&#8217;ve seen instances where output is status quo because that makes larger business sense: you want to keep some segment of the operation running solidly. Those are usually the pieces of the business that bore the shit out of me, and ironically the ones that are &#8220;looking for creative people&#8221; &#8211; usually to do mind-numbing work. </p>
<p>I&#8217;ve also seen directors having the output of one group to just fuck with other groups &#8211; not playing to win, but playing to have someone else loose. Why? Because that makes it easier for other resources you control  appear to be making progress (even if it&#8217;s not the case). I&#8217;ve almost always seen this at the director and above level; managers just don&#8217;t have enough resources under their control to assign some of them to screwing with other folks, and it&#8217;s very, very rare that you&#8217;re overtly rewarded for screwing over the other guy. Okay, maybe not in Microsoft if you&#8217;re working for the &#8220;office&#8221; or &#8220;windows&#8221; franchise components. There&#8217;s another company (that I worked for directly &#8211; I haven&#8217;t worked at Microsoft) in which this pattern is abundant.</p>
<p>The end result of this cynicism (or realism, if you prefer) is that I have little patience with people whom I perceive as not &#8220;trying to make things better&#8221;. A bit idealistic of me, I know &#8211; a place where my idealism doesn&#8217;t match at all with reality. <a href="http://www.imdb.com/title/tt0327137/quotes?qt=qt0370315">A little quote</a> from a favorite movie (<a href="http://www.imdb.com/title/tt0327137/">Secondhand Lions</a>): </p>
<blockquote><p><a href="http://www.imdb.com/name/nm0000380/">Hub</a>: Sometimes the things that may or may not be true are the things a man needs to believe in the most. That people are basically good; that honor, courage, and virtue mean everything; that power and money, money and power mean nothing; that good always triumphs over evil; and I want you to remember this, that love&#8230; true love never dies. You remember that, boy. You remember that. Doesn&#8217;t matter if it&#8217;s true or not. You see, a man should believe in those things, because those are the things worth believing in.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/09/10/mental-gear-shifting-and-reflections/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crimson Steam</title>
		<link>http://www.rhonabwy.com/wp/2011/09/04/crimson-steam/</link>
		<comments>http://www.rhonabwy.com/wp/2011/09/04/crimson-steam/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 16:09:51 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[iPad]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1121</guid>
		<description><![CDATA[I snagged a copy of Crimson Steam (iTunes link) this past Friday, thinking it would be fun to play with over the labor day weekend. The game play is good, very good actually. It really uses the direct touch style interface of the iPad to good effect, while not trying to shim in a &#8220;virtual [...]]]></description>
				<content:encoded><![CDATA[<p>I snagged a copy of <a href="http://www.bungie.net/projects/aerospace/crimson/content.aspx?link=crimson_about" title="Crimson Steam">Crimson Steam</a> (<a href="http://itunes.apple.com/us/app/crimson-steam-pirates/id438053238?mt=8">iTunes link</a>) this past Friday, thinking it would be fun to play with over the labor day weekend. The game play is good, very good actually. It really uses the direct touch style interface of the iPad to good effect, while not trying to shim in a &#8220;virtual joystick&#8221; or the like. It ends up with a turn based sort of effect that&#8217;s vaguely reminiscent of old-school miniatures gaming.</p>
<p>But there is something about this game that just really annoys the crap out of me. The music theme is a (very!) thinnly veiled rip off from the Pirates of the Carribean theme. Its not the same, but its so close as to be nearly identical in my head. And that theme has been SO overworked in my hearing that I just want it to go away. I get that the <a href="http://harebrained-schemes.com/crimson/">harebrained folks</a> were wanting to (I think, positively) riff on the genre, and that&#8217;s reasonably cool &#8211; but I&#8217;d really hoped for music that enhanced the game, rather than a piece which, probably because of my over exposure to it, pisses me off rather than adds. The game itself was pretty new and interesting for the gameplay &#8211; I wish they&#8217;d taken the trouble to make the music something of their own rather than relying on a &#8220;common theme&#8221; that most people will recognize to try and garner some emotion towards their game.</p>
<p>The artwork is a bit overdone for my tastes as well, but maybe it appeals to folks a bit more into steampunk than I am. It&#8217;s a fun, goofy genre &#8211; the artwork in the game reflects that.</p>
<p>The only other downside is that the game has a tendency to crash on me as well &#8211; usually right when you&#8217;re loading up a scenario to play it. I&#8217;m guessing they got a bit overexcited with the memory allocation or something, as restarting the iPad resolves it &#8211; makes me think they&#8217;re hitting upper limits on memory pressure, and just not dealing well when the iPad OS says &#8220;shrink or die!&#8221; under the covers. Their FAQ even tells you to do restart the iPad (or reinstall), which is an incredibly lame response. I hope they put a little more effort into tuning the memory use to avoid that crap in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/09/04/crimson-steam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making a board game</title>
		<link>http://www.rhonabwy.com/wp/2011/08/21/making-a-board-game/</link>
		<comments>http://www.rhonabwy.com/wp/2011/08/21/making-a-board-game/#comments</comments>
		<pubDate>Sun, 21 Aug 2011 17:39:45 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1113</guid>
		<description><![CDATA[It&#8217;s been too long, so I&#8217;m diving back into IOS development and making a board game. I have a test app (not even close to the final thing) for working out the UI pieces of the game that I just got to a reasonable baseline (i.e. it builds, runs on iPhone and iPad, and can [...]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s been too long, so I&#8217;m diving back into IOS development and making a board game. I have a test app (not even close to the final thing) for working out the UI pieces of the game that I just got to a reasonable baseline (i.e. it builds, runs on iPhone and iPad, and can be OTA updated with <a href="https://testflightapp.com/">TestFlight</a>).</p>
<p><a href="http://www.rhonabwy.com/wp/2011/08/21/making-a-board-game/gameboard/" rel="attachment wp-att-1112"><img src="http://www.rhonabwy.com/wp/wp-content/uploads/2011/08/gameboard-231x300.png" alt="" title="gameboard" width="231" height="300" class="aligncenter size-medium wp-image-1112" /></a></p>
<p>The game is <a href="http://en.wikipedia.org/wiki/Tafl_games">Hnefatafl</a> &#8211; not quite an ancestor of chess, but somewhat related. The board is 11&#215;11, and the game is unusual in that it&#8217;s an asymmetric game. It&#8217;s harder to win as one player than the other.</p>
<p>I first learned about this game through a book (the <a href="http://en.wikipedia.org/wiki/Mabinogion">Mabinogion</a>) that had a reference to a game called Gwyddbwyll (from &#8216;the dream of rhonabwy&#8217; &#8211; see how this crazy stuff all ties together?). Nobody really knows the details of gwyddbwyll, but there&#8217;s some reference to say its related to other games from that era &#8211; Irish and Welsh, all of which seem to be the asymmetric &#8220;save the king&#8221; tafl games.</p>
<p>Right now I&#8217;m building this on iPad and iPhone, but I&#8217;m not sure if I&#8217;ll release it under the iPhone &#8211; only because the squares are <i>so damned small</i> on that interface. I have a few ideas for how I want to make the interface function, and once I get beyond that I&#8217;m going to aim to make it a turn-based multiplayer game using Apple&#8217;s <a href="http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/GameKit_Guide/GameCenterOverview/GameCenterOverview.html">GameKit</a> (just an excuse to use the new stuff, course). A multi-player only game seemed kind of limiting though, so I purchased a book on game AI (<a href="http://www.amazon.com/gp/product/0123747317/ref=pd_lpo_k2_dp_sr_1">Artificial Intelligence for games</a>) so that I could make a reasonable single-player game. It&#8217;s a darned good book &#8211; so we&#8217;ll see how I do implementing some of those algorithms in Objective-C. I bought the whole book for Chapter 8 (<i>Board Games</i>), and don&#8217;t regret a penny of the purchase.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/08/21/making-a-board-game/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Functional testing with Lettuce and Fabric</title>
		<link>http://www.rhonabwy.com/wp/2011/08/10/functional-testing-with-lettuce-and-fabric/</link>
		<comments>http://www.rhonabwy.com/wp/2011/08/10/functional-testing-with-lettuce-and-fabric/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 17:08:23 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1109</guid>
		<description><![CDATA[After the launch of Nebula, from which I think I&#8217;m mostly recovered, I&#8217;ve been thinking about and working on ways to allow us to accelerate development. Our team has done a fair bit of work on the Openstack Dashboard, an incubating project within OpenStack, and we have a couple of internal http based interfaces for [...]]]></description>
				<content:encoded><![CDATA[<p>After the launch of <a href="http://www.nebula.com/">Nebula</a>, from which I think I&#8217;m mostly recovered, I&#8217;ve been thinking about and working on ways to allow us to accelerate development. Our team has done a fair bit of work on the Openstack Dashboard, an incubating project within OpenStack, and we have a couple of internal http based interfaces for our own pieces. </p>
<p>We have unit testing up and running, and like most projects a few of those tests are more &#8220;functional&#8221; or &#8220;integration&#8221; tests than actually unit tests, but really the project&#8217;s been pretty darn good about keeping those separate. As it turns out, the Junit framework is truly awesome for fast, quick tests &#8211; but when you start to step into functional testing you want just a touch more linearity to the testing. The unit test frameworks that I&#8217;ve run into (<a href="http://readthedocs.org/docs/nose/en/latest/">nosetests</a>, <a href="http://docs.python.org/library/unittest.html">unittest2</a>) don&#8217;t have much in their mechanisms that allow you to set up longer, repeated sequences or flows, so it was time to look around for what else might work there. (sidenote: If you know of some mechanisms that do longer, sequential tests and are based around <a href="http://docs.python.org/library/unittest.html">unittest2</a> or <a href="http://readthedocs.org/docs/nose/en/latest/">nose</a>, I&#8217;d love it hear about it! I&#8217;ll freely admit to not having searched every corner there&#8230;)</p>
<p>I&#8217;ve been watching and reading quite a bit on <a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">BDD</a> and the <a href="http://cukes.info/">cucumber framework</a> for testing applications, so I thought it was time to try it out. Of course, being more of a python geek than a ruby geek, I&#8217;d heard about <a href="http://lettuce.it/">Lettuce</a>, which is either a straight up port, or incredibly headily inspired by Cucumber.</p>
<p>Getting started with it was incredibly easy. Everything we&#8217;re doing is working from a virtualenv (which I highly recommend for development!), so I just added lettuce to the pip-requires list and it was pretty much ready to go.</p>
<p>In setting up lettuce, I probably spent as much time knocking together a quick &#8220;functional_tests.py&#8221; script as anything &#8211; making it responsible for the sequence of testing. The whole point there was to make a single script that could be run, returning an exit code that meant success or failure for the whole set, so it could be plugged into our local instance of Jenkins.</p>
<p>The core of <a href="https://gist.github.com/1137357">that fabric script</a> is really just simple fabric commands to set up, clean, and push code to a remote node. I ended up adding a script to our local repository to start up services on the far-end for functional testing &#8211; <a href="https://gist.github.com/1137366">testsetup.sh</a> &#8211; that runs the various pieces under &#8220;screen&#8221; &#8211; which makes it super easy to see what&#8217;s happened when something goes awry.</p>
<p><script src="https://gist.github.com/1137357.js"> </script></p>
<p><script src="https://gist.github.com/1137366.js"> </script></p>
<p>You&#8217;ll notice at the very end of that functional test script, I invoke &#8220;lettuce&#8221; on the local machine. That takes care of running the actual test sequences. The documentation for lettuce is pretty reasonable, so I recommend walking through that tutorial for a quick understanding. The super-basic gists is that lettuce uses a DSL that you basically create as you go along, and ends up being rather highly customized to your testing setup. You put together files in a &#8220;features&#8221; directory, and they use &#8220;steps.py&#8221; in that same directory to do what&#8217;s needed. The pattern that I&#8217;ve been using (and which seemed to be implied) was to use the &#8220;world&#8221; object in lettuce as a sort of black-board to get and store data as you walk through the steps in lettuce. There&#8217;s deeper integration into Django based projects (my example was using a little <a href="http://flask.pocoo.org/">Flask</a> based application run with <a href="http://gunicorn.org/">gunicorn</a>).</p>
<p>The key to setting up the functional testing was taking advantage of the file &#8220;<a href="https://gist.github.com/1137390">terrain.py</a>&#8220;, which lettuce uses to do global setup, and setup/teardown around steps, scenarios, features, or the whole shebang. Turns out I had several options for how to reach out and walk through the remote application, so I chose to use twill, although I could clearly have used the local test_client() with Flask, or even the web_driver setup from Selenium to drive Firefox.</p>
<p><script src="https://gist.github.com/1137390.js"> </script></p>
<p>One of the nicer things that I found while walking through setting this up was that I could write up a feature file and run lettuce, and it gave me really pleasant &#8220;this isn&#8217;t implemented yet&#8221; output that I could use to expand steps.py. For example, I created &#8220;<a href="https://gist.github.com/1137413">example.feature</a>&#8221; in the features directory:</p>
<p><script src="https://gist.github.com/1137413.js"> </script></p>
<p>and then ran &#8220;lettuce&#8221; and got the following <a href="https://gist.github.com/1137418">output</a>:</p>
<p><script src="https://gist.github.com/1137418.js"> </script></p>
<p>As you can see, it&#8217;s basically giving you the code to add to steps.py to make this work. As I went, I found myself refactoring steps.py to use some of lettuce more advanced mechanisms &#8211; regular expressions and grouping steps together in sequences. And to make sure I don&#8217;t leave you completely in the dark about setting up and using <a href="https://gist.github.com/1137441">steps.py</a>, here&#8217;s a snippet from my growing file.</p>
<p><script src="https://gist.github.com/1137441.js"> </script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/08/10/functional-testing-with-lettuce-and-fabric/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Always On Applications, personal style</title>
		<link>http://www.rhonabwy.com/wp/2011/08/06/always-on-applications-personal-style/</link>
		<comments>http://www.rhonabwy.com/wp/2011/08/06/always-on-applications-personal-style/#comments</comments>
		<pubDate>Sat, 06 Aug 2011 20:37:07 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1105</guid>
		<description><![CDATA[Almost a year ago I wrote a bit about wanting &#8220;Always on&#8221; applications. I started out just sort of complaining about the difficultly with current computing devices, and then looked to the future with cloud computing and the price points to enable those sorts of applications. This morning, I found a link that adds a [...]]]></description>
				<content:encoded><![CDATA[<p>Almost a year ago I wrote a bit about wanting &#8220;Always on&#8221; applications. <a href="http://www.rhonabwy.com/wp/2010/09/19/the-always-on-for-desktop-apps/">I started out just sort of complaining</a> about the difficultly with current computing devices, and then <a href="http://www.rhonabwy.com/wp/2010/09/20/more-always-on-applications-in-the-cloud/">looked to the future with cloud computing and the price points to enable those sorts of applications</a>.</p>
<p>This morning, I found a link that adds a new dimension into place: <a href="http://www.raspberrypi.org/">Raspberry Pi</a>. <a href="http://en.wikipedia.org/wiki/Raspberry_Pi">Wikipedia has a good description of the details of the device</a>, and there&#8217;s a BBC interview that shows it and gets into a nice overview.</p>
<p>It&#8217;s the price point of this device with the capabilities that changes the game a bit. It&#8217;s a computer the size of a tin of mints, with a processor capable of easily running higher level languages &#8211; python, ruby, java, whatever. There&#8217;s a lot out there now (<a href="http://www.arduino.cc/">Arduino</a>) that is a roughly similar cost and form factor, but programming it requires working in C or <a href="http://arduino.cc/en/Reference/HomePage">C-like languages</a> and some tools to get it all together. </p>
<p>Raspberry Pi BBC Interview:<br />
<iframe width="560" height="349" src="http://www.youtube.com/embed/pQ7N4rycsy4" frameborder="0" allowfullscreen></iframe></p>
<p>While the interview and foundation talk to making low-cost computers available to kids, I think this kind of device has a much broader potential in personal computing. The tech specs of this device make it very similar to the computing power available in the iPad or iPhones. And while the first generation of this device is missing some things I&#8217;d like to see default (a networking port), it&#8217;s easily added with a USB hub. The device is also incredibly low power &#8211; so I could imagine a shoe-box sized container of these running a 10x the amount of compute, and generating less heat (using less power) than your average dell desktop.</p>
<p>For an always-on application, I want something that&#8217;s not drawing a lot of power and could conceivably run unattended in the closet all day and night. This enables it at a new, lower price point (~$25 compared to a <a href="http://hawkboard.wordpress.com/">Hawkboard SBC</a> at ~$90). Now that&#8217;s cheaper (for the moment), than running an instance up on a cloud server&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/08/06/always-on-applications-personal-style/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Artificial Intelligence for Games, Second Edition</title>
		<link>http://www.rhonabwy.com/wp/2011/07/16/artificial-intelligence-for-games-second-edition/</link>
		<comments>http://www.rhonabwy.com/wp/2011/07/16/artificial-intelligence-for-games-second-edition/#comments</comments>
		<pubDate>Sat, 16 Jul 2011 19:53:58 +0000</pubDate>
		<dc:creator>Joe</dc:creator>
				<category><![CDATA[Geekstuff]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Ranting and Reflections]]></category>

		<guid isPermaLink="false">http://www.rhonabwy.com/wp/?p=1101</guid>
		<description><![CDATA[I&#8217;ve been thinking it&#8217;s time to cobble another IOS app up for sale, not just fiddle around with open source client apps (which is a lot of the IOS work I&#8217;ve been doing lately). So I found a board game idea that I liked, and thought I&#8217;d make a stab of doing it &#8211; maybe [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been thinking it&#8217;s time to cobble another IOS app up for sale, not just fiddle around with open source client apps (which is a lot of the IOS work I&#8217;ve been doing lately). So I found a board game idea that I liked, and thought I&#8217;d make a stab of doing it &#8211; maybe using some of the new IOS5 features for a multiplayer turn-based game.</p>
<p>As I got into the game, noodling on the design and how the interaction would work, I came to the realization that I really would like to have a reasonable single player game as well, and that I didn&#8217;t have a clue about how to do board-game AI to make a good game experience.</p>
<p>After looking around through a pile of game AI books, I came across &#8220;<a href="http://www.amazon.com/Artificial-Intelligence-Games-Second-Millington/dp/0123747317">Artificial Intelligence for Games, Second Edition</a>&#8220;. Heavy book, hardback &#8211; some $80 if you pick it up outside of Amazon&#8217;s discount mechanisms. It looked good after a glance-through and minimal reading, so I took it home to dig in depth. I&#8217;m really glad I did!</p>
<p>This book does an excellent job of describing the AI algorithms in pseudo good and good ole english, as opposed to many which seem to be littered with mostly un-parse-able fragments of C++. They reference a number of modern games, but rather than catalog &#8220;these used this type of AI, the others didn&#8217;t&#8221; (which I saw in a number of books), they took some time to explain the tradeoffs in choosing the AI mechanism in the game, even if they didn&#8217;t have the &#8220;why&#8221; of the game designer to pull from.</p>
<p>I liked it enough to put up a review on Amazon, and hey &#8211; I&#8217;m writing this too. If you&#8217;re looking for a good overview of AI algorithms and how they work, I recommend the book.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rhonabwy.com/wp/2011/07/16/artificial-intelligence-for-games-second-edition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
