Skip to main content

By clicking Submit, you agree to the developerWorks terms of use.

The first time you sign into developerWorks, a profile is created for you. Select information in your profile (name, country/region, and company) is displayed to the public and will accompany any content you post. You may update your IBM account at any time.

All information submitted is secure.

  • Close [x]

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerworks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

By clicking Submit, you agree to the developerWorks terms of use.

All information submitted is secure.

  • Close [x]

SmartCloud tip: Deploy a complex topology

Using a deployment utility tool on the IBM Cloud

Dominique Vernier, IT Architect, IBM
Dominique Vernier photo
In recent years, Dominique Vernier focused on Java technologies and cloud architecture. He also has been working in information technology for quite a while where he earned a broad knowledge in such technologies and products as messaging, database, SOA, EAI, client/server, C/C++, and existing frameworks. Dominique also has extensive knowledge in industry areas such as telecom, CRM, logistics, and insurance. He is the author/co-author of four patents having to do with state engines and resource management. At present, Dominique is in charge of the IBM SmartCloud Enterprise solutions on the IBM GTS Global Team.

Summary:  In this article, the author details the concepts behind a deployment utility tool that he created, and explains how to use the tool to deploy an application with a complex topology on IBM SmartCloud Enterprise. The tool is not a part of the IBM SmartCloud Enterprise offering. The author uses the term complex topology to mean a topology that contains multiple resources instances, storages, addresses, and so on and also a topology that possesses the ability to launch scripts to set itself up in terms of interconnection and software.

View more SmartCloud Enterprise tips

Date:  05 Aug 2011
Level:  Intermediate PDF:  A4 and Letter (538 KB | 12 pages)Get Adobe® Reader®
Also available in:   Chinese  Korean  Japanese  Portuguese

Activity:  7603 views
Comments:  

Use this deployment utility tool to provision multiple resources on the IBM SmartCloud Enterprise based on a single input file (although the tool is not a part of the IBM SmartCloud Enterprise offering). Currently for example, if you want to deploy a server with a storage attached, you first have to launch a request using the IBM Cloud portal to create your storage and then create another request to create your server and attach your storage. With this tool, you can build a single file containing the description of each request and reference attributes from one request to attributes in another request.

Also, when you have a complex infrastructure (more than one server linked together), like an N-tier application, to deploy, you have to think first in which order you will provision each resource and then link them together. The tool will find the deployment order, based on the functional dependency of each resource, for you.

Some additional functions are provided to directly manage the resources on the IBM Cloud platform; for example, it can help you manage instances, addresses, volumes, and images. You can also create multiple instances, volumes, and addresses in one request.

Note: The deployment utility tool described in this article is provided "as is" and is without warranty, implied or otherwise. Please view the license agreement before starting.

Also note, there are online videos of many of these instructions available in the distribution file you get when you download the tool.

Now let's look at the concepts behind this tool.

Concepts

The deployment utility tool to deploy infrastructure on the IBM Cloud has an engine which processes input files and an Eclipse plug-in which helps the user create new deployment files and execute them.

The input file contains requests to deploy volumes, instances, etc. Each request has a number of parameters. Each request parameter can contain a literal value or an expression. An expression references the value of another parameter of another request.

Since you have requests and expressions linking requests, you can create a graph in which each vertex is a request and each edge represent the link between two requests based on the expression of the source request.

The deployment utility tool will analyze the dependency created by the expressions between requests to find out the order in which each request must be executed. This is done by using a topological sort algorithm on the graph.

Before a request is executed, the deployment utility tool evaluates each expression, taking into account the already deployed request. Thanks to the topological sort, you'll know that if a request has an expression referencing another request, the other request is already deployed and thus the expression can also reference request attributes which are only available after execution; for example, IP addresses generated by the system.

Also, the deployment utility tool checks to see if some requests can be launched simultaneously to minimize the deployment duration. A limit on the number of parallel requests can be set.

The goal of this tool is not to provide functionality to deploy a single request — for that you can use the image's customization technique — but to orchestrate the different requests to deploy a complex infrastructure.

One constraint of this concept you must address is that all resource names of a given type of resources (instances, images, storages) of a user should be unique.

Let me demonstrate the concepts with this example: We have to deploy two servers: a WebSphere® Application Server and a database server. The database needs a volume Vol which is a clone of an existing volume and the WAS needs the IP address of the database to set up its JDBC connection.

  1. Custom images are created using the image customization technique which represents the WAS and the DB server with the necessary parameters and scripts. In this example, at the very least the WAS image will need the parameter DBIPAddress.
  2. Create the request file to contain each request and its attributes. One of the DB request attributes will reference the volume request and one of the WAS DBIPAddress parameters will reference the DB request.
  3. The volume request should look like this: <volumeRequest ifExists="SKIP" label="Vol" location="RTP" format="ext3" size="SMALL"/>.
  4. The DB request should look like this: <instanceRequest ifExists="SKIP" label="DB2" imageID="20003517" instanceType="COP32.1/2048/60" keyName="DVE_User" iP="" volume0ID="Expr:Vol"/>.
  5. The WAS request should look like this:
    <instanceRequest ifExists="SKIP" label="WAS" imageID="20004761"
     instanceType="COP32.1/2048/60" keyName="DVE_User" iP="">
    <configuration>
            <keyValue attribute="DB2IPAddress" value="Expr:DB2:IP"/>
            <keyValue attribute="WASAdminUser" value="wasadmin"/>
            <keyValue attribute="WASAdminPassword" value="WasAdminPassword"/>
            <keyValue attribute="WASProfileType" value="all"/>
            <keyValue attribute="WASAugmentList" value="null"/>
    </configuration>
    </instanceRequest>
    

  6. Assemble all these requests into one single file and send it to the deployment utility tool for the IBM Cloud. The Eclipse plug-in will help you to build such file.
  7. The deployment utility tool will sort the request and discover from the expressions dependencies that first the volume request should be executed, followed by the DB request, and finally the WAS request.
  8. The expression Expr:DB2:IP will be evaluated as being the IP address of the DB server once deployed and this will happen before the WAS is deployed.

Let's discuss the capabilities of the deployment utility tool.


Capabilities

The IBM Cloud deployment utility tool demonstrates the following capabilities:

  • It is an Eclipse plug-in but can run also from the command line.
  • It can be used to create Eclipse projects which will hold your deployment file, log file, and all other files needed to deploy your infrastructure.
  • The plug-in provides an editor to create a deployment file; the deployment file describes instances, volumes, IP addresses, and key pairs that have to be deployed on the IBM Cloud and the scripts that have to be launched during the deployment.
  • It provides the ability to launch a deployment file in simulation or real mode.
  • It provides management of instances, images, IP, key pairs, etc.
  • It provides the ability to open image/instance documentation.
  • It delivers backup instances described in a deployment file.
  • It delivers backup and delete instances described in a deployment file.
  • It can restore deleted instances described in a deployment file.
  • It can create 1..N identical instances in one request with attached volumes.
  • It can create 1..N IP, 1..N volumes in one request.

As the tool continues to evolve, this capabilities list is not exhaustive. Check IBM SmartCloud Enterprise deployment utility tool for the latest version.

Let's look at the anatomy of the deployment utility tool and its capabilities.


Anatomy

Let's take a deeper look at the following:

  • The deployment file.
  • The ability to manage resources.
  • The ability to create multiple instances in one request.
  • The ability to create multiple volumes and addresses in one request.

The deployment file

In a deployment file, the instances, volumes, addresses, and key pair that compose the topology will be specified.

An engine can be launched which will read the deployment file and launches the different requests on the IBM Cloud in the right order.

For each item, a Properties tab is used to specify the different parameters of the item.

For instances, the tool automatically retrieves the needed parameters from the image definition.

If the resource already exists, the resource request can be set up to stop the deployment or skip the creation of this resource.

For each deployment file, it is possible to specify a string which will be used to create the name of each deployed resource. The string should respect the Java™ String.format. For example, DEMO_%s_1 with a resource name MyInstance will generate the DEMO_MyInstance_1 name. This provides the ability to create multiple identical environments with the same deployment file by just modifying this string


Figure 1. MyDeployment screen
MyDeployment screen

The ability to manage resources

The Instances View lists all instances attached to your user and also provides such functionality as Save, Delete, Restart instances, and Create multiple instances in one request.


Figure 2. The Instances View
The Instances View

The Volumes View lists all volumes attached to your user and also provides such functionality as Clone, Delete volumes, and Create multiple volumes in one request.


Figure 3. The Volumes View
The Volumes View

The IP View lists all IP addresses attached to your user and also provides such functionality as Delete IP addresses and Create multiple IP addresses in one request.


Figure 4. The IP View
The IP View

The Error Log view provides information on the current deployment.


Figure 5. The Error Log
The Error Log

The ability to create multiple instances in one request

To use the deployment utility tool to create multiple instances with a single action:

  1. Select an image from a data center.

    Figure 6. Create instances: Select the image
    Create instances: Select the image

  2. Select the number of instances you want to create, the name (an index is added for each instance), the size, the key pair, etc.

    Figure 7. Create instances: Define the instance
    Create instances: Define the instance

It is also possible to request a new volume for each instance.

The ability to create multiple volumes and addresses in one request

The deployment utility tool makes it quite simple to create multiple IP addresses in a single request. You simply select the data center, your VLAN of choice, and click Finish.


Figure 8. Create multiple addresses
Create multiple addresses window

The requests are sent concurrently, taking into account the engine parameterization.

You can also easily create multiple volumes in a single request by providing a name (which is postfixed with an index), the location, the size, and the format.


Figure 9. Create multiple volumes
Create multiple volumes window

The requests are sent concurrently, taking into account the engine parameterization.


In conclusion

The deployment utility tool provides you with the ability deploy complex topologies on the IBM Cloud by creating a deployment file that describes all requests you need to provide. The tool also helps you create any number of instances, storage, and IP addresses, all in a single stroke, as well as helps you manage your resources on the IBM Cloud. And the wizards-based setup makes using the tool foolproof.

Caveats on using the tool

Remember, at present the tool is provided "as-is" and with no warranty; and it is not a part of the IBM SmartCloud Enterprise offering. You can access the tool here after you sign in: IBM SmartCloud Enterprise deployment utility tool. You can also find forums where you can post comments. You need an account to the IBM SmartCloud Enterprise platform to access the tool and the forums.


Resources

Learn

Get products and technologies

Discuss

About the author

Dominique Vernier photo

In recent years, Dominique Vernier focused on Java technologies and cloud architecture. He also has been working in information technology for quite a while where he earned a broad knowledge in such technologies and products as messaging, database, SOA, EAI, client/server, C/C++, and existing frameworks. Dominique also has extensive knowledge in industry areas such as telecom, CRM, logistics, and insurance. He is the author/co-author of four patents having to do with state engines and resource management. At present, Dominique is in charge of the IBM SmartCloud Enterprise solutions on the IBM GTS Global Team.

Report abuse help

Report abuse

Thank you. This entry has been flagged for moderator attention.


Report abuse help

Report abuse

Report abuse submission failed. Please try again later.


developerWorks: Sign in


Need an IBM ID?
Forgot your IBM ID?


Forgot your password?
Change your password

By clicking Submit, you agree to the developerWorks terms of use.

 


The first time you sign into developerWorks, a profile is created for you. Select information in your profile (name, country/region, and company) is displayed to the public and will accompany any content you post. You may update your IBM account at any time.

Choose your display name

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

(Must be between 3 – 31 characters.)

By clicking Submit, you agree to the developerWorks terms of use.

 


Rate this article

Comments

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=Cloud computing
ArticleID=750723
ArticleTitle=SmartCloud tip: Deploy a complex topology
publish-date=08052011