<?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>cloud Archives &#8211; Structured Procrastination</title>
	<atom:link href="https://blog.adamspiers.org/tag/cloud/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.adamspiers.org/tag/cloud/</link>
	<description>because there&#039;s always something more interesting than what you should be doing</description>
	<lastBuildDate>Wed, 18 Sep 2019 11:32:40 +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>cloud Archives &#8211; Structured Procrastination</title>
	<link>https://blog.adamspiers.org/tag/cloud/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Improving trust in the cloud with OpenStack and AMD SEV</title>
		<link>https://blog.adamspiers.org/2019/09/13/improving-trust-in-the-cloud-with-openstack-and-amd-sev/</link>
					<comments>https://blog.adamspiers.org/2019/09/13/improving-trust-in-the-cloud-with-openstack-and-amd-sev/#respond</comments>
		
		<dc:creator><![CDATA[Adam]]></dc:creator>
		<pubDate>Fri, 13 Sep 2019 12:00:00 +0000</pubDate>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[AMD]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[coopetition]]></category>
		<category><![CDATA[OpenStack]]></category>
		<category><![CDATA[SEV]]></category>
		<guid isPermaLink="false">https://blog.adamspiers.org/?p=1871</guid>

					<description><![CDATA[<p>This post contains an exciting announcement, but first I need to provide some context! Ever heard that joke &#8220;the cloud is just someone else&#8217;s computer&#8221;? Of course it&#8217;s a gross over-simplification, but there&#8217;s more than a grain of truth in it. And that raises the question: if your applications are running in someone else&#8217;s data-centre, [&#8230;]</p>
<p>The post <a href="https://blog.adamspiers.org/2019/09/13/improving-trust-in-the-cloud-with-openstack-and-amd-sev/">Improving trust in the cloud with OpenStack and AMD SEV</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p> This post contains an exciting announcement, but first I need to provide some context! </p>
<p> Ever heard that joke &#8220;the cloud is just someone else&#8217;s computer&#8221;? </p>
<div class="figure">
<p><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/no-cloud-coffee-mug.jpg" alt="Coffee mug saying &quot;There is no cloud. It's just someone else's computer&quot;" title="There are T-shirts too ..." style="width: 50%; margin: 0 auto; display: block;" /> </p>
</p></div>
<p> Of course it&#8217;s a gross over-simplification, but there&#8217;s more than a grain of truth in it.  And that raises the question: <b>if your applications are running in someone else&#8217;s data-centre, how can you trust that they&#8217;re not being snooped upon, or worse, invasively tampered with?</b> </p>
<p> Until recently, the answer was &#8220;you can&#8217;t&#8221;.  Well, that&#8217;s another over-simplification.  You could design your workload to be tamperproof; for example even if individual mining nodes in Bitcoin or Ethereum are compromised, the blockchain as a whole will resist the attack just fine.  But there&#8217;s still the snooping problem. </p>
<div id="outline-container-org4c32b9b" class="outline-2">
<h2 id="org4c32b9b">Hardware to the rescue?</h2>
<div class="outline-text-2" id="text-org4c32b9b">
<p> However, there&#8217;s some good news on this front.  Intel and AMD realised this was a problem, and have both introduced new hardware capabilities to help improve the level to which cloud users can trust the environment in which their workloads are executed, e.g.: </p>
<ul class="org-ul">
<li>
<p> <a href="https://en.wikipedia.org/wiki/Zen_(microarchitecture)#Enhanced_security_and_virtualization_support">AMD SEV (Secure Encrypted Virtualization)</a> which can encrypt the memory of a running VM with a key which is only accessible to the owner of that VM.  This is done on-chip so that even if you have physical access to the machine, it makes it a lot harder to snoop in on the running VM<sup><a id="fnr.1" name="fnr.1" class="footref" href="#fn.1">1</a></sup>. </p>
<p> It can also provide the guest owner with an attestation which cryptographically proves that the memory was encrypted correctly and can only be decrypted by the owner. </p>
</li>
<li><a href="https://www.tomshardware.co.uk/intel-mktme-amd-memory-encryption,news-60766.html">Intel MKTME (Multi-Key Total Memory Encryption)</a> which is a similar approach.</li>
</ul>
<p> But even with that hardware support, there is the question to what degree anyone can trust public clouds run on proprietary technology. There is a growing awareness that Free (Libre) / Open Source Software tends to be inherently more secure and trustworthy, since its transparency enables unlimited peer review, and its openness allows anyone to contribute improvements. </p>
<p> And these days, <a href="https://www.openstack.org">OpenStack</a> is pretty much the undisputed king of the Open Source cloud infrastructure world. </p>
</div>
</div>
<div id="outline-container-org85d715d" class="outline-2">
<h2 id="org85d715d">An exciting announcement</h2>
<div class="outline-text-2" id="text-org85d715d">
<p> So I&#8217;m delighted to be able to announce a significant step forward in trustworthy cloud computing: as of this week, <b>OpenStack is now able to launch VMs with SEV enabled!</b> (Given the appropriate AMD hardware, of course.) </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-Horizon-flavor-metadata-2.png" title="The new hw:mem_encryption flavor extra spec. Click for full size." alt="The new hw:mem_encryption flavor extra spec" style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-Horizon-flavor-metadata-2-1.png" alt="The new hw:mem_encryption flavor extra spec" title="The new hw:mem_encryption flavor extra spec. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> The core functionality is all merged and will be in the imminent Train release.  You can read <a href="https://docs.openstack.org/nova/latest/admin/configuration/hypervisor-kvm.html#amd-sev-secure-encrypted-virtualization">the documentation</a>, and you will also find it mentioned in <a href="https://docs.openstack.org/releasenotes/nova/">the Nova Release Notes</a>. </p>
<p> While this is &#8220;only&#8221; an <a href="https://en.wikipedia.org/wiki/Minimum_viable_product">MVP</a> and far from the end of the journey (see below), it&#8217;s an important milestone in a strong partnership between my employer <a href="http://suse.com/">SUSE</a> and <a href="https://www.amd.com/">AMD</a>.  We started work on adding SEV support into OpenStack around a year ago: </p>
<div class="figure">
<p><a href="https://blueprints.launchpad.net/nova/+spec/amd-sev-libvirt-support" title="The original blueprint for integrating AMD SEV into nova. Click for full size." alt="The original blueprint for integrating AMD SEV into nova" style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-launchpad-blueprint-implemented.png" alt="The original blueprint for integrating AMD SEV into nova" title="The original blueprint for integrating AMD SEV into nova. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> This resulted in <a href="http://specs.openstack.org/openstack/nova-specs/specs/train/approved/amd-sev-libvirt-support.html">one of the most in-depth technical specification documentations I&#8217;ve ever had to write</a>, plus many months of intense collaboration on the code and several changes in design along the way. </p>
<div class="figure">
<p><a href="https://review.opendev.org/#/q/topic:bp/amd-sev-libvirt-support+status:merged" title="SEV code reviews. Click to view in Gerrit!" alt="SEV code reviews. Click to view in Gerrit!" style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-Gerrit-merged-patches.png" alt="SEV code reviews. Click to view in Gerrit!" title="SEV code reviews. Click to view in Gerrit!" style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> I&#8217;d like to thank not only my colleagues at SUSE and AMD for all their work so far, but also many members of the upstream OpenStack community, especially the <a href="https://wiki.openstack.org/wiki/Nova">Nova</a> team.  In particular I enjoyed fantastic support from the PTL (Project Technical Lead) Eric Fried, and several developers at Red Hat, which I think speaks volumes to how well <a href="https://en.wikipedia.org/wiki/Coopetition">the &#8220;coopetition&#8221; model</a> works in the Open Source world. </p>
<p> The rest of this post gives a quick tour of the implementation via screenshots and brief explanations, and then concludes with what&#8217;s planned next. </p>
<p><span id="more-1871"></span></p>
<p> OpenStack&#8217;s Compute service (nova) will automatically detect the presence of the SEV feature on any compute node which is configured to support it.  You can optionally configure how many slots are available on the memory controller for encryption keys.  One is used for each guest, so this effectively acts as the maximum number of guest VMs which can concurrently use SEV.  Here you can see the configuration of <a href="https://docs.openstack.org/nova/latest/configuration/config.html#libvirt.num_memory_encrypted_guests">this option</a>, and how nova handles the inventory.  Note that it also registers an SEV trait on the compute host, so that in the future if the cloud has a mix of hardware offering different guest memory encryption technologies, you&#8217;ll be able to choose which one you want for any given guest, if you need to. </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-compute-inventory-trait.png" title="Inventorying the SEV feature. Click for full size." alt="Inventorying the SEV feature." style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-compute-inventory-trait.png" alt="Inventorying the SEV feature." title="Inventorying the SEV feature. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> SEV can be enabled by the operator by adding a new <code>hw:mem_encryption</code> &#8220;extra spec&#8221; which is a property on nova&#8217;s <a href="https://docs.openstack.org/nova/latest/user/flavors.html">flavors</a>.  As already shown in the screenshot above, this can be done through Horizon, OpenStack&#8217;s web dashboard.  However it can also be set per-image via a similarly-named property <code>hw_mem_encryption</code>: </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-Horizon-image-metadata-4.png" title="Enabling SEV via image property in Horizon. Click for full size." alt="Enabling SEV via image property in Horizon." style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-Horizon-image-metadata-4.png" alt="Enabling SEV via image property in Horizon." title="Enabling SEV via image property in Horizon. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> and of course this can all be done via the command-line too: </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-flavor-image.png" title="Enabling SEV via CLI. Click for full size." alt="Enabling SEV via CLI. Click for full size." style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-flavor-image.png" alt="Enabling SEV via CLI. Click for full size." title="Enabling SEV via CLI. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> Notice the presence of a few other image properties which are crucial for SEV to function correctly.  (These are explained fully in the documentation.) </p>
<p> Once booted, an SEV VM instance looks and behaves pretty much like any other OpenStack VM: </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-Horizon-instances.png" title="SEV instances listed in Horizon. Click for full size." alt="SEV instances listed in Horizon" style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-Horizon-instances.png" alt="SEV instances listed in Horizon" title="SEV instances listed in Horizon. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> However there are <a href="https://docs.openstack.org/nova/latest/admin/configuration/hypervisor-kvm.html#impermanent-limitations">some limitations</a>, e.g. it cannot <i>yet</i> be live-migrated or suspended: </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-live-migrate-suspend-forbidden.png" title="Enabling SEV via flavor extra spec or image property. Click for full size." alt="Enabling SEV via flavor extra spec or image property" style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-live-migrate-suspend-forbidden.png" alt="Enabling SEV via flavor extra spec or image property" title="Enabling SEV via flavor extra spec or image property. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> Behind the scenes, nova takes care of quite a few important details in how the VM is configured in libvirt.  Firstly it performs sanity checks on the flavor and image properties.  Then it adds a crucial new <code>&lt;launchSecurity&gt;</code> element: </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-server-launchSecurity-XML.png" title="Enabling SEV via flavor extra spec or image property. Click for full size." alt="Enabling SEV via flavor extra spec or image property" style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-server-launchSecurity-XML.png" alt="Enabling SEV via flavor extra spec or image property" title="Enabling SEV via flavor extra spec or image property. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
<p> and also enables IOMMU for <code>virtio</code> devices: </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-server-iommu-XML.png" title="Enabling IOMMU for virtio devices. Click for full size." alt="Enabling IOMMU for virtio devices" style="width: 98%; margin: 0 auto; display: block;"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2019/09/SEV-CLI-server-iommu-XML.png" alt="Enabling IOMMU for virtio devices" title="Enabling IOMMU for virtio devices. Click for full size." style="width: 98%; margin: 0 auto; display: block;" /></a> </p>
</p></div>
</div>
</div>
<div id="outline-container-orgb46ad8b" class="outline-2">
<h2 id="orgb46ad8b">What&#8217;s next?</h2>
<div class="outline-text-2" id="text-orgb46ad8b">
<p> This area of technology is new and rapidly evolving, so there is still plenty of work left to be done, especially on the software side. </p>
<p> Of course we&#8217;ll be adding this functionality to <a href="https://www.suse.com/products/suse-openstack-cloud/">SUSE OpenStack Cloud</a>, initially as a technical preview for our customers to try out. </p>
<p> Probably the most important feature needed next on the SEV side is the ability to verify the attestation which cryptographically proves that the memory was encrypted correctly and can only be decrypted by the owner.  In addition specification of the work required to add support to OpenStack for Intel&#8217;s MKTME already <a href="https://review.opendev.org/#/c/666769/">started</a>, so I would expect that to continue. </p>
</div>
</div>
<div id="footnotes">
<h2 class="footnotes">Footnotes: </h2>
<div id="text-footnotes">
<div class="footdef"><sup><a id="fn.1" name="fn.1" class="footnum" href="#fnr.1">1</a></sup> </p>
<div class="footpara">
<p class="footpara"> There are still potential attacks, e.g. snooping unencrypted memory cache or CPU registers.  Work by AMD and others is ongoing to address these. </p>
</div>
</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%2F2019%2F09%2F13%2Fimproving-trust-in-the-cloud-with-openstack-and-amd-sev%2F&#038;title=Improving%20trust%20in%20the%20cloud%20with%20OpenStack%20and%20AMD%20SEV" data-a2a-url="https://blog.adamspiers.org/2019/09/13/improving-trust-in-the-cloud-with-openstack-and-amd-sev/" data-a2a-title="Improving trust in the cloud with OpenStack and AMD SEV"><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/2019/09/13/improving-trust-in-the-cloud-with-openstack-and-amd-sev/">Improving trust in the cloud with OpenStack and AMD SEV</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.adamspiers.org/2019/09/13/improving-trust-in-the-cloud-with-openstack-and-amd-sev/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Report from the OpenStack PTG in Dublin</title>
		<link>https://blog.adamspiers.org/2018/03/09/openstack-ptg-dublin/</link>
					<comments>https://blog.adamspiers.org/2018/03/09/openstack-ptg-dublin/#comments</comments>
		
		<dc:creator><![CDATA[Adam]]></dc:creator>
		<pubDate>Fri, 09 Mar 2018 18:30:00 +0000</pubDate>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[OpenStack]]></category>
		<guid isPermaLink="false">https://blog.adamspiers.org/?p=1599</guid>

					<description><![CDATA[<p>Last week I attended OpenStack&#8217;s PTG (Project Teams Gathering) in Dublin. This event happens every 6 months in a different city, and is a fantastic opportunity for OpenStack developers and upstream contributors to get together and turbo-charge the next phase of collaboration. I wrote a private report for my SUSE colleagues summarising my experience, but [&#8230;]</p>
<p>The post <a href="https://blog.adamspiers.org/2018/03/09/openstack-ptg-dublin/">Report from the OpenStack PTG in Dublin</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p> Last week I attended OpenStack&#8217;s <a href="https://www.openstack.org/ptg">PTG (Project Teams Gathering)</a> in Dublin.  This event happens every 6 months in a different city, and is a fantastic opportunity for OpenStack developers and upstream contributors to get together and turbo-charge the next phase of collaboration. </p>
<p> I wrote a private report for my SUSE colleagues summarising my experience, but then <a href="http://www.gazlene.net/dublin-ptg.html">Colleen posted her report publicly</a>, which made me realise that it would be far more in keeping with <a href="https://governance.openstack.org/tc/reference/opens.html">OpenStack&#8217;s Four Opens</a> to publish mine online.  So here it is! </p>
<p><span id="more-1599"></span></p>
<div id="outline-container-org8fff103" class="outline-2">
<h2 id="org8fff103">General observations</h2>
<div class="outline-text-2" id="text-org8fff103">
<p> The PTG was well-attended with just over 400 people from all over the world.  As with previous PTGs this felt like just the right size: enough to have most projects / organizations well represented, but not too big to prevent serendipitous meetings happening many times throughout the week, where I would just be wandering around and bump into exactly the right person I needed to talk to 🙂 </p>
<p> <a href="https://wiki.openstack.org/wiki/PTG/Rocky/Etherpads">All the etherpads are publicly available</a> in case you want to dive into the gory details. </p>
<p> IMHO <a href="https://git.openstack.org/cgit/openstack/ptgbot/tree/README.rst">the ptgbot</a> continued to work really well for adapting to the dynamic and fast-changing agenda.  I submitted a few patches to polish it further. </p>
<p> The &#8220;extreme&#8221; (for Ireland, anyway) weather, which was reportedly the heaviest snow in 40 years, caused a lot of disruption, not just for travel, but also that our conference venue in Croke Park Stadium was forced to shut on Thursday afternoon, rather than Friday evening as originally planned.  Luckily our amazing hotel, <a href="https://www.doylecollection.com/hotels/the-croke-park-hotel">The Croke Park</a>, stepped up to the plate and allowed us to continue the conference there.  It was quite a squash fitting everyone in, but somehow they managed it, and the ensuing organized mayhem had the unexpected side effect of building really strong comradery between everyone. </p>
<p> There was a <a href="https://twitter.com/e_monty/status/968658891507732481">piano-bar style sing-along night</a> (with OpenStack&#8217;s Executive Director <a href="https://twitter.com/jbryce">Jonathan Bryce</a> doing a great job on the piano), <a href="https://twitter.com/knelson92/status/969515964176969734">a board games night</a> &#x2026;  I think it was my colleague Keith Berger who shrewdly observed that it was like being on a cruise ship 🙂  Having the best Guinness in the world on tap probably helped too.  Check out <a href="https://twitter.com/hashtag/SnowpenStack">#SnowpenStack on Twitter</a> for some of the hilarious antics. </p>
<p> We managed a couple of SUSE team dinners and it was great to spend more time with teammates, especially the ones who are normally on a different continent 🙂 </p>
</div>
</div>
<div id="outline-container-org2cb7aa0" class="outline-2">
<h2 id="org2cb7aa0">Self-healing SIG</h2>
<div class="outline-text-2" id="text-org2cb7aa0">
<ul class="org-ul">
<li><a href="https://etherpad.openstack.org/p/self-healing-ptg-rocky">https://etherpad.openstack.org/p/self-healing-ptg-rocky</a></li>
</ul>
<p> My main reason for attending the PTG was bootstrapping <a href="https://blog.adamspiers.org/announcing-openstacks-self-healing-sig/">this new SIG which I founded a few months ago</a>.  We had a really good session filling Tuesday afternoon, with about 30 people attending. </p>
<div class="figure">
<p><a href="https://blog.adamspiers.org/wp-content/uploads/2018/03/self-healing-PTG-Dublin.jpeg" width="99%" align="center" alt="The subset of self-healing attendees brave enough to venture out into the cold" title="The subset of self-healing attendees brave enough to venture out into the cold"><img decoding="async" src="https://blog.adamspiers.org/wp-content/uploads/2018/03/self-healing-PTG-Dublin-50.jpeg" alt="The subset of self-healing attendees brave enough to venture out into the cold" width="99%" align="center" title="The subset of self-healing attendees brave enough to venture out into the cold" /></a> </p>
</p></div>
<p> There were discussions about various use cases, and some people are already keen to start work on use cases immediately.  We also had representatives from the <a href="https://wiki.openstack.org/wiki/API_SIG">API SIG</a>, including <a href="http://graham.hayes.ie/">Graham Hayes a.k.a. <code>mugsie</code></a> who is leading the new <a href="https://review.openstack.org/#/c/531456/">health-check API initiative</a>, and from OPNFV, since <a href="http://lists.openstack.org/pipermail/openstack-dev/2018-March/127956.html">we are trying to promote better sharing of work on automated testing of self-healing / HA functionality</a>.  (If you&#8217;re interested, please <a href="https://etherpad.openstack.org/p/extreme-testing-contacts">sign up here</a>!) </p>
<p> We agreed some concrete next steps, some of which I already started working on: </p>
<ul class="org-ul">
<li><a href="https://storyboard.openstack.org/#!/story/2001628">Populate our self-healing-sig repo with the standard Sphinx stuff and templates for use cases and specs</a></li>
<li><a href="https://storyboard.openstack.org/#!/story/2001639">Compile a list of contact info for self-healing stakeholders across the various projects / organizations</a></li>
<li>Start to visualize the architectural integration points between involved projects.</li>
<li>Start to document use cases and write specs for proposed work.</li>
</ul>
<p> You can follow all activity via <a href="https://storyboard.openstack.org/#!/project/917">the StoryBoard project</a>. </p>
<p> The only disappointment with this session was that no operators attended.  However I managed to coordinate with some people involved with <a href="https://etherpad.openstack.org/p/TYO-ops-meetup-2018">the Tokyo Ops meetup this week</a>, in order to gather feedback from ops, and we got a session slot booked in that agenda which happened yesterday.  Additionally I am speaking on self-healing and leading a discussion session on it at <a href="https://www.meetup.com/Openstack-London/events/247958746/">the London OpenStack Meetup next Monday</a>, so hopefully we&#8217;ll get some good feedback there too. </p>
</div>
</div>
<div id="outline-container-orgda7e8a1" class="outline-2">
<h2 id="orgda7e8a1">First Contact SIG</h2>
<div class="outline-text-2" id="text-orgda7e8a1">
<ul class="org-ul">
<li><a href="https://etherpad.openstack.org/p/FC_SIG_Rocky_PTG">https://etherpad.openstack.org/p/FC_SIG_Rocky_PTG</a></li>
</ul>
<p> I joined the contributor guide part of this session briefly to give some feedback and also organise collaboration on writing a quickstart guide for people who are used to GitHub and don&#8217;t know Gerrit, since I promised to write that after creating <a href="https://ethercalc.openstack.org/github-gerrit">a comparison matrix</a> in Denver, which provides a base for the guide. </p>
</div>
</div>
<div id="outline-container-org295e4bb" class="outline-2">
<h2 id="org295e4bb">StoryBoard</h2>
<div class="outline-text-2" id="text-org295e4bb">
<p> The Self-healing SIG <a href="http://lists.openstack.org/pipermail/openstack-sigs/2017-November/000180.html">previously agreed to use StoryBoard for tracking work</a>, not just to aid collaboration within the SIG, but also to help dogfood StoryBoard and provide feedback.  So I spent quite a bit of time with the StoryBoard folks giving feedback and brainstorming ideas for improving usability.  I also started work on a &#8220;Rosetta stone&#8221; matrix which aims to show the key differences between StoryBoard and other issue trackers people are used to, such as JIRA, Trello, GitHub, Bugzilla, Redmine etc.  Similarly to the approach with the GitHub / Gerrit matrix above, it could serve as the basis for a document which helps &#8220;port&#8221; people to StoryBoard from other issue trackers. </p>
</div>
</div>
<div id="outline-container-orgf78a52f" class="outline-2">
<h2 id="orgf78a52f">Fast-forward upgrades (FFU)</h2>
<div class="outline-text-2" id="text-orgf78a52f">
<ul class="org-ul">
<li><a href="https://etherpad.openstack.org/p/ffu-ptg-rocky">https://etherpad.openstack.org/p/ffu-ptg-rocky</a></li>
</ul>
<p> This was a really full session, with some good discussions.  Main points: </p>
<ul class="org-ul">
<li>It was agreed to form an Upgrade SIG, and <a href="https://governance.openstack.org/sigs/">this has now happened</a>.</li>
<li>AFAICS everyone is not yet on the same page about what FFU means exactly, especially regarding online migrations.  There is perhaps room for improvement in the <a href="https://governance.openstack.org/tc/reference/tags/index.html">governance tags</a> provided for tracking upgradability (<a href="https://governance.openstack.org/tc/reference/tags/assert_supports-upgrade.html">assert:supports-upgrade</a>, <a href="https://governance.openstack.org/tc/reference/tags/assert_supports-accessible-upgrade.html">assert:supports-accessible-upgrade</a>), which would help clarify this.</li>
<li>IIUC <a href="https://wiki.openstack.org/wiki/Kolla">Kolla</a> seem to be going in a slightly different direction based on online rolling upgrades, although I don&#8217;t think they necessarily have any strong objections to supporting offline upgrades so maybe things will converge in the long term.</li>
<li>Noone from <a href="https://wiki.openstack.org/wiki/Openstack-helm"><code>openstack-helm</code></a> present 🙁</li>
<li>Lots of gotchas, and consequent debates on how best to capture and share these.</li>
</ul>
</div>
</div>
<div id="outline-container-org57e226e" class="outline-2">
<h2 id="org57e226e">Oslo</h2>
<div class="outline-text-2" id="text-org57e226e">
<ul class="org-ul">
<li><a href="https://etherpad.openstack.org/p/oslo-ptg-rocky">https://etherpad.openstack.org/p/oslo-ptg-rocky</a></li>
</ul>
<p> I only had time to pop into the <code>oslo</code> room briefly, to discuss an interesting new initiative in <code>oslo.config</code> to automate migration of config between releases (a bit like DB migrations, but for <code>oslo.config</code> instead of DB schema).  This was also mentioned in the FFU session. </p>
<ul class="org-ul">
<li><a href="https://review.openstack.org/#/c/520043/">gerrit#I851628c0 (Propose spec for handle config changes in code)</a></li>
<li><a href="https://review.openstack.org/#/c/526314/">gerrit#I0a14a4a4 (Handle config mapping changes)</a></li>
<li><a href="https://review.openstack.org/#/c/526261/">gerrit#I0b95d3ea ({WIP}{POC} Handle config mapping changes)</a></li>
</ul>
<p> I posed some questions about how this would handle config which requires extra per-project logic to migrate, and also how it would handle config which has been <b>explicitly</b> set to the default value. We had some interesting discussions on that but I think ultimately the answer was &#8220;let&#8217;s cross that bridge when we come to it&#8221;. </p>
<p> I also had a quick chat with Ken Giusti about <a href="https://bugs.launchpad.net/barbican/+bug/1705543">a long-standing <code>oslo.service</code> bug we&#8217;ve worked on</a>, but we ran out of time and agreed to take it online. </p>
</div>
</div>
<div id="outline-container-org061e0f7" class="outline-2">
<h2 id="org061e0f7">OpenStack Ansible</h2>
<div class="outline-text-2" id="text-org061e0f7">
<p> I demo&#8217;d <a href="https://github.com/aspiers/ansible-viz">ansible-viz</a>, the Ansible visualization tool of which I recently became the maintainer, to the <a href="https://docs.openstack.org/openstack-ansible/latest/">OpenStack Ansible</a> folks.  They seemed really enthusiastic, and are looking into using it for embedding diagrams in their docs.  Hopefully this means they will start contributing to make it better! </p>
<p> My colleague Dirk Müller and I also talked to them in general about other areas for potential collaboration.  We were both impressed with how open they are to help and collaborate! </p>
</div>
</div>
<div id="outline-container-org36a5675" class="outline-2">
<h2 id="org36a5675">Misc</h2>
<div class="outline-text-2" id="text-org36a5675">
<p> As usual with the PTGs, I got huge value from random unplanned conversations in hallways, at lunch tables, in the bar etc. </p>
<p> I spent a lot of time talking to Emmet Hickory (a.k.a. <code>persia</code>) and he gave me some great ideas about new use cases for the <code>git</code> workflow tools I have been building in <a href="https://hackweek.suse.com/">hackweeks</a> and spare time.  I already knew that my <a href="https://github.com/aspiers/git-deps"><code>git-deps</code></a> tool allows fairly accurate predictions of how difficult it will be to backport a given commit to a stable branch, but a new idea emerged that this could be added as a non-voting job to <a href="https://docs.openstack.org/infra/zuul/">Zuul</a>&#8216;s checks pipeline, to facilitate a more proactive / preemptive approach to backporting. </p>
<p> I talked with Tony Breeds (PTL of stable branch maintenance) about this who told me that Neutron is already extremely proactive when it comes to backporting, so they might be interested in this.  So I met Miguel Lavalle (Neutron PTL) and he was really interested and requested that I put it on the agenda for a future Neutron IRC meeting.  <a href="https://wiki.openstack.org/wiki/Network/Meetings#On_Demand_Agenda">This has now happened</a> and we will discuss during next Tuesday&#8217;s meeting. </p>
<p> Emmet helped me realise that my <code>git-explode</code> tool could also help with backporting work, so I need to finish packaging that and publish it.  There is a <a href="https://www.meetup.com/londongit/">London Git meetup</a> coming up soon, and I might present the tools at that. </p>
<p> I&#8217;m getting off-topic now so I&#8217;ll finish here 🙂  If you found this report useful please leave a comment below, so that I know it&#8217;s worth bothering to do next time 🙂 </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%2F2018%2F03%2F09%2Fopenstack-ptg-dublin%2F&#038;title=Report%20from%20the%20OpenStack%20PTG%20in%20Dublin" data-a2a-url="https://blog.adamspiers.org/2018/03/09/openstack-ptg-dublin/" data-a2a-title="Report from the OpenStack PTG in Dublin"><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/2018/03/09/openstack-ptg-dublin/">Report from the OpenStack PTG in Dublin</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.adamspiers.org/2018/03/09/openstack-ptg-dublin/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Abstraction As A Service</title>
		<link>https://blog.adamspiers.org/2017/12/19/abstraction-as-a-service/</link>
					<comments>https://blog.adamspiers.org/2017/12/19/abstraction-as-a-service/#respond</comments>
		
		<dc:creator><![CDATA[Adam]]></dc:creator>
		<pubDate>Tue, 19 Dec 2017 18:55:00 +0000</pubDate>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[fake news]]></category>
		<category><![CDATA[humour]]></category>
		<category><![CDATA[OpenStack]]></category>
		<guid isPermaLink="false">https://blog.adamspiers.org/?p=1569</guid>

					<description><![CDATA[<p>The birth of abstraction layers The last five decades of computing have seen a gradual progression of architectural abstraction layers. Around 50 years ago, IBM mainframes gained virtualization capabilities. Despite explosive progress in the sophistication of hardware following Moore&#8217;s Law, there wasn&#8217;t too much further innovation in abstraction layers in server computing until well after [&#8230;]</p>
<p>The post <a href="https://blog.adamspiers.org/2017/12/19/abstraction-as-a-service/">Abstraction As A Service</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="outline-container-orgf0b3819" class="outline-2">
<h2 id="orgf0b3819">The birth of abstraction layers</h2>
<div class="outline-text-2" id="text-orgf0b3819">
<p> The last five decades of computing have seen a gradual progression of architectural abstraction layers.  <a href="https://www.networkworld.com/article/2254433/virtualization/with-long-history-of-virtualization-behind-it--ibm-looks-to-the-future.html">Around 50 years ago, IBM mainframes gained virtualization capabilities.</a>  Despite explosive progress in the sophistication of hardware following Moore&#8217;s Law, there wasn&#8217;t too much further innovation in abstraction layers in server computing until well after the dawn of the microcomputer era, in the early 2000s, when virtualization suddenly became all the rage again.  (I heard a rumour that this was due to certain IBM patents expiring, but maybe that&#8217;s an urban myth.)  Different types of hypervisors emerged, including <a href="https://virtuozzo.com/support/pvc/">early forms of containers</a>. </p>
<p> Then we started to realise that a hypervisor wasn&#8217;t enough, and we needed a whole management layer to keep control of the new &#8220;VM sprawl&#8221; problem which had arisen.  A whole bunch of solutions appeared, including the concept of &#8220;cloud&#8221;, but many were proprietary, and so after a few years OpenStack came along to the rescue! </p>
</div>
</div>
<div id="outline-container-org1acf60d" class="outline-2">
<h2 id="org1acf60d">The cloud era</h2>
<div class="outline-text-2" id="text-org1acf60d">
<p> But then we realised that managing OpenStack itself was a pain, and someone had the idea that rather than building a separate management layer for managing OpenStack, we could just use OpenStack to manage itself!  And so OpenStack on OpenStack, or Triple-O as it&#8217;s now known, was born. </p>
<p> Within and alongside OpenStack, several other new exciting trends emerged: Software-Defined Networking (SDN), Software-Defined Storage (e.g. Ceph), etc.  So the umbrella term Software-Defined Infrastructure was coined to refer to this group of abstraction layers. </p>
<p><span id="more-1569"></span>
</div>
</div>
<div id="outline-container-orgec1b76b" class="outline-2">
<h2 id="orgec1b76b">The container era</h2>
<div class="outline-text-2" id="text-orgec1b76b">
<p> Whilst OpenStack was busy growing up and moving past the Peak of Inflated Expectations, all of a sudden Docker and containers burst onto the scene and provided a lot of new buzzwords to get everyone excited again.  But after the excitement started to fade, that familiar sinking feeling came back with the realisation that just like VMs, containers need something to manage them. </p>
<p> But then Kubernetes leapt in to the rescue!  And all the excitement returned.  Except that of course then you need something to manage Kubernetes, but fortunately we already had OpenStack, so we could just use that!  And so Magnum was born.  And since Kubernetes is so awesome, we realised that we could also use it as the basis for deploying OpenStack.  At <a href="https://www.openstack.org/summit/sydney-2017/">the recent OpenStack Summit in Sydney</a>, we saw <a href="https://www.openstack.org/summit/sydney-2017/summit-schedule/global-search?t=kubernetes">the continued rise in popularity of running both Kubernetes on OpenStack, and OpenStack on Kubernetes</a>. </p>
</div>
</div>
<div id="outline-container-org3c2e3c9" class="outline-2">
<h2 id="org3c2e3c9">Looking to the future</h2>
<div class="outline-text-2" id="text-org3c2e3c9">
<p> But that still leaves the pesky job of managing raw hardware to put all this stuff on top.  Fortunately there are services you can pay for so that other people do that for you, and they even have APIs you can hook into!  This is called public cloud.  And even better, many companies use OpenStack to drive their public clouds. </p>
<p> So now we&#8217;re running Kubernetes on OpenStack on Kubernetes on OpenStack.  And now we&#8217;re done!  Right? </p>
<p> Well &#x2026; if we&#8217;re to learn anything from this history, it should be that we&#8217;ll always find more good reasons for new abstraction layers.  I mean, there&#8217;s already a huge amount of work going into things like Cloud Foundry on the PaaS layer, NFV in the telco space, serverless computing, &#x2026;  And I hear that Kubernetes is a great platform for running Cloud Foundry, just like it is for OpenStack.  And wouldn&#8217;t OpenStack be a cool platform to provide inside Cloud Foundry, e.g. for people who just want to quickly try it out?  So who knows, maybe in the next few years we&#8217;ll have OpenStack on Cloud Foundry on Kubernetes on OpenStack on Kubernetes on OpenStack. </p>
</div>
</div>
<div id="outline-container-org462e47e" class="outline-2">
<h2 id="org462e47e">A proposal to make things simpler</h2>
<div class="outline-text-2" id="text-org462e47e">
<p> Of course this starts getting a bit unwieldly.  Every time we introduce a new abstraction layer there&#8217;s extra complexity to deal with.  But that&#8217;s OK, because <b>we can always deal with complexity by abstracting it away!</b> It&#8217;s a bit like the cyber-equivalent of delegating difficult tasks to someone else.  So I&#8217;d like to propose a new concept, and corresponding meta-component of the overall architecture: </p>
<p> Whenever we realise we need a new abstraction layer, rather than having to deal with the complexity of deploying and managing this layer, we could just invoke APIs to a central service which takes care of this complexity for us.  We could call this new concept (drum roll, please&#x2026;) <b>Abstraction As A Service, or AaaS.</b> (If you&#8217;re British or Australian you may prefer to pronounce this as if there was an &#8220;r&#8221; in the middle, to distinguish from similar-sounding existing words such as &#8220;as&#8221;.  Or maybe we should call it <i>Sweeping Stuff Under The Carpet As A Service</i>?  Or SSUtCaaS for short, which can be pronounced &#8220;suitcase&#8221; (thanks to <a href="https://www.hastexo.com/who/florian/">Florian</a> for pointing this out). </p>
<p> With AaaS, if we wanted say, NFV on serverless on CF on Kubernetes on OpenStack on Kubernetes on OpenStack on public cloud on COBOL, we could simply write some declarative YAML or JSON describing the stack we want, push it to the AaaS REST API endpoint via an HTTP POST, and it would set the whole thing up for us automatically.  We could build any number and combination of abstraction layers we would possibly need, so at this point the job could be considered well and truly done, once and for all! </p>
<p> Except, ya know, we&#8217;d need a way to deploy and manage our AaaS service, of course.  Maybe we could build an AaaSaaS service for that &#x2026; </p>
</div>
</div>
<div id="outline-container-org8b61ca6" class="outline-2">
<h2 id="org8b61ca6">Sheepish postscript / disclaimer</h2>
<div class="outline-text-2" id="text-org8b61ca6">
<p> P.S. I know, it&#8217;s a terrible joke if you have to explain it, but based on <a href="https://blog.adamspiers.org/2011/11/29/linux-desktop-community-outraged-by-latest-torvalds-comments/">previous experiences</a> of my dry British humour being misunderstood (especially given the inevitably international audience), I feel the need to point out that this blog post was intended as nothing more than poking a bit of gentle fun at the cloud software industry.  I&#8217;m a huge fan of all the technologies mentioned here, and yes, I&#8217;m even in favour of multiple abstraction layers, despite occasionally wondering if we&#8217;ve all gone a bit insane 😉  Thanks to <a href="https://www.hastexo.com/who/florian/">Florian</a>, <a href="http://blog.clusterlabs.org/">Andrew</a>, and <a href="https://launchpad.net/~dmllr">Dirk</a> for reviewing an earlier draft, but I take responsibility for any mistakes or any offence unintentionally caused! </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%2F2017%2F12%2F19%2Fabstraction-as-a-service%2F&#038;title=Abstraction%20As%20A%20Service" data-a2a-url="https://blog.adamspiers.org/2017/12/19/abstraction-as-a-service/" data-a2a-title="Abstraction As A Service"><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/2017/12/19/abstraction-as-a-service/">Abstraction As A Service</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.adamspiers.org/2017/12/19/abstraction-as-a-service/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Announcing OpenStack&#8217;s Self-healing SIG</title>
		<link>https://blog.adamspiers.org/2017/11/24/announcing-openstacks-self-healing-sig/</link>
					<comments>https://blog.adamspiers.org/2017/11/24/announcing-openstacks-self-healing-sig/#respond</comments>
		
		<dc:creator><![CDATA[Adam]]></dc:creator>
		<pubDate>Fri, 24 Nov 2017 15:15:00 +0000</pubDate>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[OpenStack]]></category>
		<guid isPermaLink="false">https://blog.adamspiers.org/?p=1577</guid>

					<description><![CDATA[<p>One of the biggest promises of the cloud vision was the idea that all infrastructure could be managed in a policy-driven fashion, reacting to failures and other events by automatically healing and optimising services. In OpenStack, most of the components required to implement such an architecture already exist, and are nicely scoped, for the most [&#8230;]</p>
<p>The post <a href="https://blog.adamspiers.org/2017/11/24/announcing-openstacks-self-healing-sig/">Announcing OpenStack&#8217;s Self-healing SIG</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p> One of the biggest promises of the cloud vision was the idea that all infrastructure could be managed in a policy-driven fashion, reacting to failures and other events by automatically healing and optimising services. </p>
<p> In OpenStack, most of the components required to implement such an architecture already exist, and are nicely scoped, for the most part without too much overlap: </p>
<ul class="org-ul">
<li><a href="http://monasca.io/">Monasca</a>: monitoring</li>
<li><a href="https://docs.openstack.org/aodh/latest/">Aodh</a>: alarming</li>
<li><a href="https://docs.openstack.org/congress/latest/">Congress</a>: policy-based governance</li>
<li><a href="https://docs.openstack.org/mistral/latest/">Mistral</a>: workflow</li>
<li><a href="https://docs.openstack.org/senlin/latest/">Senlin</a>: clustering service</li>
<li><a href="https://docs.openstack.org/vitrage/latest/">Vitrage</a>: root cause analysis</li>
<li><a href="https://docs.openstack.org/watcher/latest/">Watcher</a>: optimization</li>
<li><a href="https://wiki.openstack.org/wiki/Masakari">Masakari</a>: compute plane HA</li>
<li><a href="https://docs.openstack.org/freezer/latest/">Freezer-dr</a>: compute plane HA</li>
<li><a href="https://docs.openstack.org/heat/latest/">Heat</a>: orchestration (normally used for cloud applications, but could also potentially <a href="https://github.com/openstack/heat-templates/tree/master/hot/autohealing">auto-heal</a> cloud infrastructure via <a href="https://wiki.openstack.org/wiki/TripleO">TripleO</a>)</li>
<li><a href="https://www.opnfv.org/community/projects/doctor">Doctor</a>: fault management and maintenance for OPNFV</li>
<li><a href="https://wiki.openstack.org/wiki/Fault_Genes_Working_Group">Fault Genes Working Group</a>: Fault classification &amp; Recovery Strategy</li>
<li><a href="http://craton.readthedocs.io/en/latest/readme.html">Craton</a>: Fleet management (currently stalled)</li>
</ul>
<p> However, there is not yet a clear strategy within the community for how these should all tie together.  (The OPNFV community is arguably further ahead in this respect, but hopefully some of their work could be applied outside NFV-specific environments.) </p>
<div id="outline-container-orgd7eb223" class="outline-2">
<h2 id="orgd7eb223">Designing a new SIG</h2>
<div class="outline-text-2" id="text-orgd7eb223">
<p> To address this, I organised <a href="https://etherpad.openstack.org/p/self-healing-queens-ptg">an unofficial kick-off meeting</a> at the <a href="https://www.openstack.org/ptg/">PTG</a> in <a href="https://wiki.openstack.org/wiki/PTG/Queens/Etherpads">Denver</a>, at which it became clear that there was sufficient interest in this idea from many of the above projects in order to create a new &#8220;Self-healing&#8221; <a href="https://wiki.openstack.org/wiki/OpenStack_SIGs">SIG</a>.  However, there were still open questions: </p>
<ol class="org-ol">
<li>What exactly should be the scope of the SIG?  Should it be for developers and operators, or also end users?</li>
<li>What should the name be?  Is &#8220;self-healing&#8221; good enough, or should it also include, say, non-failure scenarios like optimization?</li>
</ol>
<p><span id="more-1577"></span></p>
<p> In an attempt to answer these, I formally <a href="http://lists.openstack.org/pipermail/openstack-sigs/2017-September/000054.html">proposed the creation of the SIG</a>, asking the community to fill in <a href="https://docs.google.com/forms/d/e/1FAIpQLSekIFAFYc1mpBkQHgZwIVLOj-rQQPjw9Di3-hXL03ilhI80rg/viewform">a short survey</a> to vote on its creation, and to provide their feedback regarding the name and scope. Unfortunately whilst everyone unanimously supported its creation, opinions were split more or less 50%-50% on the name and the scope! So on advice from <a href="https://ttx.re/">Thierry</a>, I listed the SIG as &#8220;forming&#8221;, created <a href="https://wiki.openstack.org/wiki/Self-healing_SIG">the corresponding wiki page</a>, and <a href="http://forumtopics.openstack.org/cfp/details/26">proposed</a> a session for <a href="https://wiki.openstack.org/wiki/Forum/Sydney2017">the Sydney Forum</a>, which was subsequently <a href="https://www.openstack.org/summit/sydney-2017/summit-schedule/events/20508/self-healing-and-optimization-sig">accepted</a>. </p>
</div>
</div>
<div id="outline-container-org8dad8c6" class="outline-2">
<h2 id="org8dad8c6">A SIG is born!</h2>
<div class="outline-text-2" id="text-org8dad8c6">
<p> We had around 30 people attend the Sydney Forum session, which was extremely encouraging!  You can read more details in <a href="https://etherpad.openstack.org/p/self-healing-rocky-forum">the etherpad</a>, but here is the quick summary &#x2026; </p>
<p> Most importantly, we resolved the naming and scoping issues, concluding that to avoid biting off too much in one go, it was better to be pragmatic and start small: </p>
<ul class="org-ul">
<li>Initially focus on cloud infrastructure, and not worry too much about the user-facing impact of failures yet; we can add that concern whenever it makes sense (which is particularly relevant for telcos / NFV).</li>
<li>Not worry too much about optimization initially; <a href="https://docs.openstack.org/watcher/latest/">Watcher</a> is possibly the only project focusing on this right now, and again we can expand to include optimization any time we want.</li>
</ul>
<p> So now that the naming and scoping issues are resolved, I am excited to announce that the Self-healing SIG is officially formed! </p>
<p> Discussion went beyond mere administravia, however: </p>
<ul class="org-ul">
<li>We collected a few initial use cases.</li>
<li>We informally decided the governance of the SIG.  I asked if anyone else would like to assume leadership, but noone seemed keen, dashing my hopes of avoiding extra work 😉 But <a href="https://www.openstack.org/summit/sydney-2017/summit-schedule/speakers/9844">Eric Kao</a>, <a href="https://docs.openstack.org/project-team-guide/ptl.html">PTL</a> of <a href="https://docs.openstack.org/congress/latest/">Congress</a>, generously offered to act as co-chair.</li>
<li>We discussed health check APIs, which were mentioned in at least 2 or 3 other Forum sessions this time round.</li>
<li>We agreed that we wanted an IRC channel, and that it could host bi-weekly meetings.  However as usual there was no clean solution to choosing a time which would suit everyone ;-/  I&#8217;ll try to figure out what to do about this!</li>
</ul>
</div>
</div>
<div id="outline-container-org78400a8" class="outline-2">
<h2 id="org78400a8">Get involved</h2>
<div class="outline-text-2" id="text-org78400a8">
<p> You are warmly invited to join, if this topic interests you: </p>
<ul class="org-ul">
<li>Ensure you are <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-sigs">subscribed to the <code>openstack-sigs</code> mailing list</a>, and watch out for posts tagged <code>[self-healing]</code>.</li>
<li>Bookmark <a href="https://wiki.openstack.org/wiki/Self-healing_SIG">the wiki page</a> which is the SIG&#8217;s official home.</li>
</ul>
</div>
</div>
<div id="outline-container-org9c6bac0" class="outline-2">
<h2 id="org9c6bac0">Next steps</h2>
<div class="outline-text-2" id="text-org9c6bac0">
<p> I have sent out <a href="http://lists.openstack.org/pipermail/openstack-sigs/2017-November/000170.html">a similar announcement to the mailing list</a>, and next will set up the IRC channel, and see if we can make progress on agreeing times for regular IRC meetings. </p>
<p> Other than this administravia, it is of course up to the community to decide in which direction the SIG should go, but my suggestions are: </p>
<ul class="org-ul">
<li>Continue to collect use cases.  It makes sense to have a very lightweight process for this (at least, initially), so Eric has created <a href="https://docs.google.com/document/d/13N36g2RlUYs8mw7hbfRXw6y2Jc-V2XGrXgfPXPpUvuU/edit?usp=sharing">a Google Doc</a> and populated it with a suggested template and a first example.  Feel free to add your own based on this template.</li>
<li>Collect links to any existing documentation or other resources which describe how existing services can be combined.  This <a href="https://www.openstack.org/videos/sydney-2017/advanced-fault-management-with-vitrage-and-mistral">awesome talk on Advanced Fault Management with Vitrage and Mistral</a> is a perfect example, and <a href="https://www.openstack.org/videos/barcelona-2016/building-self-healing-applications-with-aodh-zaqar-and-mistral">here is another</a>, but we need to make it easier for operators to understand which combinations like this are possible, and easier for them to be set up.</li>
<li>Finish <a href="https://docs.google.com/drawings/d/1kEFtVpQ4c8HipSp34EVAkcSGmwyg1MzWf_H5oGTtl-Y/edit?usp=sharing">the architecture diagram drafted in Denver</a>.</li>
<li>At a higher level, we could document reference stacks which address multiple self-healing cases.</li>
<li>Talk more with the OPNFV community to find out what capabilities they have which could be reused within non-NFV OpenStack clouds.</li>
<li>Perform gaps analysis on the use cases, and liase with specific projects to drive development in directions which can address those gaps.</li>
</ul>
</div>
</div>
<div id="outline-container-orgb5fad4d" class="outline-2">
<h2 id="orgb5fad4d">The origin of the idea for the SIG</h2>
<div class="outline-text-2" id="text-orgb5fad4d">
<p> In case you&#8217;re interested in the history &#x2026; </p>
<p> I first became aware of the need for this SIG while working upstream within the community on OpenStack HA &#8211; specifically on compute plane HA, where failures of compute nodes or hypervisors are automatically handled by resurrecting affects VMs on other compute nodes.  I saw many groups independently trying to solve the same problem, so I <a href="http://lists.openstack.org/pipermail/openstack-dev/2015-October/077735.html">created the <code>#openstack-ha</code> IRC channel</a>, <a href="http://lists.openstack.org/pipermail/openstack-dev/2015-November/079127.html">organised weekly meetings</a>, and <a href="http://lists.openstack.org/pipermail/openstack-dev/2016-June/096820.html">tried to bring all stakeholders together to converge on a single upstream solution</a>.  Progress was gradually made, which we presented in <a href="https://www.openstack.org/videos/video/high-availability-for-pets-and-hypervisors-state-of-the-nation">Austin</a>, <a href="https://www.openstack.org/videos/boston-2017/high-availability-for-instances-moving-to-a-converged-upstream-solution">Boston</a>, and most recently in Tel Aviv at <a href="https://youtu.be/uMCMDF9VkYk">OpenStack Day Israel 2017</a>. </p>
<p> After the talk I had a great conversation with Ifat Afek, who is the <a href="https://docs.openstack.org/project-team-guide/ptl.html">PTL</a> of OpenStack <a href="https://docs.openstack.org/vitrage/latest/">Vitrage</a>, which is an awesome project providing RCA (Root Cause Analysis) of faults within OpenStack.  Since Vitrage can do things like receive an alert about a fault on a compute node (e.g. from <a href="https://docs.openstack.org/aodh/latest/">Aodh</a>) and then automatically determine all affected VMs and call out to another service like <a href="https://docs.openstack.org/mistral/latest/">Mistral</a> to enact appropriate remediation, there was obvious synergy between our work. </p>
<p> However Vitrage goes much further than just compute HA: since it can receive various alerts from multiple types of data source, model relationships between many types of resource, and trigger external services to take action, this kind of combination has tremendous potential for building automatically self-healing cloud infrastructure.  And as shown above, there are several other OpenStack projects operating in the same space, which could take this approach further; for example, <a href="https://docs.openstack.org/congress/latest/">Congress</a> can be used to specify policies regarding how failures should be handled. </p>
<p> Talking with Ifat resulted in the idea to create a new <a href="https://wiki.openstack.org/wiki/OpenStack_SIGs">SIG</a> with the goals of identifying self-healing use cases, establishing and documenting what can already be achieved by combining existing OpenStack services, and enhancing collaboration between the projects and with operators to fill in any remaining gaps.  And now you know the rest of the story 🙂 </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%2F2017%2F11%2F24%2Fannouncing-openstacks-self-healing-sig%2F&#038;title=Announcing%20OpenStack%E2%80%99s%20Self-healing%20SIG" data-a2a-url="https://blog.adamspiers.org/2017/11/24/announcing-openstacks-self-healing-sig/" data-a2a-title="Announcing OpenStack’s Self-healing SIG"><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/2017/11/24/announcing-openstacks-self-healing-sig/">Announcing OpenStack&#8217;s Self-healing SIG</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.adamspiers.org/2017/11/24/announcing-openstacks-self-healing-sig/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cloud rearrangement for fun and profit</title>
		<link>https://blog.adamspiers.org/2015/05/17/cloud-rearrangement/</link>
					<comments>https://blog.adamspiers.org/2015/05/17/cloud-rearrangement/#comments</comments>
		
		<dc:creator><![CDATA[Adam]]></dc:creator>
		<pubDate>Sun, 17 May 2015 03:42:00 +0000</pubDate>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[DPM]]></category>
		<category><![CDATA[DRS]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[OpenStack]]></category>
		<category><![CDATA[placement]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[vSphere]]></category>
		<category><![CDATA[workloads]]></category>
		<guid isPermaLink="false">http://blog.adamspiers.org/?p=1070</guid>

					<description><![CDATA[<p>In a populated compute cloud, there are several scenarios in which it&#8217;s beneficial to be able to rearrange VM guest instances into a different placement across the hypervisor hosts via migration (live or otherwise). These use cases typically fall into three categories: Rebalancing &#8211; spread the VMs evenly across as many physical VM host machines [&#8230;]</p>
<p>The post <a href="https://blog.adamspiers.org/2015/05/17/cloud-rearrangement/">Cloud rearrangement for fun and profit</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p> In a populated compute cloud, there are several scenarios in which it&#8217;s beneficial to be able to rearrange VM guest instances into a different placement across the hypervisor hosts via migration (live or otherwise).  These use cases typically fall into three categories: </p>
<ol class="org-ol">
<li><b>Rebalancing</b> &#8211; spread the VMs evenly across as many physical VM host machines as possible (conceptually similar to <a href="http://www.vmware.com/products/vsphere/features-drs-dpm">vSphere DRS</a>). Example use cases:
<ul class="org-ul">
<li>Optimise workloads for performance, by reducing CPU / I/O hotspots.</li>
<li>Maximise headroom on each physical machine.</li>
<li>Reduce thermal hotspots in order to reduce power consumption; for example, back in 2003, HP showed that <a href="http://www.hpl.hp.com/techreports/2003/HPL-2003-5.pdf">intelligent workload placement can reduce energy consumption by more than 14%</a>. (Here&#8217;s an <a href="http://blog.adamspiers.org/wp-content/uploads/2015/05/heatmap.pdf">old slidedeck I made years ago when researching this use case</a>.)</li>
</ul>
</li>
<li><b>Consolidation</b> &#8211; condense VMs onto fewer physical VM host machines (conceptually similar to <a href="http://www.vmware.com/products/vsphere/features-drs-dpm">vSphere DPM</a>).  Typically involves some degree of defragmentation.  Example use cases:
<ul class="org-ul">
<li>Increase CPU / RAM / I/O utilization.  <a href="http://openstack-in-production.blogspot.co.uk/2014/07/openstack-plays-tetris-stacking-and.html">CERN blogged last summer about this Tetris-like challenge</a>, and it can be taken even further over-committing CPU/RAM and/or memory page sharing.</li>
<li>Free up physical servers to reduce power consumption.</li>
</ul>
</li>
<li><b>Evacuation</b> &#8211; free up physical servers:
<ul class="org-ul">
<li>for repurposing or decommissioning</li>
<li>for maintenance (BIOS upgrades, re-cabling etc.) or repair</li>
<li>to protect SLAs, e.g. when monitors indicate potential imminent hardware failure, or when <a href="https://en.wikipedia.org/wiki/HVAC">HVAC</a> failures are likely to cause servers to shutdown due to over-heating.  (This is different to the somewhat <a href="http://www.hastexo.com/misc/static/presentations/chosugmeetup201302/index.html#/step-18">confusingly</a> named <a href="https://wiki.openstack.org/wiki/Evacuate"><code>nova evacuate</code></a> functionality which <a href="http://docs.openstack.org/admin-guide-cloud/content/nova_cli_evacuate.html">moves VMs to a new host <i>after</i> the server has already failed</a>.)</li>
</ul>
</li>
</ol>
<p> Whilst one-shot manual or semi-automatic rearrangement can bring immediate benefits, the biggest wins often come when continual rearrangement is automated.  The approaches can also be combined, e.g. first evacuate and/or consolidate, then rebalance on the remaining physical servers. </p>
<p> Other custom rearrangements may be required according to other IT- or business-driven policies, e.g. only rearrange VM instances relating to a specific workload, in order to increase locality of reference, reduce latency, respect availability zones, or facilitate other out-of-band workflows or policies (such as data privacy or other legalities). </p>
<p> In the rest of this post I will expand this topic in the context of OpenStack, talk about the computer science behind it, propose a possible way forward, and offer a working prototype in Python. </p>
<p> If you&#8217;re in Vancouver for <a href="https://www.openstack.org/summit/vancouver-2015/">the OpenStack summit</a> which starts this Monday and you find this post interesting, ping me for a face-to-face chat! </p>
<p><span id="more-1070"></span> <!--break--></p>
<div id="outline-container-unnumbered-1" class="outline-2">
<h2 id="unnumbered-1">VM placement in OpenStack: present and future</h2>
<div class="outline-text-2" id="text-unnumbered-1">
<p> It is clear from the diversity of the use cases listed above that VM placement policies are likely to vary greatly across clouds, and sometimes even within a single cloud.  <a href="http://www.openstack.org/software/openstack-compute/">OpenStack Compute</a> (<code>nova</code>) has fairly sophisticated <a href="http://docs.openstack.org/kilo/config-reference/content/section_compute-scheduler.html">scheduling capabilities</a> which can be configured to implement some of the above policies on an incremental basis, i.e. every time a VM instance is started or migrated, the destination VM host can be automatically chosen according to filters and weighted cost functions.  However, this approach is somewhat limited for migration, because the placement policies are only considered one migration at a time.  Like in Tetris, more efficient arrangements can be achieved by thinking further ahead! </p>
<p> OpenStack clouds can already be segregated in various ways via <a href="http://docs.openstack.org/openstack-ops/content/scaling.html#segregate_cloud">cells, regions, availability zones, host aggregates</a>, and <a href="http://dev.cloudwatt.com/en/blog/affinity-and-anti-affinity-in-openstack.html">server groups</a>, and so there are various techniques available for implementing different placement policies to different areas of your cloud.  For example you could have groups of hosts dedicated to CPU-intensive or I/O-bound workloads using an anti-affinity placement policy, and other groups dedicated to light workloads using an affinity placement policy.  But these policies are static in nature (e.g. <a href="http://docs.openstack.org/kilo/config-reference/content/section_compute-scheduler.html"><code>nova</code> filters and schedulers are configured by the cloud administrator in <code>nova.conf</code></a>), which somewhat limits their flexibility. </p>
<p> OpenStack is still relatively new, however with <a href="https://wiki.openstack.org/wiki/Cinder">Cinder</a> and <a href="https://wiki.openstack.org/wiki/Neutron">Neutron</a> rapidly evolving, it is at the point where a VM&#8217;s network and storage dependencies can be live migrated along with the workload in a near seamless fashion.  So now we should be able to start developing mechanisms for implementing more sophisticated placement policies, where not only is VM rearrangement performed automatically, but the policies themselves can be varied dynamically over time as workload requirements change. </p>
</div>
</div>
<div id="outline-container-unnumbered-2" class="outline-2">
<h2 id="unnumbered-2">VMware is not the (complete) solution</h2>
<div class="outline-text-2" id="text-unnumbered-2">
<p> VMware advocates might instinctively recommend running <a href="https://wiki.openstack.org/wiki/VSphere">vSphere clusters underneath nova</a>, to harness vSphere&#8217;s pre-existing <a href="http://www.vmware.com/products/vsphere/features-drs-dpm">DRS / DPM functionality</a>.  However, there are still unresolved problems with this approach, as this <a href="http://cloudarchitectmusings.com/2013/06/26/openstack-for-vmware-admins-nova-compute-with-vsphere-part-2/">article on <code>nova-scheduler</code> and DRS</a> highlights. (Funnily enough, I encountered exactly these same problems a few years ago when I was part of a team adding vSphere integration into the orchestration component of what has since become <a href="https://www.netiq.com/products/cloud-manager/">NetIQ Cloud Manager</a> &#x2026;)  Besides, a vSphere cluster and an OpenStack cloud are very different beasts, and of course not everyone wants to build their cloud exclusively with VMware technology anyway. </p>
</div>
</div>
<div id="outline-container-unnumbered-3" class="outline-2">
<h2 id="unnumbered-3">The computer science behind cloud rearrangement</h2>
<div class="outline-text-2" id="text-unnumbered-3">
<p> Unfortunately developing algorithms to determine optimal placement is distinctly non-trivial.  For example, the consolidation scenario above is a complex variant of the <a href="https://en.wikipedia.org/wiki/Bin_packing_problem">bin packing problem</a>, which is <a href="https://en.wikipedia.org/wiki/NP-hard">NP-hard</a>. The following constraints add significant complexity to the problem: </p>
<ul class="org-ul">
<li>A useful real world solution should take into account not only the RAM footprint of the VMs, but also CPU, disk, and network.</li>
<li>The algorithm needs to ensure that <a href="https://en.wikipedia.org/wiki/Service-level_agreement">SLAs</a> are maintained whilst any rearrangement takes place.</li>
<li>If the cloud is too close to full capacity, it may not be possible to rearrange the VMs from their current placement to a more optimal placement without first shutting down some VMs, which could be prohibited by the SLAs.</li>
<li>Even if the cloud is at low utilization, live migration is not always possible, e.g.
<ul class="org-ul">
<li>the hypervisor may not support it (especially across non-identical CPU architectures)</li>
<li>shared storage may be required but unavailable</li>
<li>the network may not support it</li>
</ul>
</li>
<li>Even if the arrangement is achievable purely via a sequence of live migrations, the algorithm must also be sensitive to the performance impact to running workloads when performing multiple live migrations, since live migrations require intensive bursts of network I/O in order to synchronize the VM&#8217;s memory contents between the source and target hosts, followed by a momentary freezing of the VM as it flips from the source to the target. This trade-off between optimal resource utilization and service availability means that a sub-optimal final placement may be preferable to an optimal one.</li>
<li>In the case where the hypervisor is capable of sharing memory pages between VMs (e.g. <a href="http://www.linux-kvm.org/page/KSM">KSM on KVM</a>), the algorithm should try to place together VMs which are likely to share memory pages (e.g. VMs running the same OS platform, OS version, software libraries, or applications.  A <a href="http://lass.cs.umass.edu/papers/pdf/SPAA11-vmsharing.pdf">research paper published in 2011</a> demonstrated that VM packing which optimises placement in this fashion can be approximated in polytime, achieving 32% to 50% reduction in servers and a 25% to 57% reduction in memory footprint compared to sharing-oblivious algorithms.</li>
</ul>
<p> (There is prior art of course.  For example, several years ago, <a href="http://blog.clusterlabs.org/blog/2010/feature-spotlight-utilization/">Pacemaker implemented a <i>best effort</i> algorithm for VM host selection</a>.) </p>
</div>
</div>
<div id="outline-container-unnumbered-4" class="outline-2">
<h2 id="unnumbered-4">Divide and conquer?</h2>
<div class="outline-text-2" id="text-unnumbered-4">
<p> As noted by the 2011 research paper referenced above, this area of computer science is still evolving.  There is one constant however: any rearrangement solution must not only provide a final VM placement optimised according to the chosen constraints, but also a sequence of migrations to it from the current placement.  There will often be multiple migration sequences reaching the optimised placement from the current one, and their efficiency can vary widely.  In other words, there are two questions which need answering: </p>
<ol class="org-ol">
<li>Given a starting placement <i>A</i>, which is the best (or near-optimal) final placement <i>B</i> to head for?</li>
<li>What&#8217;s the best way to get from <i>A</i> to <i>B</i>?</li>
</ol>
<p> The above considerations strongly suggest that the first question is much harder to answer than the second, although the two are not necessarily orthogonal; for example there could be two different final placements <i>B</i> and <i>C</i> which are equally near-optimal, but it may be much harder to reach <i>C</i> from <i>A</i> than <i>B</i>. </p>
<p> I propose that it is worth examining the effectiveness of a <b>divide and conquer</b> approach: solving the second question may simplify the first, and also provide a mechanism for comparatively evaluating the effectiveness of potential answers to the first.  Another bonus of this decoupling is that it should be possible for the path-finding algorithm to also discover opportunities for parallelizing live migrations when walking the path, so that the target placement <i>B</i> can be reached more quickly. </p>
</div>
</div>
<div id="outline-container-unnumbered-5" class="outline-2">
<h2 id="unnumbered-5">A proof of concept algorithm for VM migration path-finding</h2>
<div class="outline-text-2" id="text-unnumbered-5">
<p> I&#8217;ve designed an algorithm which solves the second problem, and hacked together a proof of concept implementation in Python.  This <a href="http://youtu.be/aHK3UF3ffNg">video</a> shows it solving three randomly generated scenarios: </p>
<p><iframe width="640" height="480" src="https://www.youtube.com/embed/aHK3UF3ffNg?rel=0" frameborder="0" allowfullscreen></iframe></p>
<p> It&#8217;s far from perfect, but as a proof of concept it seems to hold up fairly well under soak testing.  I&#8217;m pleased to announce that the code is now on github: <a href="https://github.com/aspiers/migrationpaths">https://github.com/aspiers/migrationpaths</a> and I would love to hear feedback on it. </p>
</div>
</div>
<div id="outline-container-unnumbered-6" class="outline-2">
<h2 id="unnumbered-6">Feedback</h2>
<div class="outline-text-2" id="text-unnumbered-6">
<p> If you found this blog interesting, feel free to get in touch!  I&#8217;m <code>aspiers</code> on FreeNode IRC, and <a href="https://twitter.com/adamspiers"><code>adamspiers</code> on Twitter</a>. </p>
<p> I&#8217;m also in Vancouver for <a href="https://www.openstack.org/summit/vancouver-2015/">the OpenStack summit</a> which starts this Monday, so if you are, come and say hello! </p>
</div>
</div>
<div id="outline-container-unnumbered-7" class="outline-2">
<h2 id="unnumbered-7">Acknowledgements</h2>
<div class="outline-text-2" id="text-unnumbered-7">
<p> Many thanks to <a href="http://www.hastexo.com/who/florian">Florian Haas</a>, <a href="http://hardysteven.blogspot.com/">Steven Hardy</a>, and Christoph Thiel for their input on an earlier draft version of this post, and apologies that it took me SO long to publish it! </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%2F2015%2F05%2F17%2Fcloud-rearrangement%2F&#038;title=Cloud%20rearrangement%20for%20fun%20and%20profit" data-a2a-url="https://blog.adamspiers.org/2015/05/17/cloud-rearrangement/" data-a2a-title="Cloud rearrangement for fun and profit"><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/2015/05/17/cloud-rearrangement/">Cloud rearrangement for fun and profit</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.adamspiers.org/2015/05/17/cloud-rearrangement/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>OpenStack Paris workshop: Automated Deployment of an HA Cloud</title>
		<link>https://blog.adamspiers.org/2014/11/01/openstack-paris-ha-workshop/</link>
					<comments>https://blog.adamspiers.org/2014/11/01/openstack-paris-ha-workshop/#respond</comments>
		
		<dc:creator><![CDATA[Adam]]></dc:creator>
		<pubDate>Sat, 01 Nov 2014 18:39:00 +0000</pubDate>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[OpenStack]]></category>
		<category><![CDATA[Paris]]></category>
		<category><![CDATA[suse]]></category>
		<category><![CDATA[Vagrant]]></category>
		<guid isPermaLink="false">http://blog.adamspiers.org/?p=1152</guid>

					<description><![CDATA[<p>6 months after its debut in Atlanta, the HA workshop happening again in Paris, this Monday (16:20, Room 241)! If you plan on attending and didn&#8217;t already see Florian&#8217;s blog post, please get downloading and installing the prerequisite files quick, because downloading them over hotel or conference wifi is likely to be painful. (N.B. Unless [&#8230;]</p>
<p>The post <a href="https://blog.adamspiers.org/2014/11/01/openstack-paris-ha-workshop/">OpenStack Paris workshop: Automated Deployment of an HA Cloud</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p> 6 months after <a href="https://github.com/aspiers/openstacksummit2014-atlanta">its debut in Atlanta</a>, the HA workshop happening again in Paris, this Monday (<a href="http://sched.co/1qePKkc">16:20, Room 241</a>)!  If you plan on attending and didn&#8217;t already see <a href="https://www.hastexo.com/resources/presentations/automated-deployment-highly-available-openstack-cloud-0">Florian&#8217;s blog post</a>, please get downloading and installing <a href="https://github.com/SUSE-Cloud/suse-cloud-vagrant/blob/master/docs/prerequisites.md">the prerequisite files</a> quick, because downloading them over hotel or conference wifi is likely to be painful.  (N.B. Unless you have a really strong reason not to, please go with <a href="https://github.com/SUSE-Cloud/suse-cloud-vagrant/blob/master/docs/prerequisites.md#hypervisor">the VirtualBox option</a>, because there are more <a href="https://github.com/SUSE-Cloud/suse-cloud-vagrant/blob/master/docs/vagrant-libvirt.md">pitfalls when using KVM+libvirt</a>.) </p>
<p> However if you&#8217;re already on the way to Paris, don&#8217;t despair, because we&#8217;ll also do our best to make the files available at the SUSE booth. And failing that, you can still just turn up, enjoy the show, and then try the hands-on exercise any time later at your own leisure! </p>
<p> In case you have no idea what I&#8217;m talking about, here&#8217;s some brief history: </p>
<p> Back before the last OpenStack summit in Atlanta in May, I managed to persuade <a href="http://www.hastexo.com/who/florian">Florian Haas</a> to join me in an endeavour which some might view as slightly insane: run a <a href="https://github.com/aspiers/openstacksummit2014-atlanta">90 minute hands-on workshop</a> in which we&#8217;d have every attendee build a Highly Available OpenStack cloud on their laptop, <i>from scratch</i>. </p>
<p> With so many moving parts and a vast range of different hardware involved, it certainly wasn&#8217;t plain sailing, but by the power of <a href="https://www.vagrantup.com/">Vagrant</a> and VirtualBox, I think overall it was a success. </p>
<p> Since then, we&#8217;ve been working extremely hard to improve the workshop materials based on lessons learnt last time.  So what&#8217;s new?  Well, firstly the workshop environment has been upgraded from Havana Icehouse (<a href="https://www.suse.com/products/suse-cloud/">SUSE Cloud 4</a> vs. version 3 in May), and quite a lot of polish has been applied, since in May the HA code was still relatively new. </p>
<p> Secondly, we&#8217;ve added support for building the cloud using KVM+libvirt (although <a href="https://github.com/SUSE-Cloud/suse-cloud-vagrant/blob/master/docs/prerequisites.md#hypervisor">VirtualBox is still recommended for a smoother ride</a>). </p>
<p> Thirdly, the documentation is way more comprehensive, and should help you avoid many common pitfalls. </p>
<p> Hope to see you at the workshop, and please come and say hello to us at the SUSE booth! </p>
<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%2F01%2Fopenstack-paris-ha-workshop%2F&#038;title=OpenStack%20Paris%20workshop%3A%20Automated%20Deployment%20of%20an%20HA%20Cloud" data-a2a-url="https://blog.adamspiers.org/2014/11/01/openstack-paris-ha-workshop/" data-a2a-title="OpenStack Paris workshop: Automated Deployment of an HA Cloud"><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/01/openstack-paris-ha-workshop/">OpenStack Paris workshop: Automated Deployment of an HA Cloud</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.adamspiers.org/2014/11/01/openstack-paris-ha-workshop/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to never EVER lose your phone contacts again</title>
		<link>https://blog.adamspiers.org/2011/07/30/never-ever-lose-your-phone-contacts-again/</link>
					<comments>https://blog.adamspiers.org/2011/07/30/never-ever-lose-your-phone-contacts-again/#comments</comments>
		
		<dc:creator><![CDATA[Adam]]></dc:creator>
		<pubDate>Sat, 30 Jul 2011 19:31:13 +0000</pubDate>
				<category><![CDATA[front page]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[blackberry]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[contacts]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[nokia]]></category>
		<category><![CDATA[phone]]></category>
		<category><![CDATA[sync]]></category>
		<category><![CDATA[syncML]]></category>
		<category><![CDATA[Windows phones]]></category>
		<guid isPermaLink="false">http://blog.adamspiers.org/?p=514</guid>

					<description><![CDATA[<p>It continually astonishes me how often I see facebook status updates / group invites / tweets / emails from friends and acquaintances saying something to the effect of &#8220;ARGH my iPhone / Blackberry / Nokia phone has been stolen / lost / eaten by my pet donkey and I lost everyone&#8217;s numbers, please can you [&#8230;]</p>
<p>The post <a href="https://blog.adamspiers.org/2011/07/30/never-ever-lose-your-phone-contacts-again/">How to never EVER lose your phone contacts again</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>It continually astonishes me how often I see facebook status updates / group invites / tweets / emails from friends and acquaintances saying something to the effect of &#8220;ARGH my iPhone / Blackberry / Nokia phone has been stolen / lost / eaten by my pet donkey and I lost everyone&#8217;s numbers, please can you all send me your numbers!!&#8221;</p>
<p>People, it&#8217;s 2011 already! Whilst technology is still far from perfect, it landed a man on the moon 42 years ago way before mobile phones existed, and certainly solved this particular problem of disappearing phones several years ago.  So for those of you who still haven&#8217;t figured this out, without further ado I will outline a solution which should only cost 10 minutes of your life and ensure you never have to broadcast a panicked message cursing your pet donkey and asking everyone to send you their numbers.</p>
<p><span id="more-514"></span></p>
<h3>Android phones</h3>
<p>Firstly, if you already have a phone belonging to the rapidly growing family of <a href="http://www.google.com/mobile/android/">Android phones</a> (such as any recent Samsung, HTC, Sony Ericsson or Motorola phone), then congratulations!  You&#8217;re immediately at an advantage.  If you have a <a href="http://www.google.com/intl/en/landing/accounts/">Google account</a>, you probably already linked your phone to it when you first went through the phone&#8217;s setup procedure, in which case your contacts / calendar / e-mail etc. are most likely already being automatically synchronised with your account, and are safely backed up within Google&#8217;s cloud.  To make sure, visit <a href="http://google.com/contacts">http://google.com/contacts</a> and you should see all your contacts listed in a very nice interface which lets you do other handy things like automatically merge duplicate contacts.</p>
<p>If you don&#8217;t see your contacts there, or you don&#8217;t have a Google account and/or never linked your phone with a Google account, take the following simple steps:</p>
<ol>
<li><a href="http://www.google.com/intl/en/landing/accounts/">Create a Google account</a> if you don&#8217;t have one already (it&#8217;s free)</li>
<li>On your phone, go to the Settings menu, select &#8220;Accounts &amp; sync settings&#8221;, and then ensure that your Google account is listed and that sync is enabled.</li>
</ol>
<h3>iPhones, Blackberries, Nokia / Windows / other vaguely modern phones</h3>
<p>Again the solution I would recommend is to set up automatic synchronization to a Google Account, because it&#8217;s free, proven to work, and means your data is backed up in the Google cloud, which statistically speaking is a far safer place to store your contacts than one of your own hard drives.  Instructions for these phones are listed here: <a href="http://www.google.com/mobile/sync/">http://www.google.com/mobile/sync/</a></p>
<p><iframe width="425" height="349" src="http://www.youtube.com/embed/Kt_-qHczCMg" frameborder="0" allowfullscreen></iframe></p>
<p>Even if you have a &#8220;dumb&#8221; (non-smart) phone, unless it is really ancient, the chances are that it supports SyncML which means that the above will work.  If however your phone is so old that it doesn&#8217;t even support SyncML then I would simply recommend that you upgrade.  Modern mobile handsets are so sophisticated that even the cheapest, most basic models (given away for free with low-cost contracts) will support SyncML.</p>
<h3>It&#8217;s more than just contacts</h3>
<p>If you follow the above suggestions, you&#8217;ll find that your phone&#8217;s calendar will automatically get synchronized too.</p>
<h3>Non-Google solutions</h3>
<p>If for some strange reason you are highly anti-Google, there are of course plenty of other options.  I&#8217;m not going to go into detail here, but here&#8217;s some food for thought:</p>
<ul>
<li><a href="http://www.macworld.com/article/154847/2010/10/mobileme_or_google.html">Choosing between MobileMe and Google</a></li>
<li><a href="http://www.tipb.com/2009/02/11/great-iphone-sync-debate-desktop-laptop-cloud/">The Great iPhone Sync Debate: Desktop, Laptop, or Cloud?</a></li>
</ul>
<h3>Wrapping up</h3>
<p>That&#8217;s all for now.  Hope it was useful &#8211; feel free to leave comments.  Oh, and here are two final suggestions for what to do if you see one of your poor friends send out a facebook message like the one at the top of this article:</p>
<ul>
<li>DON&#8217;T respond by posting your mobile phone number on their wall (do you <em>really</em> want the whole world to have your number?)</li>
<li>Send them the link to this article.</li>
</ul>
<p>&nbsp;</p>
<p><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fblog.adamspiers.org%2F2011%2F07%2F30%2Fnever-ever-lose-your-phone-contacts-again%2F&#038;title=How%20to%20never%20EVER%20lose%20your%20phone%20contacts%20again" data-a2a-url="https://blog.adamspiers.org/2011/07/30/never-ever-lose-your-phone-contacts-again/" data-a2a-title="How to never EVER lose your phone contacts again"><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/2011/07/30/never-ever-lose-your-phone-contacts-again/">How to never EVER lose your phone contacts again</a> appeared first on <a href="https://blog.adamspiers.org">Structured Procrastination</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.adamspiers.org/2011/07/30/never-ever-lose-your-phone-contacts-again/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
	</channel>
</rss>
