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.
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.
- 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
- 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
DBIPAddressparameters will reference the DB request.
- The volume request should look like this:
<volumeRequest ifExists="SKIP" label="Vol" location="RTP" format="ext3" size="SMALL"/>.
- 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"/>.
- 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>
- 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.
- 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.
- The expression
Expr:DB2:IPwill 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.
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.
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.
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
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 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 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 Error Log view provides information on the current deployment.
Figure 5. The Error Log
To use the deployment utility tool to create multiple instances with a single action:
- Select an image from a data center.
Figure 6. Create instances: Select the image
- 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
It is also possible to request a new volume for each instance.
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
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
The requests are sent concurrently, taking into account the engine parameterization.
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.
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.
For more on how to perform tasks in the IBM Cloud, visit these resources:
- Upload and download files from a Windows instance.
- Install IIS web server on Windows 2008 R2.
- Create an IBM Cloud instance with the Linux command line.
- Create an IBM Cloud instance with the Windows command line.
- Extend your corporate network with the IBM Cloud.
- High availability apps in the IBM Cloud.
- Parameterize cloud images for custom instances on the fly.
- Windows-targeted approaches to IBM Cloud provisioning.
- Deploy products using rapid deployment service.
- Integrate your authentication policy using a proxy.
- Configure the Linux Logical Volume Manager.
In the developerWorks cloud developer resources, discover and share knowledge and experience of application and services developers building their projects for cloud deployment.
The next steps: Find out how to access IBM SmartCloud Enterprise.
Get products and technologies
See the product images available on IBM SmartCloud Enterprise.
Join a developerWorks community cloud computing group.
Read all the great cloud blogs on developerWorks.
Join the developerWorks community, a professional network and unified set of community tools for connecting, sharing, and collaborating.
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.