<?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>Java Application Deployment Automation with Deployit &#124; XebiaLabs</title>
	<atom:link href="http://blog.xebialabs.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.xebialabs.com</link>
	<description>ava Application Deployment Automation with Deployit</description>
	<lastBuildDate>Fri, 04 May 2012 14:41:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>Deployit Cookbook: Adding a check to the Deployment Checklist</title>
		<link>http://blog.xebialabs.com/2012/05/04/deployit-cookbook-adding-a-check-to-the-deployment-checklist/</link>
		<comments>http://blog.xebialabs.com/2012/05/04/deployit-cookbook-adding-a-check-to-the-deployment-checklist/#comments</comments>
		<pubDate>Fri, 04 May 2012 14:41:56 +0000</pubDate>
		<dc:creator>Hes Siemelink</dc:creator>
				<category><![CDATA[Deployit Cookbook]]></category>
		<category><![CDATA[XebiaLabs]]></category>
		<category><![CDATA[Release Dashboard]]></category>

		<guid isPermaLink="false">http://blog.xebialabs.com/?p=6329</guid>
		<description><![CDATA[This Cookbook entry describes how to add a single check to the Deployment Checklist in the Release Dashboard. We will take an existing pipeline that has Dev, Test, Acceptance and Production environments. We will show how to add a single &#8230; <a href="http://blog.xebialabs.com/2012/05/04/deployit-cookbook-adding-a-check-to-the-deployment-checklist/">read more >></a>]]></description>
			<content:encoded><![CDATA[<p>This Cookbook entry describes how to add a single check to the Deployment Checklist in the Release Dashboard. We will take an existing pipeline that has Dev, Test, Acceptance and Production environments. We will show how to add a single condition 'Signed off by Release Manager' that will be put on the Production environment.</p>
<p><span id="more-6329"></span></p>
<h2 id="adding-the-check-to-syntheticxml">Adding the check to synthetic.xml</h2>
<p>First, we will have to tell Deployit that the new condition exists. We do this by adding properties to existing Deployit types. Deployment conditions in Deployit are defined by pairs of properties, one on the Environment and one on a DeploymentPackage (a version of an application).</p>
<p>To introduce the property into the Deployit's type system, we have to edit the <code>synthetic.xml</code> file on the Deployit Server. The synthetic.xml file can be located in <code>$DEPLOYIT_HOME/conf</code>. For more information about the Deployit type system, please refer to the <strong><a href="http://docs.xebialabs.com/releases/3.7/referencemanual.html">Reference Manual</a></strong> and the <strong><a href="http://docs.xebialabs.com/releases/3.7/customizationmanual.html">Customization Manual</a></strong></p>
<p>First we add the property to the Environment type. Locate the definition of <code>udm.Environment</code> and add the property:</p>
<pre><code>&lt;type-modification type="udm.Environment"&gt;
  ...
  &lt;property name="requiresSignedOffByReleaseManager" kind="boolean"
    required="false" category="Deployment Checklist" /&gt;
  ...
</code></pre>
<p>This means that for <em>any</em> Environment there will be an additional boolean property. The property has to start with the prefix <code>requires</code> in order to be picked up by the Release Dashboard.</p>
<p>The next thing we have to do in the synthetic.xml is to tell Deployit that deployment packages will have a property that can satisfy the check specified above. Note that each version of an Application will have different sets of properties checked during its voyage through the deployment pipeline. We therefore set the property on the <code>udm.Version</code> type.</p>
<p>Locate the type <code>udm.Version</code> and add the property. The property name is based on the property set on the Environment, but with the <code>requires</code> prefix replaced by <code>satisfies</code>.</p>
<pre><code>&lt;type-modification type="udm.Version"&gt;
  ...
  &lt;property name="satisfiesSignedOffByReleaseManager" kind="boolean"
    required="false" category="Deployment Checklist"
    label="Signed off by Release Manager" /&gt;
  ...
</code></pre>
<p>What we just did: for each individual deployment package we add the possibility to <em>satisfy</em> the constraints imposed by the <em>requires</em> property of the Environment.</p>
<p>After saving the file, restart the Deployit Server for the changes to take effect.</p>
<h2 id="configuring-the-environment">Configuring the Environment</h2>
<p>Now that we have added the check, we can enable it for an environment. In this case, we will enable it only for the Production Environment, but of course you could enable it for any environment.</p>
<p>Once a check has been enabled on an environment, only deployment packages that satisfy the requirements can be deployed to this environment. Deployments that do not satisfy the check are not allowed.</p>
<p>We can easily configure the Environment from the UI. After restarting the Deployit Server, reload the UI in the browser. Got to the Repository tab, and find the Production Environment in the Environments tree. Double-click on it to open its editor and click on the "Deployment Checklist" tab. The new property will not be enabled, meaning that this check is not active for the Production Environment. Tick the box to enable it and save.</p>
<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/05/releasedashboard-edit-environment.png"><img class="alignnone size-full wp-image-6333" title="releasedashboard-edit-environment" src="http://blog.xebialabs.com/wp-content/uploads/2012/05/releasedashboard-edit-environment.png" alt="" /></a></p>
<p>Now go to the Release Dashboard and you will see that the condition has been added</p>
<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/05/releasedashboard-pipeline.png"><img class="alignnone size-full wp-image-6334" title="releasedashboard-pipeline" src="http://blog.xebialabs.com/wp-content/uploads/2012/05/releasedashboard-pipeline.png" alt="" /></a></p>
<h2 id="setting-permissions">Setting permissions</h2>
<p>Here's a summary of the relevant security settings for the Release Dashboard:</p>
<ul>
<li>The <code>repo#edit</code> permission on the DeploymentPackage is used to check if a user is allowed to set or unset checks in the Deployment Checklist.</li>
<li>When viewing the deployment pipeline, only the environments are shown if the user has <code>read</code>permission on it. For example, if user 'developer' has access to the Development and Testing environments, she will only see those environments in the Release Dashboard and not the others.</li>
<li>Regular deployment permissions (<code>deploy#initial</code>, <code>deploy#upgrade</code>) apply when a deployment is initiated from the Release Dashboard.</li>
</ul>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebialabs.com%2F2012%2F05%2F04%2Fdeployit-cookbook-adding-a-check-to-the-deployment-checklist%2F&amp;title=Deployit%20Cookbook%3A%20Adding%20a%20check%20to%20the%20Deployment%20Checklist" id="wpa2a_2"><img src="http://blog.xebialabs.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebialabs.com/2012/05/04/deployit-cookbook-adding-a-check-to-the-deployment-checklist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XebiaLabs Tech Rally &#8211; April, 2012</title>
		<link>http://blog.xebialabs.com/2012/05/02/xebialabs-tech-rally-april-2012/</link>
		<comments>http://blog.xebialabs.com/2012/05/02/xebialabs-tech-rally-april-2012/#comments</comments>
		<pubDate>Wed, 02 May 2012 20:13:31 +0000</pubDate>
		<dc:creator>Martin van Vliet</dc:creator>
				<category><![CDATA[XebiaLabs]]></category>

		<guid isPermaLink="false">http://blog.xebialabs.com/?p=6247</guid>
		<description><![CDATA[When working on a product like Deployit, the development team has many ideas for new features and improvements in the product or the development process. Some of them can be implemented straight away, others are too big or require some &#8230; <a href="http://blog.xebialabs.com/2012/05/02/xebialabs-tech-rally-april-2012/">read more >></a>]]></description>
			<content:encoded><![CDATA[<p>When working on a product like Deployit, the development team has many ideas for new features and improvements in the product or the development process. Some of them can be implemented straight away, others are too big or require some investigation. Periodically, we set aside a day to work on the most interesting and promising of these ideas. The end result of this day of creative hacking is working code that demonstrates how a particular idea could be implemented.</p>
<p>Last week was our most recent Tech Rally and here are some of the things we worked on.<br />
<span id="more-6247"></span></p>
<p><strong>Easy way to incorporate scripts in a deployment</strong></p>
<p>Many customers want to customize Deployit to fit their environment. Although this is possible, sometimes users just want to include a particular script at a certain place in their deployment plan, without creating new custom CIs. We prototyped a script contributor which allows user to provide a script and the conditions under which to trigger it and it will be included in the deployment plan automatically.</p>
<p><strong>Record command line scripts using the GUI</strong></p>
<p>To make it easier to write command line scripts for Deployit, add the ability to record a GUI session and translate the commands into a CLI script. The user can start/stop recording and copy the resulting CLI script for further editing or inclusion in a plugin.</p>
<p>Here is a screenshot of this feature in action:</p>
<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/05/recorded-cli-script.png"><img src="http://blog.xebialabs.com/wp-content/uploads/2012/05/recorded-cli-script-300x161.png" alt="" title="recorded-cli-script" width="300" height="161" class="alignnone size-medium wp-image-6315" /></a></p>
<p><strong>Customize Deployit using the GUI</strong></p>
<p>Editing an XML file to customize Deployit can be intimidating for new users. Make it possible to customize Deployit (adding new types, changing existing types, changing scripts) directly from the GUI. Update the running Deployit system with these changes so they are available immediately without a server restart.</p>
<p><strong>Deployment to a virtual (cloud) environment</strong></p>
<p>THe idea is to allow users to deploy to a cloud environment from Deployit. The target environment is provisioned on the fly during the deployment. We prototyped an approach that allows the user to create a representation of the middleware in Deployit and the environment that contains the virtual middleware takes care of provisioning. To test this idea, we created an environment based on Vagrant and extended the hosts in Deployit with a Vagrant VM id. The VM that Vagrant instantiates uses Puppet to properly install and configure the middleware. Once this is done, the deployment continues with installing the middleware.</p>
<p>Here is a screenshot of this deployment in action:</p>
<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/05/vagrant-cloud-deployment.png"><img src="http://blog.xebialabs.com/wp-content/uploads/2012/05/vagrant-cloud-deployment-246x300.png" alt="" title="vagrant-cloud-deployment" width="246" height="300" class="alignnone size-medium wp-image-6316" /></a></p>
<p><strong>Alternative Deployit GUI testing tool</strong></p>
<p>We're always on the lookout for improvements to our development and testing tools. In this case, the question was whether using a combination of free, open-source tools could replace the RIATest testing tool we use for the Deployit GUI. We found that the RIATest tool, while it has it's limitations, does make it a lot easier to test the Deployit GUI. There would have to be a lot of custom work to get the open-source tools to this level. If only RIATest would improve their scripting language! <img src='http://blog.xebialabs.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>All in all, it was a fun day of hacking and creativity! Really cool to see what we can accomplish in just one day!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebialabs.com%2F2012%2F05%2F02%2Fxebialabs-tech-rally-april-2012%2F&amp;title=XebiaLabs%20Tech%20Rally%20%26%238211%3B%20April%2C%202012" id="wpa2a_4"><img src="http://blog.xebialabs.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebialabs.com/2012/05/02/xebialabs-tech-rally-april-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deployit Cookbook: Setup Security Roles</title>
		<link>http://blog.xebialabs.com/2012/04/26/deployit-cookbook-setup-security-roles/</link>
		<comments>http://blog.xebialabs.com/2012/04/26/deployit-cookbook-setup-security-roles/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 13:42:35 +0000</pubDate>
		<dc:creator>Hes Siemelink</dc:creator>
				<category><![CDATA[Deployit Cookbook]]></category>
		<category><![CDATA[Deployit]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://blog.xebialabs.com/?p=6282</guid>
		<description><![CDATA[Example on how to set up security roles in Deployit 3.7 <a href="http://blog.xebialabs.com/2012/04/26/deployit-cookbook-setup-security-roles/">read more >></a>]]></description>
			<content:encoded><![CDATA[<p>Deployit provides fine-grained security settings based on roles and permissions and allows them to be configured through the CLI and in the GUI.</p>
<p>In this example, we'll be setting up security roles using the GUI. The example environment has two applications, <strong>OnlineOrders</strong> and <strong>SiteSearch</strong> that are both deployed to a test server before going to production. There are two different teams developing and deploying the applications. One team can't see the other's team application. Moreover, <strong>developers</strong> can only deploy to the test environment. <strong>Deployers</strong> can deploy both to the test environment and to production.<br />
<span id="more-6282"></span><br />
We'll set up different security roles for the different users in the organization.</p>
<p>This example assumes that there are already users and groups present in the system, for example by way of LDAP integration. For more detailed information on Deployit Security (including LDAP integration), please refer to the <a href="http://docs.xebialabs.com/releases/3.7/securitymanual.html">Deployit Security Manual</a></p>
<h2>Overview</h2>
<p>Here's an overview of the environment for this example.</p>
<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-overview.png"><img class="alignnone size-full wp-image-6285" title="Security Setup Overview" src="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-overview.png" alt="security-setup-overview" /></a></p>
<p>We have two applicatons: <strong>OnlineOrders</strong> and <strong>SiteSearch</strong>. They're maintained by two different teams and deployed independently.</p>
<p>Both applications are deployed to the same environments: The Test Environment, containing one server called <strong>testserver</strong> and the Production Environment, that contains two physical servers, <strong>server1</strong> and <strong>server2</strong>.</p>
<h2>Roles</h2>
<p>At the current state, no roles have been implemented.</p>
<p>This is the list of roles we want to have in the system.</p>
<ul>
<li><strong>OnlineOrders developer</strong> - May update the OnlineOrders application.</li>
<li><strong>SiteSearch developer</strong> - May update the SiteSearch application.</li>
<li><strong>Lead developer</strong> - May update and install any application on the Test Environment</li>
<li><strong>OnlineOrders Deployer</strong> - May update OnlineOrders application in Test and Production</li>
<li><strong>SiteSearch Deployer</strong> - May update SiteSearch application in Test and Production</li>
<li><strong>Lead Deployer</strong> - May install any application on any environment</li>
</ul>
<p>To add roles, log in as the a user with admin rights and got the Admin tab. Under the Admin tab, click on the Roles tab. This is the screen where you add, modify and delete roles. To add a role, click on the green plus on the right-hand side of the screen.</p>
<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-roles.png"><img class="alignnone size-full wp-image-6286" title="Roles" src="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-roles.png" alt="Roles" /></a></p>
<p>Enter the name of the role in the first column. The role is used within Deployit only. In the second column, 'Principals', you can specify a list of users and groups. If you have configured Deployit to point to your LDAP directory, you can add users and groups from LDAP here. To enter more than one principal, use a comma-separated list.</p>
<p>Hit Save to persist the changes. Note that the UI will display the roles in alphabetical order.</p>
<h2>Directories</h2>
<p>The following is important enough to put in italics:</p>
<p><em>In Deployit, you can only set security permissions on directories.</em></p>
<p>That means it's not possible to set permissions on individual CI nodes, like Packages or Environments. In practice you will need to impose a folder structure on your repository in order to set fine-grained permissions. The advantage here is that security will be explicit and localized in one place. Note that the root nodes in the repository ('Applications', 'Environments', etc.) are a special kind of folder and also allow setting of permissions.</p>
<p>Now let's add some directories. Go to the Repository browser, right-click on Applications and choose New &gt; core &gt; core.Directory. Name the new directory "Order". Now move the OnlineOrder package into the newly created Order directory by way of drag-and-drop. Following this procedure we create the following structure:</p>
<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-directories.png"><img class="alignnone size-full wp-image-6288" title="Security Setup Directories" src="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-directories.png" alt="security-setup-directories" width="208" height="280" /></a></p>
<h2>Assigning Roles</h2>
<p>To assign roles, right-click on a Directory and choose Permissions. Let's start by assigning roles to the Applications/Orders directory.</p>
<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-click-permissions.png"><img class="alignnone size-full wp-image-6289" title="Right click permissions" src="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-click-permissions.png" alt="Right click permissions" /></a></p>
<p>In the resulting screen, we add roles for Lead Developer, Lead Deployer, OnlineOrders Developer and OnlineOrders Deployer.</p>
<p>We assign the roles as follows.</p>
<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-permissions-app.png"><img class="alignnone size-full wp-image-6291" title="security-setup-permissions-app" src="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-permissions-app.png" alt="Permissions on the application" /></a></p>
<p>This means that both the Lead Developer and the Lead Deployer are allowed to add and remove applications in the Orders directory, but regular developers and deployers assigned to the project may only upgrade an existing deployment, say from OnlineOrders 1.0 to 2.0.</p>
<p>We can do a similar setup for the Search directory, substituting the OnlineOrders Developer and Deployer roles with the corresponding SiteSearch roles.</p>
<p>Note that if a role is not added to this screen, it effectively has no permissions. To remove a role, simply untick all its permissions and hit Save.</p>
<p>Now we'll set permissions to the Test environment. This environment is can be accessed by both development and ops teams. Simply add all roles and grant all permissions to the Lead Developers and Deployers. Regular developers / deployers have more restricted access.</p>
<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-permissions-test.png"><img class="alignnone size-full wp-image-6292" title="security-setup-permissions-test" src="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-permissions-test.png" alt="Permissions on Test environment" /></a></p>
<p>For production, we only want deployers to have access. Only the lead deployer may alter the environment from Deployit.</p>
<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-permissions-prod1.png"><img class="alignnone size-full wp-image-6294" title="security-setup-permissions-prod" src="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-permissions-prod1.png" alt="Permissions on Production environment" /></a></p>
<h2>Refining Security Levels</h2>
<p>In our current setup, the Test and Production environments are shared for the OnlineOrders and SiteSearch applications. That means that the OnlineOrders deployers can see the SiteSearch application and vice versa. To avoid this, we need to split the environments into application-specific environments. So the Production environment will be split into an 'Online Order Production environment' and 'SiteSearch Production environment'. Note that they will still refer to the same physical servers. But, by splitting them up, you can effectively hide them from different sets of users in Deployit. To do so, we will also need another Directory layer, that splits the applications under the Environment node.</p>
<p>Here's the new setup:</p>
<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-environment-refined.png"><img class="alignnone size-full wp-image-6295" title="security-setup-environment-refined" src="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-environment-refined.png" alt="" width="303" height="310" /></a></p>
<p>The permissions for Environment/Orders/Production look like:</p>
<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-permissions-prod-orders.png"><img class="alignnone size-full wp-image-6296" title="security-setup-permissions-prod-orders" src="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-permissions-prod-orders.png" alt="" /></a></p>
<p>There are several important issues to note here.</p>
<p><strong>NOTE 1</strong> - Security setting on a lower level overwrite <em>all</em> permissions from a higher level. So the settings on the Orders/Production directory is all there is for the OrderSearch Production Environment. There is no inheritance from higher levels, combining settings from various directories.</p>
<p><strong>NOTE 2</strong> - If there are no permissions set on a directory, the permission settings from the parent are taken (recursively). So if you have a deep hierarchy of nested directories, but you don't set any permissions on them, Deployit will take the permissions set on the root node, Environments for example.</p>
<p><strong>NOTE 3</strong> - All directories higher up in a hierarchy need to provide read permission for the roles defined in the lowest directory. Otherwise the permissions itself can't be read! This analogous to file permissions on unix directories. On unix, you also need read permissions on (all) parent directories, in order to list its contents. For example, here's the permissions table of Environment/Orders</p>
<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-read-permissions-in-parent.png"><img class="alignnone size-full wp-image-6298" title="security-setup-read-permissions-in-parent" src="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-read-permissions-in-parent.png" alt="" /></a></p>
<h2>Restricted access in the UI</h2>
<p>After setting up the security roles, users will have restricted access to the UI. For example, this is what an OnlineOrder developer will see when logging in:</p>
<p>Note that the SiteSearch application and environments are missing, as well as the Production environment for OnlineOrders. The Admin tab is also inaccessible.</p>
<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-developer.png"><img class="alignnone size-full wp-image-6299" title="security-setup-developer" src="http://blog.xebialabs.com/wp-content/uploads/2012/04/security-setup-developer.png" alt="" /></a></p>
<p>This concludes our Security Setup example. For more information, please refer to the <a href="http://docs.xebialabs.com/releases/3.7/securitymanual.html">Deployit Security Manual</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.xebialabs.com/2012/04/26/deployit-cookbook-setup-security-roles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cost Effective, Fast and Scalable: Is It Time You Considered Automated App Deployment?</title>
		<link>http://blog.xebialabs.com/2012/04/25/cost-effective-fast-and-scalable-is-it-time-you-considered-automated-app-deployment/</link>
		<comments>http://blog.xebialabs.com/2012/04/25/cost-effective-fast-and-scalable-is-it-time-you-considered-automated-app-deployment/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 15:27:43 +0000</pubDate>
		<dc:creator>Oonagh O'Regan</dc:creator>
				<category><![CDATA[XebiaLabs]]></category>

		<guid isPermaLink="false">http://blog.xebialabs.com/?p=6277</guid>
		<description><![CDATA[Our approach to software development has changed in the last few years. IT professionals and software developers are working more closely together than ever before. The DevOps trend also extends to an acknowledgement that automation is a key factor in &#8230; <a href="http://blog.xebialabs.com/2012/04/25/cost-effective-fast-and-scalable-is-it-time-you-considered-automated-app-deployment/">read more >></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/04/Coert_Baart.jpg"><img class="alignright size-medium wp-image-6278" title="Coert_Baart" src="http://blog.xebialabs.com/wp-content/uploads/2012/04/Coert_Baart-200x300.jpg" alt="" width="200" height="300" /></a></p>
<p>Our approach to software development has changed in  the last few years. IT professionals and software developers are  working more closely together than ever before. The DevOps trend also  extends to an acknowledgement that automation is  a key factor in reducing costs and increasing release speeds.</p>
<p>Striving to be cost effective is a constant for any  business but the increased focus on speed of deployment is a product of  the growth of the Cloud and Agile development methodology. The bottom  line is – the faster new features, fixes and  improvements reach the customer, the greater their satisfaction. The  same principle applies in an enterprise environment – the faster the  latest version of an application reaches users, the more productive they  can be.</p>
<p>Both environments require scalability. As your  product offerings grow and branch out, the delivery method must be  capable of handling the changes. In the enterprise environment a large  portfolio of software applications is the norm and  any deployment solution must be able to scale.</p>
<p>Automated app deployment can reduce costs, increase  speed and scale as needed, but before we take a look at the solution  let’s discuss the problem.<br />
<span id="more-6277"></span><br />
<strong>App Deployment Nightmares</strong></p>
<p>There are a lot of potential problems in deploying  applications manually. Not least of which is the time it can consume for  developers and IT support. Configuration is the first challenge. Where  is the application stored? Which version  should be installed? Where should it be installed? Where is the  configuration file and how is it applied?</p>
<p>Security is another issue. What permissions are required to install and run the application? How much access do users have?</p>
<p>Manual steps also cost time and money and they  introduce the potential for human error. You may have to copy a specific  file to a specific location or rename a file. Even running separate  scripts for different environments and projects  can be a time drain and every manual process required increases risk.</p>
<p><strong>Automation Headaches</strong></p>
<p>Automated app deployment has its own set of  problems. If you have someone create custom deployment scripts then you  can bypass some of the problems but that will only work for one app  deployment. It also takes time and it means you are  relying on that one specialist to update the scripts as required.  Scripts can be very complex and they aren’t standardized, especially if  different developers write different scripts.</p>
<p>If you have a series of scripts then you need a  process in place and instructions on how to run them correctly. They  will also need to be edited frequently to cater for any changes. A  monolithic script might be able to cover the entire  deployment process so that you have just one script to run but what  happens when you have to deploy to a different environment? What about  partial upgrades? Any changes will necessitate a modification of the  script.</p>
<p>Either case requires specialist support to run and  adapt and results in a system that won’t work for a different app  deployment. If you need to rollback for any reason it will be a major  headache. So what is the solution?</p>
<p><strong>Intelligent ARA</strong></p>
<p>Looking to push Application Release Automation to  the next level requires some clever tools. In order to break the  bottleneck you need a system that is truly automated, standardized and  capable of handling multiple application deployments  across projects. The aim is to avoid reliance on specialists writing  scripts.</p>
<p>The advantages can be impressive. According to a  Gartner report by Ronni J. Colville, ARA tools help to minimize the risk  of human error and add reliability. They also provide transparency for  all of the stakeholders involved and, more  importantly, limit downtime and ensure faster delivery to the end user.  That visibility throughout the process can be a real boost to DevOps as  both ends of the operation can see the process in action.</p>
<p><strong>Continuous Deployment</strong></p>
<p>There’s one step beyond an intelligent app  deployment system and that’s the idea of rolling out software updates as  soon as possible to the live server through a continuous integration  system. Realistically this requires you to have some  kind of continuous automated testing system in place so you can reduce  the risk of introducing problems. On the other hand it means you can  push out extremely frequent updates, dispense entirely with any manual  tasks associated with release and forget about  the last minute rush to squeeze in features before the build deadline  which so often results in bugs.</p>
<p>A fully automated system capable of planning and  adjusting as necessary to serve various environments makes continuous  deployment a potential reality. Provided you have the ability to track  the process, rollback and uninstall where necessary,  you can minimize the risks. For true commitment to an agile development  methodology this is a natural endpoint.</p>
<p><strong>Bottleneck at the Funnel</strong></p>
<p>As software development has advanced a number of  new trends and ideas are helping developers to get their product to  market faster. It is always more cost effective to solve problems as  early as possible in the process and this simple truth  has transformed our approach to development and testing.</p>
<p>The deployment end of the funnel has remained as a  bottleneck sapping up the time and energy of talented software engineers  and IT professionals. It is still often a potential source of human  error and when it is badly handled the results  can be devastating in terms of downtime or dissatisfied customers.</p>
<p>The same logic being applied to software  development needs to carry over into the deployment phase. Ultimately by  building a complete pipeline from development, through quality  assurance, to deployment, where automation and standardization  is the ideal, we can save money, deliver as fast as possible and scale  as needed. It just makes sense.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebialabs.com%2F2012%2F04%2F25%2Fcost-effective-fast-and-scalable-is-it-time-you-considered-automated-app-deployment%2F&amp;title=Cost%20Effective%2C%20Fast%20and%20Scalable%3A%20Is%20It%20Time%20You%20Considered%20Automated%20App%20Deployment%3F" id="wpa2a_6"><img src="http://blog.xebialabs.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebialabs.com/2012/04/25/cost-effective-fast-and-scalable-is-it-time-you-considered-automated-app-deployment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deployit and Puppet integration, part I</title>
		<link>http://blog.xebialabs.com/2012/04/25/deployit-and-puppet-integration-part-i/</link>
		<comments>http://blog.xebialabs.com/2012/04/25/deployit-and-puppet-integration-part-i/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 12:40:49 +0000</pubDate>
		<dc:creator>Martin van Vliet</dc:creator>
				<category><![CDATA[XebiaLabs]]></category>

		<guid isPermaLink="false">http://blog.xebialabs.com/?p=6245</guid>
		<description><![CDATA[At XebiaLabs, we build Deployit, the most advanced Application Release Automation (ARA) solution on the market. The main reason for customers to use our product is to speed up time to market for new software. The ability to deploy software, &#8230; <a href="http://blog.xebialabs.com/2012/04/25/deployit-and-puppet-integration-part-i/">read more >></a>]]></description>
			<content:encoded><![CDATA[<p>At XebiaLabs, we build <a href="http://www.xebialabs.com/products">Deployit</a>, the most advanced Application Release Automation (ARA) solution on the market. The main reason for customers to use our product is to speed up time to market for new software. The ability to deploy software, without errors and without down time, with the push of a button is a critical component in our customers' agile, continuous delivery and cloud strategies.</p>
<p>As part of those initiatives, many of our customers are also virtualizing their infrastructure. The functionality that makes Deployit ideal for deploying new releases also make it a perfect companion to an on-demand infrastructure strategy. When spikes in demand for applications hit, virtualized infrastructure makes it possible to scale up quickly and automatically. But this infrastructure is not terribly useful without an application running on it. Deployit ensures that the newly provisioned servers run the right version of the desired application (configuring loadbalancers, static HTML, Java or .NET applications and databases) and join in shouldering the increased load.<br />
<span id="more-6245"></span><br />
<a href="http://blog.xebialabs.com/wp-content/uploads/2012/04/puppet_logo-e1335942655923.png"><img src="http://blog.xebialabs.com/wp-content/uploads/2012/04/puppet_logo-e1335942655923.png" alt="" title="puppet_logo" width="100" height="100" class="alignleft size-full wp-image-6308" /></a><strong>Deployit and Puppet</strong></p>
<p>Provisioning and deployment are complementary processes that, together, enable on-demand application scaling. There are two ways to integrate Deployit and Puppet to make this happen.</p>
<p>Chronologically, provisioning has to take place before deployment can. The deployment automation solution must become aware of the new middleware before an application can be deployed to it. In our case, when a new host is started and Puppet is run to provision it, Puppet drives the process and informs Deployit when it is done. This type of integration is the topic of this blog.</p>
<p>You could consider Puppet to deploy your applications as well. However, there are a couple of things to consider. First, deployments to WebSphere, WebLogic or JBoss all have their own peculiarities. Puppet does not have any middleware platform intelligence out of the box. Second, Puppet does not manage cross-node dependencies so when scaling up an entire stack (say web server, application server and database) Puppet can not be used to perform a deployment when the entire stack is provisioned. Finally, deployments to an environment require knowledge of that environment that goes beyond the node being provisioned. For instance, a deployment of a website on a new virtual server may require reconfiguring the environment's loadbalancer. Puppet does not have this type of overview.</p>
<p>Scaling up in these scenarios can best be driven from the application layer. The next blog describes how Deployit can drive deployments to virtual environment with Puppet to provide an overall, end-to-end deployment service.</p>
<p><strong>Driving Deployit from Puppet</strong></p>
<p>Puppet supports a flexible module system that allows providers to plug in additional functionality. This functionality can then be invoked from Puppet manifests, descriptions of the configuration newly provisioned node should have. To drive Deployit from Puppet, we created a Puppet Deployit module that can be found in <a href="https://github.com/xebialabs/community-plugins">Deployit's community github repository</a>. It adds resources to Puppet that can be used from a manifest to interact with Deployit. The Jython Deployit command line interface (CLI) is installed on the node to communicate with the Deployit server.</p>
<p>The main use case our customers have is registering middleware that is provisioned through Puppet in Deployit to make it ready for deployment. In the following example, a Puppet manifest is shown that provisions a node with an Apache web server and creates a representation of the server in a central Deployit installation.</p>
<p><script src="https://gist.github.com/2470806.js"> </script></p>
<p>The Puppet manifest consists of three main sections. The first section installs the latest version of the Apache webserver. The second section installs the Deployit CLI. The final section registers the provisioned webserver with Deployit. We will examine this last section in detail.</p>
<p>The resource <code>deployit::ci</code> represents a CI (Configuration Item) that can be created in Deployit. Both a host CI (the server that Apache is running on) and the Apache web server itself must be created. The id, type and properties of the CI are specified in the manifest. Each of these values is the same for every provisioned webserver. Note the use of the configuration value <code>$::ipaddress_eth1</code>. This facter fact is replaced at runtime with the IP address of the virtual machine. It's use makes it possible to reuse the exact same manifest for every Apache instance provisioned. The <code>apache2-server</code> CI is also added to the <code>TEST-Website</code> environment so that it can be targeted for deployment.</p>
<p>When the webserver node is fully provisioned, this is how the CIs look in the Deployit Repository Browser:</p>
<div id="attachment_6249" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.xebialabs.com/wp-content/uploads/2012/04/Screen-Shot-2012-04-24-at-16.28.21.png"><img src="http://blog.xebialabs.com/wp-content/uploads/2012/04/Screen-Shot-2012-04-24-at-16.28.21-300x206.png" alt="Puppet-provisioned webserver in Deployit" title="Puppet-provisioned webserver in Deployit" width="300" height="206" class="size-medium wp-image-6249" /></a><p class="wp-caption-text">Puppet-provisioned webserver in Deployit</p></div>
<p>If we have a Website application version 1.0 loaded in Deployit, we can deploy it to the TEST-Website environment now, with the HTML in our website automatically targeted to the newly provisioned server:</p>
<div id="attachment_6250" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.xebialabs.com/wp-content/uploads/2012/04/Screen-Shot-2012-04-24-at-16.29.35.png"><img src="http://blog.xebialabs.com/wp-content/uploads/2012/04/Screen-Shot-2012-04-24-at-16.29.35-300x108.png" alt="Deployment of Website/1.0 to Puppet-provisioned webserver" title="Deployment of Website/1.0 to Puppet-provisioned webserver" width="300" height="108" class="size-medium wp-image-6250" /></a><p class="wp-caption-text">Deployment of Website/1.0 to Puppet-provisioned webserver</p></div>
<p><span style="font-weight: bold;">Conclusion</span></p>
<p>Deployit and Puppet make a great team to achieve effortless scaling of your application. Using the Deployit Puppet module, Puppet provisioned nodes can register themselves with Deployit to make them ready for deployments.</p>
<p>Stay tuned for the next blog which will show how Deployit can drive Puppet to provision a completely new environment and instantly deploy your application on it.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebialabs.com%2F2012%2F04%2F25%2Fdeployit-and-puppet-integration-part-i%2F&amp;title=Deployit%20and%20Puppet%20integration%2C%20part%20I" id="wpa2a_8"><img src="http://blog.xebialabs.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebialabs.com/2012/04/25/deployit-and-puppet-integration-part-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Come on, vagrant up! Saving Vagrant images that don&#8217;t get a NAT address</title>
		<link>http://blog.xebialabs.com/2012/04/23/come-on-vagrant-up-saving-vagrant-images-that-dont-get-a-nat-address/</link>
		<comments>http://blog.xebialabs.com/2012/04/23/come-on-vagrant-up-saving-vagrant-images-that-dont-get-a-nat-address/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 16:45:55 +0000</pubDate>
		<dc:creator>Andrew Phillips</dc:creator>
				<category><![CDATA[XebiaLabs]]></category>
		<category><![CDATA[Deployit]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[Puppet]]></category>
		<category><![CDATA[vagrant]]></category>
		<category><![CDATA[virtual box]]></category>

		<guid isPermaLink="false">http://blog.xebialabs.com/?p=6231</guid>
		<description><![CDATA[As part of testing and demonstrating our advanced deployment automation1 platform Deployit, we at XebiaLabs use a lot of cloud and Devops tooling to be able to handle all the different types of middleware we support and build, CI and &#8230; <a href="http://blog.xebialabs.com/2012/04/23/come-on-vagrant-up-saving-vagrant-images-that-dont-get-a-nat-address/">read more >></a>]]></description>
			<content:encoded><![CDATA[<p>As part of testing and demonstrating our advanced deployment automation<sup>1</sup> platform <a href="http://www.xebialabs.com/products" target="_new">Deployit</a>, we at <a href="http://www.xebialabs.com" target="_new">XebiaLabs</a> use a lot of cloud and Devops tooling to be able to handle all the different types of middleware we support and build, CI and Ops tooling with which we integrate<sup>2</sup>.</p>
<p>I was recently setting up a <a href="http://www.vagrantup.com" target="_new">Vagrant</a><sup>3</sup> environment to demonstrate Deployit's Puppet module, which automatically registers new Puppet-provisioned middleware with your deployment automation platform to enable application-tier deployments to it, and ended up wrestling for quite some time with a tricky <a href="http://www.virtualbox.org" target="_new">VirtualBox</a> problem.<br />
<span id="more-6231"></span><br />
The <a href="https://www.virtualbox.org/ticket/4038" target="_new">issue in question</a> has been around for over two years now, and relates to VirtualBox's DHCP server <em>sometimes</em>, under as-yet-undetermined circumstances, failing to allocate an IP address to the NAT interface.<br />
Since all Vagrant-managed images get a NAT interface by default<sup>4</sup>, this is more than a little inconvenient: Vagrant simply hangs during the VM configuration phase.</p>
<p><img src="http://blog.xebialabs.com/wp-content/uploads/2012/04/saving-vagrant-up-img1-300x147.png" alt="" title="saving-vagrant-up-img1" width="300" height="147" class="aligncenter size-medium wp-image-6232" /></p>
<p>Since the problem doesn't occur deterministically, one way to work around this issue is simply to avoid having to reboot the image: play the "NAT lottery" until you get lucky by killing the VBoxManage process if the image is hanging and trying <code>vagrant up</code> again, then run <code>vagrant suspend</code> rather than <code>vagrant halt</code> and you can resume the images when you need them. </p>
<p>That <em>will</em> work, but I wasn't particularly happy with this approach because, aside from me not liking the idea of repeatedly killing hypervisor processes (I'm somewhat of a pacifist in this regard <img src='http://blog.xebialabs.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ), it effectively "cripples" Vagrant: the ease with which you can start, stop and re-configure images is precisely one of the things that makes Vagrant so useful!</p>
<p>One of the things I quickly discovered is that, if you start a Vagrant-created image via the VirtualBox UI and it experiences the problem<sup>5</sup>, cycling the NAT adapter with <code>ifdown eth0 && ifup eth0</code> fixes things: this second time, it <em>is</em> able to pick up an IP address from the DHCP server. </p>
<p><img src="http://blog.xebialabs.com/wp-content/uploads/2012/04/saving-vagrant-up-img2-300x252.png" alt="" title="saving-vagrant-up-img2" width="300" height="252" class="size-medium" /><img src="http://blog.xebialabs.com/wp-content/uploads/2012/04/saving-vagrant-up-img3-300x252.png" alt="" title="saving-vagrant-up-img3" width="300" height="252" class="size-medium" /></p>
<p>Unfortunately, this does't get you far with an image that Vagrant itself is trying to start: Vagrant creates headless sessions, so you can't actually access them through the VirtualBox UI until you've killed Vagrant and the VBoxHeadless process it starts.</p>
<p><img src="http://blog.xebialabs.com/wp-content/uploads/2012/04/saving-vagrant-up-img4-300x293.png" alt="" title="saving-vagrant-up-img4" width="300" height="293" class="aligncenter size-medium wp-image-6235" /></p>
<p>Luckily, VirtualBox allows you to execute commands on the guest OS <em>without</em> having to use the UI, via VBoxManage's <code>guestcontrol</code> command. So when Vagrant was again hanging while waiting to connect to the image, the first thing I tried was</p>
<p><code>/path/to/vboxmanage guestcontrol <em>my-vagrant-image</em> exec "/usr/bin/sudo" --username vagrant --password vagrant --verbose --wait-stdout ifdown eth0<br />
/path/to/vboxmanage guestcontrol <em>my-vagrant-image</em> exec "/usr/bin/sudo" --username vagrant --password vagrant --verbose --wait-stdout ifup eth0<br />
</code></p>
<p>That <strong>did</strong>, as hoped, allow the NAT adapter to pick up an IP address. Unfortunately, it also confused Vagrant, which (presumably thinking that the image had gone offline) quit.</p>
<p>Happily, you don't have to bring down the adapter to request a new IP address: <a href="http://linux.die.net/man/8/dhclient" target="_new"><code>dhclient</code></a> will do just as well. And indeed</p>
<p><code>/path/to/vboxmanage guestcontrol <em>my-vagrant-image</em> exec "/usr/bin/sudo" --username vagrant --password vagrant --verbose --wait-stdout dhclient<br />
</code></p>
<p>works: the NAT adapter picks up an IP address and, after a few seconds, Vagrant continues with the image configuration.</p>
<p>Something to hopefully help out even if it indeed takes another couple of years to get to bottom of the actual issue <img src='http://blog.xebialabs.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<div style="background-color: #efeeea; border: 1px solid #AAAAAA; margin: 0.8em; padding: 0.4em; font-size: 85%;"><strong>Footnotes</strong></p>
<ol>
<li>Or Application Release Automation (ARA), if you follow Gartner</li>
<li>Check the <a href="http://www.xebialabs.com/platform_support" target="_new">platform support page</a> for details</li>
<li>For those not familiar with <a href="http://www.vagrantup.com" target="_new">Vagrant</a>, it's a powerful tool (written in Ruby) that allows you to declaritively define multiple related virtual images based on templates called 'boxes'. Vagrant orchestrates the interaction with <a href="http://www.virtualbox.org" target="_new">VirtualBox</a> to give you a very simple way of stopping, starting and configuring a cluster of images. In that sense, it's a little lit a VirtualBox-based <a href="http://aws.amazon.com/cloudformation" target="_new">CloudFormation</a>.</li>
<li>That's how Vagrant communicates with the image while configuring it</li>
<li>You'll know because <code>ifconfig</code> will show that the eth0 adapter does not have an IPv4 address</li>
</ol>
</div>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebialabs.com%2F2012%2F04%2F23%2Fcome-on-vagrant-up-saving-vagrant-images-that-dont-get-a-nat-address%2F&amp;title=Come%20on%2C%20vagrant%20up%21%20Saving%20Vagrant%20images%20that%20don%26%238217%3Bt%20get%20a%20NAT%20address" id="wpa2a_10"><img src="http://blog.xebialabs.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebialabs.com/2012/04/23/come-on-vagrant-up-saving-vagrant-images-that-dont-get-a-nat-address/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New version of the Deployit product &#8211; Out Soon.</title>
		<link>http://blog.xebialabs.com/2012/03/27/6222/</link>
		<comments>http://blog.xebialabs.com/2012/03/27/6222/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 15:26:14 +0000</pubDate>
		<dc:creator>Oonagh O'Regan</dc:creator>
				<category><![CDATA[XebiaLabs]]></category>

		<guid isPermaLink="false">http://blog.xebialabs.com/?p=6222</guid>
		<description><![CDATA[We are about to launch a new version of Deployit. It is an exciting time for the XebiaLabs team as we continue to fine tune our product with the goal of delivering the most advanced deployment automation features on the &#8230; <a href="http://blog.xebialabs.com/2012/03/27/6222/">read more >></a>]]></description>
			<content:encoded><![CDATA[<p>We are about to launch a new version of Deployit. It is an exciting time for the XebiaLabs team as we continue to fine tune our product with the goal of delivering the most advanced deployment automation features on the market.</p>
<p><strong><em>Here is a sneak peak at some of our upcoming features:</em></strong></p>
<p><strong>.Net Plugin</strong></p>
<p>Deployit now seamlessly integrates with .Net in addition to all other middleware platforms in your stack. Follow this link to a full list of platforms supported by Deployit - <a href="http://www.xebialabs.com/platform_support">http://www.xebialabs.com/platform_support</a> .</p>
<p>With Deployit , Enterprises can implement one deployment Best Practice for all deployments company-wide.</p>
<p><strong>Pipeline Dashboard<a href="http://blog.xebialabs.com/wp-content/uploads/2012/03/Screen-shot-2012-03-27-at-3.14.34-PM.png"><img class="alignright size-medium wp-image-6229" title="Screen shot 2012-03-27 at 3.14.34 PM" src="http://blog.xebialabs.com/wp-content/uploads/2012/03/Screen-shot-2012-03-27-at-3.14.34-PM-300x133.png" alt="" width="300" height="133" /></a></strong></p>
<p>The Deployit reporting has been further enhanced to include a pipeline of application releases. This report gives real-time insight into an applications progress through the release pipeline. This report provides useful data points regarding the overall health of your deployments and will allow a side by side comparison of application releases across a number of variables.</p>
<p><strong>Enhanced Security</strong></p>
<p>Deployit has leading security already built into the product, e.g. Role-based login.  With the latest version of the Deployit product all security, login credentials, etc, can be managed from within the GUI. This makes Deployit's security as usable as Deployit the platform <img src='http://blog.xebialabs.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  and continues the justification that <strong>Deployit is an Enterprise product built for Enterprise teams.</strong></p>
<p>More soon!!!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebialabs.com%2F2012%2F03%2F27%2F6222%2F&amp;title=New%20version%20of%20the%20Deployit%20product%20%26%238211%3B%20Out%20Soon." id="wpa2a_12"><img src="http://blog.xebialabs.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebialabs.com/2012/03/27/6222/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Achieving Agile Process Maturity Through Deployment Automation</title>
		<link>http://blog.xebialabs.com/2012/02/28/achieving-agile-process-maturity-through-deployment-automation/</link>
		<comments>http://blog.xebialabs.com/2012/02/28/achieving-agile-process-maturity-through-deployment-automation/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 19:02:08 +0000</pubDate>
		<dc:creator>Oonagh O'Regan</dc:creator>
				<category><![CDATA[XebiaLabs]]></category>
		<category><![CDATA[Agile Strategy]]></category>
		<category><![CDATA[Application Lifecycle Management]]></category>
		<category><![CDATA[Application Release Automation]]></category>
		<category><![CDATA[Cloud Deployments]]></category>
		<category><![CDATA[Continous Integration]]></category>
		<category><![CDATA[Continuous Delivery]]></category>
		<category><![CDATA[Continuous Deployments]]></category>
		<category><![CDATA[deployment automation]]></category>

		<guid isPermaLink="false">http://blog.xebialabs.com/?p=6184</guid>
		<description><![CDATA[New Whitepaper, by Bob Aiello Author of Configuration Management Best Practices, Practical Methods that Work in the Real World Paper Excerpt: Agile Process Maturity is essential for successful rapid iterative development and deployment automation is a key ingredient. Technology teams &#8230; <a href="http://blog.xebialabs.com/2012/02/28/achieving-agile-process-maturity-through-deployment-automation/">read more >></a>]]></description>
			<content:encoded><![CDATA[<p>New Whitepaper, by Bob Aiello<a href="http://blog.xebialabs.com/wp-content/uploads/2012/02/Screen-shot-2012-02-29-at-3.11.25-PM.png"><img class="alignright size-full wp-image-6207" title="Screen shot 2012-02-29 at 3.11.25 PM" src="http://blog.xebialabs.com/wp-content/uploads/2012/02/Screen-shot-2012-02-29-at-3.11.25-PM.png" alt="" width="188" height="196" /></a></p>
<p><a href="http://cmbestpractices.com/">Author of Configuration Management Best Practices, Practical Methods that Work in the Real World</a></p>
<p>Paper Excerpt:<br />
Agile Process Maturity is essential for successful rapid iterative development and deployment automation is a key ingredient.  Technology teams are finding that Agile practices help them to deliver working software that meets or exceeds their customer's expectations. The goal for every company is to establish practices that help all of their projects (and teams) succeed and that is exactly where Agile Process Maturity can help . These successes would be impossible without Agile CM's focus on rapid iterative development. Individuals and interactions may be more important than processes and tools, but you won't achieve success without automated build, package and deployment and that is exactly where wisely-chosen tools and process add value.  This paper will describe what you need to consider to establish Agile process that are repeatable and able to scale to meet the needs of your organization.</p>
<p>To download the paper - <a href="http://www.xebialabs.com/Agile_Process_Maturity">click here</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebialabs.com%2F2012%2F02%2F28%2Fachieving-agile-process-maturity-through-deployment-automation%2F&amp;title=Achieving%20Agile%20Process%20Maturity%20Through%20Deployment%20Automation" id="wpa2a_14"><img src="http://blog.xebialabs.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebialabs.com/2012/02/28/achieving-agile-process-maturity-through-deployment-automation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DevOps and Agile Process Optimization through Deployment Automation</title>
		<link>http://blog.xebialabs.com/2012/02/14/optimize-your-application-release-lifecycle-with-deployment-automation/</link>
		<comments>http://blog.xebialabs.com/2012/02/14/optimize-your-application-release-lifecycle-with-deployment-automation/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 16:43:43 +0000</pubDate>
		<dc:creator>Oonagh O'Regan</dc:creator>
				<category><![CDATA[XebiaLabs]]></category>
		<category><![CDATA[Agile Strategy]]></category>
		<category><![CDATA[Application Lifecycle Management]]></category>
		<category><![CDATA[Application Release Automation]]></category>
		<category><![CDATA[Cloud Deployments]]></category>
		<category><![CDATA[Continous Integration]]></category>
		<category><![CDATA[Continuous Delivery]]></category>
		<category><![CDATA[Continuous Deployments]]></category>
		<category><![CDATA[deployment automation]]></category>

		<guid isPermaLink="false">http://blog.xebialabs.com/?p=6127</guid>
		<description><![CDATA[Webinar: March 22nd, 12pm est Presenter: Michael Azoff, Principal Analyst at Ovum's Software Solutions Group. Andrew Phillips, VP of Products at XebiaLabs Devops has grown from within the operations community to embrace Agile principles and values and to deal with &#8230; <a href="http://blog.xebialabs.com/2012/02/14/optimize-your-application-release-lifecycle-with-deployment-automation/">read more >></a>]]></description>
			<content:encoded><![CDATA[<p><strong> </strong></p>
<p><a href="http://www.xebialabs.com/Join_Webinar"><img class="alignright size-full wp-image-6218" title="Matt_1" src="http://blog.xebialabs.com/wp-content/uploads/2012/02/Matt_1.png" alt="" width="246" height="124" /></a></p>
<p><strong>Webinar: March 22nd, 12pm est</strong><strong> </strong></p>
<p style="text-align: left;"><strong> </strong><em>Presenter:<br />
</em>Michael Azoff, Principal Analyst at Ovum's Software Solutions Group.<br />
Andrew Phillips, VP of Products at XebiaLabs</p>
<p>Devops has grown from within the operations community to embrace Agile principles and values and to deal with the increasing challenges that operations face. At the same time, Agile developers push the boundaries further with continuous delivery from source code change to production.</p>
<p>In this webinar, Michael Azoff will explore the challenges and opportunities that are changing the nature of application development and delivery, enabling businesses to respond to changing market needs, in minutes.</p>
<p>Andrew Phillips, XebiaLabs, will deliver a deployment automation market analysis and deployment automation product showcase. He will give you a greater understanding of how to integrate deployment automation into your evolving DevOps and Agile Strategies.</p>
<p>To Sign Up - <a href="http://www.xebialabs.com/Join_Webinar">http://www.xebialabs.com/Join_Webinar</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebialabs.com%2F2012%2F02%2F14%2Foptimize-your-application-release-lifecycle-with-deployment-automation%2F&amp;title=DevOps%20and%20Agile%20Process%20Optimization%20through%20Deployment%20Automation" id="wpa2a_16"><img src="http://blog.xebialabs.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebialabs.com/2012/02/14/optimize-your-application-release-lifecycle-with-deployment-automation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ergonomics and Deployment Frameworks</title>
		<link>http://blog.xebialabs.com/2012/02/07/ergonomics-and-deployment-frameworks/</link>
		<comments>http://blog.xebialabs.com/2012/02/07/ergonomics-and-deployment-frameworks/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 14:05:30 +0000</pubDate>
		<dc:creator>Oonagh O'Regan</dc:creator>
				<category><![CDATA[XebiaLabs]]></category>
		<category><![CDATA[Agile Best Practices]]></category>
		<category><![CDATA[Agile Strategy]]></category>
		<category><![CDATA[Application Release Automation]]></category>
		<category><![CDATA[Bob Aiello]]></category>
		<category><![CDATA[CM CrossRoads]]></category>
		<category><![CDATA[configuration management]]></category>
		<category><![CDATA[release management]]></category>

		<guid isPermaLink="false">http://blog.xebialabs.com/?p=6100</guid>
		<description><![CDATA[Guest Post: Bob Aiello, Author of Configuration Management Best Practices, Practical Methods that Work in the Real World Ergonomics is the study of making work environments more efficient, usually for the purpose of avoiding injuries and improving productivity. Another important &#8230; <a href="http://blog.xebialabs.com/2012/02/07/ergonomics-and-deployment-frameworks/">read more >></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.xebialabs.com/wp-content/uploads/2012/02/Screen-shot-2012-02-07-at-9.03.38-AM1.png"><img src="http://blog.xebialabs.com/wp-content/uploads/2012/02/Screen-shot-2012-02-07-at-9.03.38-AM1.png" alt="" title="Screen shot 2012-02-07 at 9.03.38 AM" width="189" height="197" class="alignright size-full wp-image-6102" /></a></p>
<p>Guest Post: Bob Aiello, <a href="http://cmbestpractices.com/">Author of Configuration Management Best Practices, Practical Methods that Work in the Real World </a></p>
<p>Ergonomics is the study of making work environments more efficient, usually for the purpose of avoiding injuries and improving productivity. Another important aspect of ergonomics is avoiding mistakes. When looking at the controls in the cockpit of a plane, the untrained observer can easily see that engineers have designed the controls to greatly minimize the possibility of a human error. So  it is puzzling to observe that some software engineers create confusing, incomplete and contradictory installation instructions that often lead to costly mistakes and rework. Technology professionals pride themselves on being smart and creative. I can recall many conversations where my colleagues tried to impress each other with their ability to handle complex concepts that others could not possibly follow. I am not like that. I prefer to create processes and software automation that ensures that a junior software engineer could implement the release even at 2 am (half sleepy) after drinking a couple of beers. Building in such user-friendliness requires some creative software ergonomics.<br />
<span id="more-6100"></span></p>
<p>Some computer languages are rather confusing. Many Perl programmers make use of complex (powerful) regular expressions that can manipulate and process large amounts of data. But then again, trying to read (and understand) some Perl regular expressions is almost impossible. I am not attacking (or against the use of) Perl, although I will admit my own bias in favor of Ruby as a scripting language. I am not alone in this regard as many deployment engineers utilize, and even some deployment frameworks are being written in, Ruby. A deployment framework is a set of tools and processes designed to help manage the entire deployment process. This often includes taking the existing deployment scripts and placing them into the deployment frameworks, usually enjoying the features of a dashboard showing the status of each step of the release.</p>
<p>This is where deployment frameworks and ergonomics can share some synergy. Build, package and deployment automation should be created with a focus on ergonomics. This means that your procedures, including scripts, should be easy to use and resistant to the errors frequently caused during human interaction. That sounds simple, but how specifically does one implement ergonomics in a script?  I write my scripts to including testing (often called verification and validation) into each step. This approach can help the operator verify that the correct results are being achieved. Now I might just loose some of my gunslinger reputation by making my scripts easy to use, but this focus on clarity also means that we are able to release code more often and be completely error-free-. Another tip is to allow the available tools to do the work for you. Some Deployment frameworks have the built in intelligence to work with application servers (e.g. WebSphere, WebLogic, Jboss and Tomcat). A few even sport advanced features such as algorithmic based release automation. Do remember that this is an iterative process and may take you a few release cycles before your scripts operate without any required human intervention. In fact, in the beginning you should have specific places for your operator to pause, read the messages on the screen and then press enter when they are confident that the script is working correctly. </p>
<p>Using the concepts learned from ergonomics will help you implement deployment automation that is fast, reliable and completely error-free!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebialabs.com%2F2012%2F02%2F07%2Fergonomics-and-deployment-frameworks%2F&amp;title=Ergonomics%20and%20Deployment%20Frameworks" id="wpa2a_18"><img src="http://blog.xebialabs.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebialabs.com/2012/02/07/ergonomics-and-deployment-frameworks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

