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]

IBM SmartCloud Enterprise management, Part 1: Create software bundles for VMs with ICCT

Alexei Karve, Senior Software Engineer, IBM Research
Alexei Karve is a senior software engineer in the IBM Thomas J Watson Research Center. He is a member of the SmartCloud Enterprise design team focussing on software bundles and VPN/VLAN for the cloud business support systems. Alexei's experience includes broad experience with operational support services, virtualization, and Tivoli Provisioning Manager. He has a long and varied past in the system management area since joining IBM in 1993.
Alex Amies, Senior Software Engineer, IBM
Alex Amies photo
Alex Amies is a senior software engineer in the IBM GTS Development Lab in the China development lab. He is currently an architect working on the design of the IBM SmartCloud Enterprise. Previously, he acted as an architect and a developer on cloud and security products in other groups within IBM.
Scott Peddle, Advisory Software Developer, IBM Japan
Photo of Scott Peddle
Scott Peddle is an advisory software developer on the IBM SmartCloud Enterprise. Scott leads projects focusing on integration of Rational Asset Manager within a cloud environment. Scott's experience includes leading a project for integration of WebSphere BPM tools, such as WebSphere Business Modeler and WebSphere Integration Developer via Rational Asset Manager. Scott also was a release engineer for Rational design and construction products, such as Rational Software Architect and Rational Application Developer.
Hidayatullah Shaikh, Senior Technical Staff Member, IBM Corporation
Shaikh is an IBM Master Inventor and technical lead of the Business Support Systems for IBM SmartCloud Enterprise and Enterprise+ offerings, based in the United States.
Qiangguo Tong, Advisory Software Engineer, IBM
Qiang Guo Tong joined IBM in 2004. He is one of the IBM SmartCloud Enterprise development team leaders responsible for creation of new features. He is also the globalization enablement solution architect of SmartCloud. His technical expertise is both globalization and also JavaEE technologies. He has over 8 years web application development experience based on the JavaEE architecture and focusing on web 2.0 technologies such as Dojo, JSON-RPC.
Pan Xia Zou, Staff Software Engineer, IBM
Pan Xia Zou is staff software engineer at IBM and works as a build and deployment automation architect for IBM SmartCloud Enterprise.

Summary:  A software bundle is a collection of software installation files, configuration files, and metadata that can be deployed on a virtual machine instance. In this article, the authors show how to create software bundles for VMs, create and set up IBM® Image Construction and Composition Tool (ICCT) on SmartCloud, and retrieve and update software bundles. The ICCT performs bookkeeping tasks and provides a step-by-step process and a graphical UI to conveniently create software bundles, customize virtual machine instances, and capture images. This series shows how to use the ICCT to create a software bundle, then register and maintain it on IBM SmartCloud Enterprise. Part 2 describes the steps for capturing a new private image with the software bundle added in Part 1.

View more content in this series

Date:  20 Jul 2012
Level:  Introductory PDF:  A4 and Letter (844 KB | 22 pages)Get Adobe® Reader®
Also available in:   Chinese  Russian  Japanese  Vietnamese  Portuguese  Spanish

Activity:  14293 views
Comments:  

This article provides an overview of the IBM Image Construction and Composition Tool (ICCT) and demonstrates how to create and maintain software bundles on IBM SmartCloud Enterprise. Using an example, it describes the steps for creating a software bundle for Google Chrome, including defining metadata for the Chrome software bundle, adding installation scripts, and registering it on SmartCloud Enterprise. You should have basic familiarity with cloud concepts. To try the steps in this article, you need a user account on IBM SmartCloud Enterprise.

Image Construction and Composition Tool

The ICCT on SmartCloud is a web application that simplifies and automates virtual machine image creation. ICCT is provided as an image that can be provisioned on SmartCloud.

ICCT on SmartCloud categorizes the tasks performed in the virtual image life cycle by role:

  • Operating system specialist role: Creates base images for operating systems that the image builder role uses as a starting point. The base images represent an enterprise's standard OS configuration, license agreements, and security policies.
  • Software specialist role: Creates software bundles, reusable assets that contain software products or components.
  • Image builder role: Assembles base images and one or more software bundles to create virtual image templates.
  • Image deployer role: Specifies instance-specific parameters and provisions an instance in SmartCloud.

ICCT supports software bundle creation, the create and deploy phases of the virtual image life cycle.

Now let's explore software bundle creation, virtual image creation, and virtual image deployment.

Software bundle creation

The software specialist has great flexibility in defining bundles and choosing the granularity of a software bundle. Bundles encapsulate the installation and configuration tasks of one or more products into a simple container. ICCT assists a user in setting the dependencies, prerequisites, firewall rules, and collecting scripts and binaries together into a software bundle.

The software specialist must decide where to package the installation media. All files associated with a bundle's operations are uploaded and stored in a composable software bundle asset in Rational® Asset Manager (RAM). The directory structure of the bundle asset ensures that all files associated with an operation are stored in the same subdirectory. This structure prevents conflicts when files associated with different operations have the same name.

Packaging the product installation media in the software bundle often means the transfer of large bundle sizes during synchronization. The product installation media can be located on an external web server and retrieved using wget or it can be NFS mounted.

Use the Install and Configuration tabs in ICCT to handle bundle installation and configuration for the products:

  • Install tab: The software specialist can define scripts that execute at virtual image build time. This can include traditional product installation scripts and binaries.
  • Configuration tab: The software specialist can define configuration scripts that are copied to the virtual image at build time but do not execute until the virtual image is deployed. These configuration scripts can include traditional configuration scripts or scripts to reconfigure a default configuration that has been already applied during the install operation.
  • Reset tab: Resides a script to clean up logs or temporary files created during synchronization. This script is run by ICCT during the capture process.
  • Firewall tab: Resides many software packages that provide services to remote clients; for example, IBM HTTP Server provides a web server. To successfully access such services, the product installation and configuration might need to enable network access. The software specialist must specify the set of inbound service ports to open and allow the services to be accessed. For example, a software bundle for the IBM HTTP Server might require that the administration port (8008) and service ports (80, 443) be opened.

A key task that a software specialist must perform is writing the install, configuration, and reset scripts that are executed during virtual image creation and deployment. ICCT relies on scripts to:

  1. Carry out the installation and configuration of software and software components in the bundle.
  2. Allow the bundle to consume deployment parameters to customize its software during deployment.
  3. Clean up any state that is created during bundle installation and configuration before capturing a virtual image on which the bundle has been installed.

ICCT relies on feedback from scripts to determine whether an operation was successfully executed. A software specialist must be aware that ICCT treats an exit code of 0 as a success; any other exit code is treated as a failure.

Virtual image creation

The create phase of the virtual image life cycle occurs when a virtual image is composed, synchronized, and captured. The following steps are involved:

  • Composition: During this step of the create phase, a recipe called image design is concocted as the virtual image is created with a new name and version. A base image and one or more bundles are selected to add to the recipe to make it custom.
  • Synchronization: The image design is transformed into a temporary virtual machine instance. The virtual machine is created and the software bundles are installed. Each software bundle's install script is executed to silently install the bundled software on the temporary virtual machine. The configuration and reset scripts are copied to the virtual machine for execution later in the process.
  • Capture: This is the process when the image with the software bundles pre-installed on the temporary instance is captured as a private image. ICCT runs the reset script for each bundle in the virtual image and resets the operating system and allows SmartCloud to complete the capture. Finally, after SmartCloud has completed the capture, ICCT updates the semantic topology file in RAM.

Virtual image deployment

The deploy phase of the virtual image life cycle is when an image deployer provisions a virtual machine instance from a private image created during the create phase. The following steps are included:

  • Configuration: The image deployer specifies instance-specific parameters for the virtual image being deployed. Image deployment parameters associated with bundled software such as user ID, password, or port (that can be configured on per-instance basis) are also collected.
  • Provision: SmartCloud provisions the instance and the virtual machine in active mode. When the operating system first boots, the bundled software begins the activation phase.
  • Activation: The Activation Engine receives the deployment values and calls the appropriate configuration scripts. The bundled software and its components use the values that the image deployer provided for self-reconfiguration. The Activation Engine is an ICCT component that is installed into a base image during the base image extension process. ICCT extends every virtual image to contain an enablement bundle. If not already present, ICCT adds an enablement bundle when the virtual image design is first composed.

Figure 1 demonstrates the overview of the virtual image life cycle with tasks performed by each roles.


Figure 1. Virtual image life cycle supported by ICCT
Virtual image life cycle supported by ICCT

Now let's look at creating and setting up ICCT on SmartCloud.


Create and set up ICCT on SmartCloud

Using a simple example, installing Google Chrome, we'll walk through the phases described above.

  1. Login to SmartCloud and create an ICCT instance by selecting the IBM Image Construction and Composition Tool image. After it is provisioned, connect to https://<ICCT IP Address>/ and login with the userid and password provided during deployment of ICCT instance.

    Note: If you already have an ICCT virtual machine instance but the ICCT URL does not respond, you may have to login to your virtual machine instance as idcuser and run the following to restart ICCT application:

    sudo /opt/IBM/icon/start.sh

    Figure 2 shows the first panel in the new Cloud Provider Wizard.



    Figure 2. First panel in the new Cloud Provider Wizard
    First panel in the new Cloud Provider Wizard

  2. Click Next, enter the user name and password that you use to login to SmartCloud.

    Figure 3. Panel for entering cloud credentials
    Panel for entering cloud credentials

  3. Click Next. Enter the name and description for the data center that you use for private images. You can later create additional cloud providers for different data centers and keys. Select IBM SmartCloud Enterprise as the cloud provider type. This example uses the Ehningen data center.

    Figure 4. Panel for cloud provider information
    Panel for cloud provider information

  4. Click Next. This gets the public keys and data centers from SmartCloud using the credentials provided earlier. Select the public key name, browse for the local private key to upload, and select the data center location.

    Figure 5. Panel for SSH key information
    Panel for SSH key information

  5. Click Next, then review the information. ICCT encrypts and saves the users credentials and the private key on the ICCT instance under the Cloud Provider Name. The cloud provider is used to retrieve the image and software bundle meta information from SmartCloud. The private key is used to install software bundles on temporary instance on users behalf before image capture.

    Figure 6. Panel for credentials summary
    Panel for credentials summary

  6. Click Done. The ICCT welcome page appears.

    Figure 7. Welcome page
    Welcome page


Create software bundles by ICCT on SmartCloud

To create the software bundle:

  1. Click Build and Manage Software Bundles. The panel of Bundles appears on the left. The default local enablement bundles are pre-populated.

    Figure 8. First panel for software bundle management
    First panel for software bundle management

  2. Click the + icon on the top to start creating a new software bundle. A new dialog box appears. Enter a name, universal ID, version, and description for the software bundle. Select the cloud provider you created earlier for the Storage Location, and keep the default for Primary Enterprise Community.

    Figure 9. Panel for new software bundle
    Panel for new software bundle

  3. Click the Create button. The bundle added to the list of bundles is displayed in the left pane with a pencil icon. The right pane shows the information you entered with an empty product list at the bottom.

    Figure 10. Panel for software bundles basic information
    Panel for software bundles basic information

  4. Click the + next to Products in the bundle table and add the Google Chrome browser. You have to double-click the edit box under the Product Name, Version, and Vendor to edit the information.

    Figure 11. Panel for software bundles basic information
    Panel for software bundles basic information

  5. Click the Requirements tab, add Linux® as supported a operating system. In general the following attributes need to be specified:
    • Type: Operation system type, such as Linux, Windows®
    • Distribution: OS-specific distribution such as RHEL, SLES
    • Architecture: Describes the supported kernel architecture
    • Version: Describes the OS architecture. A number of wildcards can be used
      • 5.x — The x represents a placeholder for a specific digit
      • 10.1+ — The + represent version 10 or anything higher

    Select only the Type=Linux and leave the rest of the attributes empty.



    Figure 12. Panel for software bundles requirements information
    Panel for software bundles requirements information

  6. Since this bundle does not have any dependencies, the Required Software and Required Bundles fields are empty.

    The following install script sets up the repository to download 64-bit Chrome and installs it. Save it locally as installgooglechrome.sh:

    sudo echo "[google-chrome]" > /tmp/google.repo
    sudo echo "name=google-chrome - 64-bit" >> /tmp/google.repo
    sudo echo "baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64"
     >> /tmp/google.repo
    sudo echo "enabled=1" >> /tmp/google.repo
    sudo echo "gpgcheck=1" >> /tmp/google.repo
    sudo echo "gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub"
     >> /tmp/google.repo
    sudo mv /tmp/google.repo /etc/yum.repos.d/google.repo
    sudo yum install -y google-chrome-unstable
    

  7. Click the Install tab. The Installation section specifies what should run during a one-time installation of the software.
  8. Click the + icon and add the installgooglechrome.sh, check mark it as executable, and select it as the run command. This runs as root. This script does not take any arguments, therefore Arguments is left empty.

    Figure 13. Panel for software bundles install information
    Panel for software bundles install information

  9. Next is the Configuration section. Google Chrome does not have any scripts that need to be executed during deployment of virtual machine instance, so keep this empty. When an image is instantiated with arguments that should be configured on per-instance basis, this section is used.
  10. The Firewall section is for ports that need to be opened. Reset the section to clean up logs from one-time installation. Google Chrome does not use the Configuration or the Firewall tabs.
  11. Update the install script to allow both 32- and 64-bit:
    uname -a | grep x86_64
    if [ $? -eq 0 ]; then
    # Use 64 bit repository
    else
    # Use 32 bit repository
    Fi
    

  12. Click Save and then the Publish buttons.

    Figure 14. Status changes to Published
    Status changes to Published


Maintain software bundles on SmartCloud

Two major tasks for maintaining your bundles include retrieval and updating.

Retrieve software bundles

There are several methods for retrieving software bundle information. To use the REST API, try the following request to retrieve software bundles:


Figure 15. REST API request to retrieve SwBundles
REST API request to retrieve SwBundles

Or this code:

curl -k -H 'Accept: application/json' -u <userid>:<password>
 https://www-147.ibm.com/computecloud/enterprise/api/rest/20100331/offerings/swbundle

The following response is received for the GoogleChrome SwBundle that was just created.


Figure 16. Response of retrieving SwBundles
Response of retrieving SwBundles

Another method is to go to the SmartCloud Portal, click Control Panel > View Asset Catalog > My Dashboard. You can see the GoogleChrome asset in RAM.


Figure 17. GoogleChrome asset in RAM
GoogleChrome asset in RAM

Figure 18 shows general details of the GoogleChrome asset.


Figure 18. General details of GoogleChrome asset in RAM
General details of GoogleChrome asset  in RAM

Note the RAM Unique ID: 07356E0D-3868-1709-0F95-AD9FF0355FF4 and Version: 1.0.0. This is used in Part 2 as an example to show you how to capture a new image.


Figure 19. Content of GoogleChrome asset in RAM
Content of GoogleChrome asset in RAM

Update software bundles

Click Content to edit and change the scripts, such as installgooglechrome.sh, directly in RAM.


Figure 20. installgooglechrome.sh script in Asset
installgooglechrome.sh script in Asset

If you do, make sure you login to the ICCT virtual machine, search for the same cached scripts, and make corresponding changes in the ICCT virtual machine.

For example, if you were to change the installgooglechrome.sh directly in RAM, find it on the ICCT virtual machine:

idcuser@vhost4244:/> cd /drouter
idcuser@vhost4244:/drouter> find . -name installgooglechrome*
./ramdisk2/mnt/raid-volume/raid0/local/images/789d525e-ad75-4cc1-a25b-360534713d8c
 /artifacts/com.google.chrome_1.0.0/imageBuild/newstep/installgooglechrome.sh
./ramdisk2/mnt/raid-volume/raid0/uploads/be7aa215-f0ab-4d98-8acc-7dc427ee4877
 /installgooglechrome.sh

Edit the file and make the same changes that you made in RAM.


In conclusion

In this article, you learned how to create and maintain software bundles using ICCT on IBM SmartCloud Enterprise by walking through a simple example. In Part 2, we show you how to build an image with the same software bundle using ICCT.


Resources

Learn

Get products and technologies

  • Evaluate IBM products in the way that suits you best: Download a product trial, try a product online, use a product in a cloud environment, or spend a few hours in the SOA Sandbox learning how to implement service-oriented architecture efficiently.

Discuss

  • Get involved in the My developerWorks community. Connect with other developerWorks users while exploring the developer-driven blogs, forums, groups, and wikis.

About the authors

Alexei Karve is a senior software engineer in the IBM Thomas J Watson Research Center. He is a member of the SmartCloud Enterprise design team focussing on software bundles and VPN/VLAN for the cloud business support systems. Alexei's experience includes broad experience with operational support services, virtualization, and Tivoli Provisioning Manager. He has a long and varied past in the system management area since joining IBM in 1993.

Alex Amies photo

Alex Amies is a senior software engineer in the IBM GTS Development Lab in the China development lab. He is currently an architect working on the design of the IBM SmartCloud Enterprise. Previously, he acted as an architect and a developer on cloud and security products in other groups within IBM.

Photo of Scott Peddle

Scott Peddle is an advisory software developer on the IBM SmartCloud Enterprise. Scott leads projects focusing on integration of Rational Asset Manager within a cloud environment. Scott's experience includes leading a project for integration of WebSphere BPM tools, such as WebSphere Business Modeler and WebSphere Integration Developer via Rational Asset Manager. Scott also was a release engineer for Rational design and construction products, such as Rational Software Architect and Rational Application Developer.

Shaikh is an IBM Master Inventor and technical lead of the Business Support Systems for IBM SmartCloud Enterprise and Enterprise+ offerings, based in the United States.

Qiang Guo Tong joined IBM in 2004. He is one of the IBM SmartCloud Enterprise development team leaders responsible for creation of new features. He is also the globalization enablement solution architect of SmartCloud. His technical expertise is both globalization and also JavaEE technologies. He has over 8 years web application development experience based on the JavaEE architecture and focusing on web 2.0 technologies such as Dojo, JSON-RPC.

Pan Xia Zou is staff software engineer at IBM and works as a build and deployment automation architect for IBM SmartCloud Enterprise.

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, Rational
ArticleID=826677
ArticleTitle=IBM SmartCloud Enterprise management, Part 1: Create software bundles for VMs with ICCT
publish-date=07202012