<?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>Crowbar Archives &#8211; Structured Procrastination</title>
	<atom:link href="https://blog.adamspiers.org/tag/crowbar/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.adamspiers.org/tag/crowbar/</link>
	<description>because there&#039;s always something more interesting than what you should be doing</description>
	<lastBuildDate>Thu, 18 Dec 2014 13:26:37 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://blog.adamspiers.org/wp-content/uploads/2018/12/cropped-IMG_20160907_193859-PANO-c-7-32x32.jpg</url>
	<title>Crowbar Archives &#8211; Structured Procrastination</title>
	<link>https://blog.adamspiers.org/tag/crowbar/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>How to build an OpenStack cloud from SUSEcon&#8217;s free USB stick handouts</title>
		<link>https://blog.adamspiers.org/2014/12/11/susecon-usb-stick-howto/</link>
					<comments>https://blog.adamspiers.org/2014/12/11/susecon-usb-stick-howto/#comments</comments>
		
		<dc:creator><![CDATA[Adam]]></dc:creator>
		<pubDate>Thu, 11 Dec 2014 14:28:00 +0000</pubDate>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[appliance]]></category>
		<category><![CDATA[Crowbar]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[OpenStack]]></category>
		<category><![CDATA[SLES]]></category>
		<category><![CDATA[suse]]></category>
		<category><![CDATA[SUSEcon]]></category>
		<guid isPermaLink="false">http://blog.adamspiers.org/?p=1182</guid>

					<description><![CDATA[<p>Once again, SUSEcon was a blast! Thanks to everyone who helped make it such a great success, especially all our customers and partners who attended. If you attended the final Thursday keynote, you should have been given a free USB stick preloaded with a bootable SUSE Cloud appliance. And if you missed out or couldn&#8217;t [&#8230;]</p>
<p>The post <a href="https://blog.adamspiers.org/2014/12/11/susecon-usb-stick-howto/">How to build an OpenStack cloud from SUSEcon&#8217;s free USB stick handouts</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p> Once again, <a href="http://www.susecon.com/">SUSEcon</a> was a blast!  Thanks to everyone who helped make it such a great success, especially all our customers and partners who attended. </p>
<p> If you attended the final Thursday keynote, <a href="http://youtu.be/nulEm8wdPKw?t=1m45s">you should have been given a free USB stick preloaded with a bootable SUSE Cloud appliance</a>.  And if you missed out or couldn&#8217;t attend, <a href="http://cdn.novell.com/cached/video/2014/suse/cloud4-admin.x86_64-0.2.1-Build3.15.install.iso">download a copy here</a>!  This makes it possible for anyone to build an OpenStack cloud from scratch extremely quickly and easily.  (In fact, it&#8217;s almost identical to the appliance we used a few weeks ago to <a href="http://blog.adamspiers.org/2014/11/05/ruler-of-the-stack/">win the &#8220;Ruler of the Stack&#8221; competition at the OpenStack summit in Paris</a>.) </p>
<p> <a href="http://youtu.be/nulEm8wdPKw?t=1m45s">Erin explained on stage at a high-level what this appliance does</a>, but below are some more specific technical details which may help in case you haven&#8217;t yet tried it out. </p>
<p> The appliance can be booted on any physical or virtual 64-bit x86 machine &#x2026; but before we start! &#8211; if you would like try running the appliance in a VM using either KVM or VirtualBox, then there is an <b>even easier alternative which uses <a href="https://www.vagrantup.com/">Vagrant</a> to reduce the whole setup to a one-line command</b>.  If you like the sound of that, stop reading and <a href="https://github.com/SUSE-Cloud/suse-cloud-vagrant/blob/master/demos/README.md">go here instead</a>.  However if you want to try it on bare metal or with a different hypervisor such as VMware or HyperV, read on! </p>
<p><span id="more-1182"></span></p>
<div id="outline-container-sec-1" class="outline-2">
<h2 id="sec-1">Requirements</h2>
<div class="outline-text-2" id="text-1">
<p> You&#8217;ll need the following: </p>
<ul class="org-ul">
<li>
<p> At least three physical or virtual 64-bit x86 machines, each with at least 2GB RAM and 8GB disk, and no valuable data on any of the attached disks: </p>
<ul class="org-ul">
<li>one admin node running the Crowbar deployment tool which will provision the other nodes from scratch,
</li>
<li>at least one controller node which will run OpenStack infrastructure services, and
</li>
<li>at least one compute node which will host VM instances within the cloud.  (If this compute node is a VM, then the VM instances in the cloud will have to be run either using KVM nested virtualization, or QEMU software virtualization which is slower but good enough for &#8220;kicking the tires&#8221;.)
</li>
</ul>
</li>
<li>
<p> A private IPv4 network which all the machines must be connected to. <i>Setting this up is the only potentially tricky bit of the whole exercise.</i>  By default the network in question needs to be <code>192.168.124.0/24</code> <b>with no DHCP server enabled</b>, so: </p>
<ul class="org-ul">
<li>if you are installing the appliance in a VM, you should be able to set up a NAT or host-only virtual network and configure your hypervisor so that it does not serve DHCP on that network, or
</li>
<li>if you are installing on bare metal, ensure there is no DHCP server active on that <a href="http://en.wikipedia.org/wiki/OSI_model#Layer_2:_data_link_layer">L2 segment</a>.
</li>
</ul>
</li>
<li>
<p> Another machine (physical or virtual) with a modern web browser on the same private IPv4 network. </p>
</li>
</ul>
</div>
</div>
<div id="outline-container-sec-2" class="outline-2">
<h2 id="sec-2">Installing the appliance</h2>
<div class="outline-text-2" id="text-2">
<p> Attach the bootable USB media (physical or virtual), and boot the machine.  This will automatically install a SUSE Cloud Admin Node onto the disk.  <b>Caution: this will wipe any pre-existing OS</b>, so only use it on a spare machine or freshly-created VM, with no valuable data on any of the attached disks! </p>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-destroy-confirmation.png" style="width: 400px; margin: 0 auto; display: block;" alt="disk-destroying confirmation dialog box"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-destroy-confirmation.png" alt="disk-destroying confirmation dialog box" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> After confirming you are OK to wipe all existing data on the disk, the appliance will be written to disk and then booted.  Shortly after, YaST will appear, allowing you to configure: </p>
<ul class="org-ul">
<li>which keyboard layout you want,
</li>
<li>what password to use for the <code>root</code> user,
</li>
</ul>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-password.png" style="width: 300px; margin: 0 auto; display: block;" alt="root password configuration dialog box"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-password.png" alt="root password configuration dialog box" style="width: 300px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<ul class="org-ul">
<li>what hostname and domain name to use (the defaults are fine),
</li>
</ul>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-hostname.png" style="width: 300px; margin: 0 auto; display: block;" alt="hostname/DNS configuration dialog box"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-hostname.png" alt="hostname/DNS configuration dialog box" style="width: 300px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<ul class="org-ul">
<li>the network setup (the default of <code>192.168.124.10/24</code> is recommended, otherwise you will also have to configure Crowbar prior to installation),
</li>
<li>the clock and time zone, and finally
</li>
<li>the NTP configuration (supplying an upstream NTP server is recommended but not required).
</li>
</ul>
</div>
</div>
<div id="outline-container-sec-3" class="outline-2">
<h2 id="sec-3">Logging in to the Admin Node</h2>
<div class="outline-text-2" id="text-3">
<p> Log in as <code>root</code> (with the password you specified above) either on the console or via <code>ssh root@192.168.124.10</code> if you have another machine configured to be on the same subnet. </p>
<p> Press <code>q</code> and then <code>y</code> to accept the beta EULA, which highlights that the appliance is partially based on unreleased code.  Please do not use it for production deployments! </p>
</div>
</div>
<div id="outline-container-sec-4" class="outline-2">
<h2 id="sec-4">Configuring Crowbar (optional)</h2>
<div class="outline-text-2" id="text-4">
<p> Crowbar is very powerful and flexible in terms of network configuration.  If you have other traffic on the <a href="http://en.wikipedia.org/wiki/OSI_model#Layer_2:_data_link_layer">L2 network segment</a> (e.g. if you are using bare metal hardware and a physical network rather than a dedicated virtual network) then you should check that its default networks don&#8217;t conflict with your existing traffic.  To do this, type <code>yast crowbar</code>: </p>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-yast-crowbar.png" style="width: 400px; margin: 0 auto; display: block;" alt="how to launch the YaST Crowbar module"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-yast-crowbar.png" alt="how to launch the YaST Crowbar module" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> and select the <code>Networks</code> tab: </p>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-crowbar-net-config.png" style="width: 400px; margin: 0 auto; display: block;" alt="Crowbar network configuration dialog"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-crowbar-net-config.png" alt="Crowbar network configuration dialog" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> From here you can examine and change the networks Crowbar will use. Some are only used when various options are selected later on, but at a minimum, <code>admin</code>, <code>nova_fixed</code>, and <code>nova_floating</code> will all be used.  For more information, see the <a href="https://www.suse.com/documentation/suse-cloud4/book_cloud_deploy/data/sec_depl_req_network.html">Networking section of the SUSE Cloud Deployment Guide</a>. </p>
</div>
</div>
<div id="outline-container-sec-5" class="outline-2">
<h2 id="sec-5">Installing SUSE Cloud</h2>
<div class="outline-text-2" id="text-5">
<p> From the shell prompt, type <code>screen go</code> to initiate the installation of SUSE Cloud.  This will take several minutes. </p>
</div>
</div>
<div id="outline-container-sec-6" class="outline-2">
<h2 id="sec-6">Exploring the Crowbar web interface</h2>
<div class="outline-text-2" id="text-6">
<p> On another machine on the same network as the machine running the now-installed appliance, start a browser, and navigate to <a href="http://192.168.124.10:3000/">http://192.168.124.10:3000/</a> (adjust the IP accordingly if you changed the <code>admin</code> network above). </p>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-crowbar-web-UI.png" style="width: 400px; margin: 0 auto; display: block;" alt="Crowbar web UI"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-crowbar-web-UI.png" alt="Crowbar web UI" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
</div>
</div>
<div id="outline-container-sec-7" class="outline-2">
<h2 id="sec-7">PXE-boot some other nodes</h2>
<div class="outline-text-2" id="text-7">
<p> Now simply PXE-boot your other nodes.  (Typically this requires PXE-booting to be enabled in the BIOS, and/or manually selecting it from the BIOS boot menu which is often accessible by hitting the F11 key or similar during boot.) </p>
<p> This will run a small inventory ramdisk image on each one to detect its hardware and report the discovery back to Crowbar, without touching the node&#8217;s local disk(s).  Each node will then appear in the Crowbar web UI, and sit in an idle loop whilst awaiting task allocation via Crowbar: </p>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-node1-discovered.png" style="width: 400px; margin: 0 auto; display: block;" alt="Crowbar web UI with new node discovered"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-node1-discovered.png" alt="Crowbar web UI with new node discovered" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> Clicking on that node will show the results of the automatic hardware inventorying, and give us the option to allocate the node: </p>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-view-node1.png" style="width: 400px; margin: 0 auto; display: block;" alt="viewing the newly discovered node in Crowbar's web UI"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-view-node1.png" alt="viewing the newly discovered node in Crowbar's web UI" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> When editing the node, we can give it a more human-friendly alias (e.g. <code>node1</code>), and then click Allocate to install a minimal SLES OS: </p>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-edit-node1.png" style="width: 400px; margin: 0 auto; display: block;" alt="editing the newly discovered node in Crowbar's web UI"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-edit-node1.png" alt="editing the newly discovered node in Crowbar's web UI" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> A full OS will be automatically installed on the node via <a href="http://doc.opensuse.org/projects/autoyast/">AutoYaST</a>: </p>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-autoyast-installation.png" style="width: 400px; margin: 0 auto; display: block;" alt="autoyast installation in progress"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-autoyast-installation.png" alt="autoyast installation in progress" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> When OS installation has finished, the console looks like this: </p>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-autoyast-complete.png" style="width: 400px; margin: 0 auto; display: block;" alt="autoyast installation completed"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-autoyast-complete.png" alt="autoyast installation completed" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> and then the node turns green in the web UI indicating that it&#8217;s ready to have roles assigned to it: </p>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-node1-ready.png" style="width: 400px; margin: 0 auto; display: block;" alt="Crowbar's web UI showing node1 as ready"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-node1-ready.png" alt="Crowbar's web UI showing node1 as ready" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> Multiple nodes can be installed via PXE/AutoYaST at the same time. </p>
</div>
</div>
<div id="outline-container-sec-8" class="outline-2">
<h2 id="sec-8">Deploying OpenStack via Crowbar barclamps</h2>
<div class="outline-text-2" id="text-8">
<p> By this point you should have at least two freshly-installed nodes managed by Crowbar (excluding the admin node itself which Crowbar runs on), in which case you are ready to deploy OpenStack via Crowbar&#8217;s barclamps, which can be found via the <code>Barclamps</code> drop-down in Crowbar&#8217;s web interface: </p>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-show-barclamps.png" style="width: 400px; margin: 0 auto; display: block;" alt="navigating to the OpenStack barclamps in Crowbar's web UI"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-show-barclamps.png" alt="navigating to the OpenStack barclamps in Crowbar's web UI" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> This process is relatively straightforward, and a full explanation can be found in <a href="https://www.suse.com/documentation/suse-cloud4/book_cloud_deploy/data/cha_depl_ostack.html">the corresponding chapter of the SUSE Cloud 4 Deployment Guide</a>. </p>
<p> However, it is also possible to automate the whole deployment from this point on, using Crowbar&#8217;s <code>batch</code> subcommand and an appropriately crafted <code>.yaml</code> file.  There are three sample <code>.yaml</code> files in <code>/root</code> on the admin node.  The simplest configuration reflected by these three files is <code>simple-cloud.yaml</code>, which assumes a single controller node and a single compute node, with aliases <code>controller1</code> and <code>compute1</code> respectively: </p>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-simple-cloud-dashboard.png" style="width: 400px; margin: 0 auto; display: block;" alt="simple 2-node cloud scenario shown by Crowbar's UI"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-simple-cloud-dashboard.png" alt="simple 2-node cloud scenario shown by Crowbar's UI" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> In this case, assuming your nodes are given the above aliases, you could set up the entire OpenStack cloud with this single command run as <code>root</code> on the admin node: </p>
<pre class="brush: bash; title: ; notranslate">
crowbar batch --timeout 1800 build simple-cloud.yaml
</pre>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-batch-build-database.png" style="width: 400px; margin: 0 auto; display: block;" alt="starting crowbar batch build"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-batch-build-database.png" alt="starting crowbar batch build" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> It takes a while to apply all the barclamps, as can be seen from the timestamps whilst it&#8217;s running: </p>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-batch-build-cinder.png" style="width: 400px; margin: 0 auto; display: block;" alt="crowbar batch build on cinder"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-batch-build-cinder.png" alt="crowbar batch build on cinder" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> (The other two sample <code>.yaml</code> files are for a highly available control plane which assumes you have three nodes aliased <code>controller1</code>, <code>controller2</code>, and <code>compute1</code>.) </p>
<p> Once the barclamps are all applied, they should show as green in the Crowbar UI view: </p>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-barclamps-green.png" style="width: 400px; margin: 0 auto; display: block;" alt="Crowbar UI showing barclamps successfully applied"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-barclamps-green.png" alt="Crowbar UI showing barclamps successfully applied" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
</div>
</div>
<div id="outline-container-sec-9" class="outline-2">
<h2 id="sec-9">Exploring OpenStack</h2>
<div class="outline-text-2" id="text-9">
<p> From the main Nodes dashboard in the Crowbar web UI, click the <code>controller1</code> node (or whichever one you deployed OpenStack&#8217;s Dashboard to), and you will see a couple of links to the OpenStack Dashboard (a.k.a &#8220;Horizon&#8221;): </p>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-link-to-horizon.png" style="width: 400px; margin: 0 auto; display: block;" alt="Crowbar UI showing barclamps successfully applied"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-link-to-horizon.png" alt="Crowbar UI showing barclamps successfully applied" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> Click on <code>OpenStack Dashboard (admin)</code> and it will take you to the OpenStack Dashboard, where you can log in as the <code>admin</code> user with a password of (by default) <code>crowbar</code>: </p>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-horizon-login.png" style="width: 400px; margin: 0 auto; display: block;" alt="OpenStack Dashboard login page"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-horizon-login.png" alt="OpenStack Dashboard login page" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<div class="figure">
<p><a href="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-horizon.png" style="width: 400px; margin: 0 auto; display: block;" alt="OpenStack Dashboard compute overview page"><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/12/wpid-horizon.png" alt="OpenStack Dashboard compute overview page" style="width: 400px; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> Congratulations!  You have set up a full OpenStack cloud from scratch! Now you can start reading the SUSE Cloud <a href="https://www.suse.com/documentation/suse-cloud4/book_cloud_admin/data/book_cloud_admin.html">Admin</a> and <a href="https://www.suse.com/documentation/suse-cloud4/book_cloud_user/data/book_cloud_user.html">End User</a> guides to learn more about how to use OpenStack. </p>
</div>
</div>
<div id="outline-container-sec-10" class="outline-2">
<h2 id="sec-10">Support</h2>
<div class="outline-text-2" id="text-10">
<p> Whilst this bootable appliance is partially based on unreleased, unsupported code, we are still very interested to hear feedback from our customers and partners.  So while we (obviously!) cannot offer unlimited free support for it, if you post any questions / issues to the <a href="https://forums.suse.com/forumdisplay.php?65-SUSE-Cloud">SUSE Cloud web forum</a>, we will try to respond on a best-effort basis.  (And of course full commercial support for the <b>released</b> version of SUSE Cloud is <a href="https://www.suse.com/products/suse-cloud/">available</a> if you want it 😉 ) </p>
<p> As we say in the SUSE world, have a lot of fun! </p>
</div>
</div>
<p><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fblog.adamspiers.org%2F2014%2F12%2F11%2Fsusecon-usb-stick-howto%2F&#038;title=How%20to%20build%20an%20OpenStack%20cloud%20from%20SUSEcon%E2%80%99s%20free%20USB%20stick%20handouts" data-a2a-url="https://blog.adamspiers.org/2014/12/11/susecon-usb-stick-howto/" data-a2a-title="How to build an OpenStack cloud from SUSEcon’s free USB stick handouts"><img src="https://static.addtoany.com/buttons/share_save_171_16.png" alt="Share"></a></p><p>The post <a href="https://blog.adamspiers.org/2014/12/11/susecon-usb-stick-howto/">How to build an OpenStack cloud from SUSEcon&#8217;s free USB stick handouts</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.adamspiers.org/2014/12/11/susecon-usb-stick-howto/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>&#8220;Ruler of the Stack&#8221; competition, OpenStack summit, Paris</title>
		<link>https://blog.adamspiers.org/2014/11/05/ruler-of-the-stack/</link>
					<comments>https://blog.adamspiers.org/2014/11/05/ruler-of-the-stack/#comments</comments>
		
		<dc:creator><![CDATA[Adam]]></dc:creator>
		<pubDate>Wed, 05 Nov 2014 18:32:00 +0000</pubDate>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[competition]]></category>
		<category><![CDATA[Crowbar]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[kiwi]]></category>
		<category><![CDATA[obs]]></category>
		<category><![CDATA[OpenStack]]></category>
		<category><![CDATA[openSUSE]]></category>
		<category><![CDATA[Paris]]></category>
		<guid isPermaLink="false">http://blog.adamspiers.org/?p=1154</guid>

					<description><![CDATA[<p>Today at the OpenStack summit here in Paris, we continued SUSE&#8217;s winning streak at the &#8220;Ruler of the Stack&#8221; competition 🙂 This time, the challenge from the OpenStack Foundation was to deploy an OpenStack cloud as quickly as possible which could withstand &#8220;attacks&#8221; such as one of the controller nodes being killed, and still keep [&#8230;]</p>
<p>The post <a href="https://blog.adamspiers.org/2014/11/05/ruler-of-the-stack/">&#8220;Ruler of the Stack&#8221; competition, OpenStack summit, Paris</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p> Today at the OpenStack summit here in Paris, we continued SUSE&#8217;s winning streak at <a href="https://communities.intel.com/community/itpeernetwork/datastack/blog/2014/05/11/prove-your-chops-rulethestack-at-openstack-summit">the &#8220;Ruler of the Stack&#8221; competition</a> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
<div class="figure">
<p><img decoding="async" src="http://blog.adamspiers.org/wp-content/uploads/2014/11/wpid-ruler-of-the-stack2-25.jpg" alt="ruler-of-the-stack2-25.jpg" width="30%" style="float: right" /> </p>
</p></div>
<p> This time, <a href="https://communities.intel.com/community/itpeernetwork/datastack/blog/2014/11/02/another-chance-to-prove-your-chops-rulethestack-at-openstack-summit-paris">the challenge</a> from the OpenStack Foundation was to deploy an OpenStack cloud as quickly as possible which could withstand &#8220;attacks&#8221; such as one of the controller nodes being killed, and still keep the OpenStack services and VM instances functional. </p>
<p> It was considerably more complex than <a href="https://communities.intel.com/community/itpeernetwork/datastack/blog/2014/06/11/the-first-ruler-of-the-stack-from-openstack-summit">the challenge posed by Intel at the Atlanta summit in May</a> which my teammate Dirk Müller (pictured right) won, since now we needed a minimum of two controller nodes clustered together, two compute nodes, and some shared or replicated storage.  So this time an approach deploying to a single node via a &#8220;quickstart&#8221; script was not an option, and we knew it would take a lot longer than 3 minutes 14 seconds. </p>
<p> However as soon as I saw the rules I thought we had a good chance to win with <a href="http://suse.com/cloud">SUSE Cloud</a>, for four reasons: </p>
<ol class="org-ol">
<li>We already released <a href="https://www.suse.com/company/press/2014/5/suse-brings-high-availability-to-private-clouds.html">the capability to automatically deploy highly available OpenStack clouds back in May, as an update to SUSE Cloud 3</a>.<sup><a id="fnr.1" class="footref" href="#fn.1">1</a></sup>
</li>
<li>With <a href="https://en.opensuse.org/Portal:KIWI">openSUSE&#8217;s KIWI Image System</a> and the <a href="http://openbuildservice.org/">Open Build Service</a>, our ability to build custom appliance images of product packages for rapid deployment is excellent, as already proved by Dirk&#8217;s victory in Atlanta.  KIWI avoids costly reboots by using <a href="http://en.wikipedia.org/wiki/Kexec"><code>kexec</code></a>.
</li>
<li>I have been working hard the last couple of months on reducing the amount of manual interaction during deployment to the absolute minimum, and this challenge was a perfect use case for harnessing these new capabilities.<sup><a id="fnr.2" class="footref" href="#fn.2">2</a></sup>
</li>
<li>The solution had to work within a prescribed set of VLANs and IP subnets, and <a href="http://crowbar.github.io/">Crowbar</a> (the deployment technology embedded in SUSE Cloud) is unique amongst current OpenStack deployment tools for its very flexible approach to network configuration.
</li>
</ol>
<p> I worked with Dirk late in our hotel the night before, preparing and remotely testing two bootable USB images which were custom-built especially for the challenge: one for the Crowbar admin server, and one for the controller and compute nodes. </p>
<p> The clock was started when we booted the first node for installation, and stopped when we declared the nodes ready for stress-testing by the judges.  It took us 53 minutes to prepare 6 servers: two admin servers (one as standby), two controllers, and two compute nodes running the KVM hypervisor.<sup><a id="fnr.3" class="footref" href="#fn.3">3</a></sup>  However we lost ~15 minutes simply through not realising that plugging a USB device directly into the server is far more performant than presenting virtual media through the remote console!  And there were several other optimizations we didn&#8217;t have time to make, so I think in future we could manage the whole thing under 30 minutes. </p>
<p> However the exercise was a lot of fun and also highlighted several areas where we can make the product better. </p>
<p> At least three other well-known combinations of OpenStack distribution and deployment tools were used by other competitors.  No-one else managed to finish deploying a cloud, so we don&#8217;t know how they would have fared against the HA tests.  Perhaps everyone was too distracted by all the awesome sessions going on at the same time <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
<p> I have to send a huge thank-you to Dirk whose expertise in several areas, especially building custom appliances for rapid deployment, was a massive help.  Also to Bernhard, Tom, and several other members of our kick-ass SUSE Cloud engineering team <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" />  And of course to Intel for arranging a really fun challenge.  I&#8217;m sure next time they&#8217;ll think of some great new ways to stretch our brains! </p>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">
<div class="footdef"><sup><a id="fn.1" class="footnum" href="#fnr.1">1</a></sup> </p>
<p class="footpara"> Automating deployment of an HA cloud presented a lot of architectural and engineering challenges, and I&#8217;m painfully aware that I still owe the OpenStack and Chef communities a long overdue blog post on this, as well as more information about <a href="https://github.com/crowbar/barclamp-pacemaker/">the code on github</a>. </p>
</div>
<div class="footdef"><sup><a id="fn.2" class="footnum" href="#fnr.2">2</a></sup> </p>
<p class="footpara"> The result is a virtualized Vagrant environment can <a href="https://github.com/SUSE-Cloud/suse-cloud-vagrant/tree/master/demos/HA/">deploy a fully HA environment in VMs from a simple one-line command</a>!  It is intended to be used by anyone who wants to quickly deploy/demo/test SUSE Cloud: developers, Sales Engineers, partners, and customers alike.  I also needed it for the hands-on workshop I co-presented with Florian Haas of <a href="http://www.hastexo.com/">Hastexo</a> fame (<a href="http://fghaas.github.io/openstacksummit2014-paris-automateddeployment">slides</a> and <a href="http://youtu.be/1ZdwIFPyMIs">video</a> now available), and also for an <a href="https://susecon2014.smarteventscloud.com/connect/sessionDetail.ww?SESSION_ID=7695">upcoming workshop</a> at <a href="http://www.susecon.com/">SUSEcon</a>. </p>
</div>
<div class="footdef"><sup><a id="fn.3" class="footnum" href="#fnr.3">3</a></sup> </p>
<p class="footpara"> Once the nodes were registered in Crowbar, we fed <a href="https://github.com/aspiers/suse-cloud-vagrant/blob/intel-ruler/kiwi/cloud-admin/source/root/root/NFS.yaml">a simple YAML file</a> into the new <a href="https://github.com/crowbar/barclamp-crowbar/pull/1147"><code>crowbar batch build</code> command</a> and it built the full cluster of OpenStack services in ~20 minutes. </p>
</div>
</div>
</div>
<p><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fblog.adamspiers.org%2F2014%2F11%2F05%2Fruler-of-the-stack%2F&#038;title=%E2%80%9CRuler%20of%20the%20Stack%E2%80%9D%20competition%2C%20OpenStack%20summit%2C%20Paris" data-a2a-url="https://blog.adamspiers.org/2014/11/05/ruler-of-the-stack/" data-a2a-title="“Ruler of the Stack” competition, OpenStack summit, Paris"><img src="https://static.addtoany.com/buttons/share_save_171_16.png" alt="Share"></a></p><p>The post <a href="https://blog.adamspiers.org/2014/11/05/ruler-of-the-stack/">&#8220;Ruler of the Stack&#8221; competition, OpenStack summit, Paris</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.adamspiers.org/2014/11/05/ruler-of-the-stack/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
