Wednesday, November 18, 2009

ControlTier 3.4.9 Released

ControlTier 3.4.9 has been released.
This release has quite a few bug fixes and improvements. It is also the first ControlTier release distributed in RPM packages.

Release 3.4.9 has both the traditional installer packages (zip,jar), and two RPM packages: ctier-server and ctier-client. The ctier-server is the full server installation with the embedded client. The ctier-client includes the client installation only allowing simpler package distribution and installation for client nodes.
Documentation: The ControlTier Wiki

Notable bug fixes:
  • Workflows with command error handlers may not have been passing options correctly to the error handler command (Bug #2888149).
  • Using JNDI authorization could cause a NPE when roles exist in the directory without any members (Bug #2887979).
  • The ctl-depot -a remove action was not removing everything cleanly (Bug #2880656).
  • The ClientInstaller module did not make use of the server.hostname property for the installer (Bug #2894072).
  • Dispatching commands was incorrectly using the hostname to determine if the node was local or not (Bug #2893443).
  • Reportcenter's "Command" filter was not working (Bug #2899533).
  • Jobcenter would not list scheduled jobs created by another user (Bug #2896263).
  • Sending mail via a success/error handler was not working with java 1.6 (Bug #2880643).
Notable Improvements:

  • Type.xml generation on the server: Workbench now generates type.xml files when modules are packaged, allowing easier transition to source-based module development. (Request #2898788).
  • script-exec support for "dav://" script paths: You can now use "dav://" URLs in your calls to script-exec (Request #2886738).

Tuesday, September 29, 2009

3.4.8 Feature: Exporting project.xml

A much requested feature has been implemented for 3.4.8, project.xml export, both from the command line via ProjectBuilder and via the GUI using Workbench.

Most ControlTier users manage their project model using XML files that define the resources that comprise their application and their environment. The ProjectBuilder module provides a command to upload these XML files to the ControlTier server webapp, Workbench. Up until 3.4.8, Workbench did not provide a direct interface to export the same data back to XML. This was particularly annoying when a project model was setup using the GUI interface of Workbench.

Here's a resource model from one of the examples:

To export that data from Workbench click on the "simpleTomcat" object and in the toolbar you will notice an XML icon. Click that icon and the browser will be directed to a page that contains the project.xml.

The same can be done from the command line via the ProjectBuilder command, find-objects.
Below, the find-objects command is used to lookup the same "simpleTomcat" object and the exported model data saved to the file: /tmp/simpleTomcat.xml

$ ctl -p demo -m ProjectBuilder -c find-objects -- -type Service -name simpleTomcat -out /tmp/simpleTomcat.xml
Results stored in file: /tmp/simpleTomcat.xml

Here's the the content of /tmp/simpleTomcat.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE project PUBLIC "-//ControlTier Software Inc.//DTD Project Document 1.0//EN" "project.dtd">

<setting type="Port" name="simpleTomcat-connector" description="The connector port used by Tomcat" settingValue="18080" settingType="TCP"/>
<setting type="ServiceSpawn" name="simpleTomcat" description="Whether to spawn separate process for the start script" settingValue="false" settingType=""/>
<setting type="ServiceStartScript" name="simpleTomcat" description="The script used by startService" settingValue="/Users/alexh/ctier/examples/service-package-deployment/" settingType="script"/>
<setting type="ServiceStopScript" name="simpleTomcat" description="The script used by stopService" settingValue="/Users/alexh/ctier/examples/service-package-deployment/" settingType="script"/>
<setting type="ServiceIsDownScript" name="simpleTomcat" description="The script used by assertServicesIsDown" settingValue="/Users/alexh/ctier/examples/service-package-deployment/isdown.xml" settingType="script"/>
<setting type="ServiceIsUpScript" name="simpleTomcat" description="The script used by assertServicesIsUp" settingValue="/Users/alexh/ctier/examples/service-package-deployment/isup.xml" settingType="script"/>
<package type="war" name="simple-123.war" description="A simple webapp" filename="simple-123.war" filetype="war" base="simple" version="123" release="" arch="noarch" buildtime="123" vendor="" restart="false" installroot="${env.CTIER_ROOT}/examples/service-package-deployment/apache-tomcat-5.5.28/webapps" repoUrl="http://strongbad:8080/jackrabbit/repository/workbench/pkgs/demo/war/wars/simple-123.war" releasetag="" installrank="2"/>
<deployment type="Service" name="simpleTomcat" description="The Tomcat deployment." basedir="/Users/alexh/ctier/examples/service-package-deployment/apache-tomcat-5.5.28" installRoot="/Users/alexh/ctier/examples/service-package-deployment/apache-tomcat-5.5.28" startuprank="">
<resource name="simpleTomcat" type="ServiceIsDownScript"/>
<resource name="simpleTomcat" type="ServiceIsUpScript"/>
<resource name="simpleTomcat" type="ServiceStopScript"/>
<resource name="simple-123.war" type="war"/>
<resource name="simpleTomcat" type="ServiceStartScript"/>
<resource name="simpleTomcat-connector" type="Port"/>
<resource name="simpleTomcat" type="ServiceSpawn"/>
<referrers replace="false">
<resource name="strongbad.local" type="Node"/>

With the XML exported to a file, it can be checked into a source code repository and later uploaded to the server again.

ControlTier 3.4.8 Released

ControlTier 3.4.8 has been released.
This is primarily a bug fix release, but some notable improvements have been made as well.

Documentation: The ControlTier Wiki

Notable bug fixes:
  • Conflation of Node name vs. hostname cropped up again in node-dispatch with CTL and the integration with Workbench. It should finally be completely resolved.
  • ProjectBuilder#find-objects has duplicate results: The find-objects command will now only show unique results.
Notable Improvements:

  • Java 6 support: Both the client and server now support Java 6.
  • project.xml export: Workbench and the ProjectBuilder#find-objects command can now export project.xml formatted data. Either use the -out option to find-objects, or click the "XML" toolbar button when viewing a resource in Workbench.
  • The Maven plugin has been updated to support static commands.

Wednesday, September 02, 2009

ControlTier 3.4.7 Released

ControlTier 3.4.7 has been released.
This is primarily a bug fix release, but some notable improvements have been made as well.

Documentation: The ControlTier Wiki

Notable bug fixes:

Node name/hostname are now correctly distinguished when installing deployments. You can now have two Nodes with the same hostname, as long as the Node names are unique, and ctl-depot -a install will work correctly.



Workbench service manager views now display any Tags associated with a resource in the manager list view. Tag searching is also now fully integrated in the Workbench user interface.

Node Filtering:

CTL and CTL-EXEC now support using arbitrary attributes as node filters in the -I/-X arguments. E.g. "ctl-exec -I myattribute=something -- echo hello".

Retrying failed commands:

CTL and CTL-EXEC now also support a -F flag which lets the user specify a filepath to store a list of nodes for which failures occur. When you execute across multiple nodes using the -I/-X node filter options, and use the -K (--keepgoing) option, any nodes for which a failure occurs will be stored in the specified -F file. You can then re-execute with the exact same commandline, and CTL/CTL-EXEC will only execute on the nodes listed in the given file. If further errors occur, the nodelist will again be stored in the same file. Once all nodes have executed succesfully, the file will be removed. This facilitates retrying a failed command only on the failed nodes either manually or automatically.

Environment variables in scripts:

A new default mechanism for executing defined shell commands called "shell-exec" is introduced. This allows shell scripts/commands to acquire environment variables with values passed directly from the set of ControlTier metadata available to all commands.


Installer script improvements provide a much smoother way to install ControlTier on cygwin-based Windows nodes.

Dispatching scripts to cygwin nodes via ctl-exec or Jobcenter now works correctly when the Node has os-family="cygwin", and registration of a Node via a ControlTier client installed on a cygwin node will correctly set the os-family of the Node.

Friday, July 24, 2009

ControlTier 3.4.6 Released

ControlTier 3.4.6 has been released.
This is primarily a bug fix release, with some improvements to Jobcenter, various coreutils, and some broad
changes to our documentation.


The ControlTier Wiki is now hosted at

The Wiki has gone through some structural changes which will hopefully make it easier to navigate and find
the documentation you are looking for.

restructured into two sections, a User Reference and a Developer Reference. This is to improve readability
for end users who may not need the Developer Reference information.

Friday, June 05, 2009

Continuous deployment example

ControlTier has supported the concept of continuous deployment for years and it's great that the concept is becoming increasingly main stream. 

In ControlTier, the end-to-end build and deployment process is defined via the Updater "BuildAndUpdate" workflow that orchestrates the Builder's Build and the Site's Update workflows. You can read about the basics on our Wiki here: Continuous_deployment

There's also a practical hands on example using tomcat

Of course you can also support continuous deployment by having your favorite continuous integration server interface with ControlTier after the build is completed. 

Tuesday, June 02, 2009

ControlTier 3.4.4 Released

ControlTier 3.4.4 has been released.

This release has been focused on support for Windows in several forms:

  • Internet Explorer is now supported for the server web applications Workbench, Jobcenter, and Reportcenter. Both IE 7 and 8 are supported
  • Windows-based Examples have been added to the Wiki. See the Examples page.

Other bug fixes are also included.


Two new high-level Library Guides have been added to help you develop Tomcat and JBoss server management solutions. These guides tie together the related Type Modules that are included with ControlTier, and show how they can be used together to create a management solution.

We intend to produce these "Library" guides for each of the various technologies that ControlTier provides Type Modules for.

See the Solution Libraries Guide for the complete list of available Library Guides.

Tuesday, April 07, 2009

ControlTier all Apache 2 licensed in 3.4.3

The next release of the ControlTier distribution will switch to an all Apache 2 license agreement. All of ControlTier 3.x was already Apache 2 licensed except for the Workbench server web app so this really just makes it all consistent. Workbench had been licensed under GPL 2 due to previous business arrangements that have since been re-worked. 

How does this impact end users? Well, not much except for the knowledge that you only have one open source license to be aware of and that Apache 2 provides the most freedom of use. 

Thursday, April 02, 2009

New Whitepaper: Achieving Fully Automated Provisioning

Working with our friends at Reductive Labs, we've just finished a whitepaper called "Web Ops 2.0: Achieving Fully Automated Provisioning"(pdf).

There is a live example of our joint ControlTier and Puppet solution, naturally. However, the main point of the paper is much broader than that. What we are proposing is an outline of an open source toolchain for fully automated provisioning.

What's the criteria for "fully automated provisioning"?

That details are in the whitepaper but here's the list we came up with:
  1. Be able to automatically provision an entire environment -- from "bare-metal" to running business services -- completely from specification
  2. No direct management of individual boxes
  3. Be able to revert to a "previously known good" state at any time
  4. It’s easier to re-provision than it is to repair
  5. Anyone on your team with minimal domain specific knowledge can deploy or update an environment
Here's the proposed open source toolchain (with ControlTier and Puppet highlighted):

Read the whitepaper and let us know what you think. I imagine that we'll get some objection to either the criteria or the toolchain... but that's fine. Sparking a conversation is actually what we want.

The point of all of this is to encourage discussion on how open source provisioning tools fit together to provide real world solutions. It's all too often that we meet people looking to improve their operations but they are befuddled by all of the various open source choices that don't seem to have much relation to each other. Hopefully this paper will be a first step towards greater public discussion. Educating the public lifts all boats.

All of the content in the whitepaper is licensed under the Creative Commons (Attribution - Share Alike) license.

Update: See this post on the for more information and progress on the next version

ControlTier 3.4.2 posted to

ControlTier 3.4.2 is now available:

Here are the release notes:

And don't forget to check out the ControlTier Wiki for documentation:

Sunday, March 01, 2009

New ControlTier Screencasts

New ControlTier Screencasts are now up on the wiki:

There you'll find:
  • Demo screencasts (JBoss deployment, build automation, using Jobcenter, etc...)
  • Automation development screencasts (Using ProjectBuilder, creating CTL modules, defining commands, etc...)
  • HowTo screencasts (importing packages, deploying packages, defining services, etc...)
  • Presentation on using ctl-exec
Additional screencasts will be added as they are produced. If anyone would like to make a screencast and have it included it in the list, send either the file or the link our way.

Tuesday, February 17, 2009

ControlTier 3.4 Posted to

I'm pleased to announce that ControlTier 3.4 is now available

For more info see the message group post and release notes:

To download ControlTier:

And don't forget to check out the new ControlTier Wiki (also hosted by SourceForge):

Monday, January 26, 2009

New Wiki for ControlTier's Open Source Tools

Things are still a bit under construction, but the new ControlTier Wiki (also hosted by SourceForge) is now the definitive source for ControlTier documentation.

As always, any feedback or suggestions are highly welcome.