Connecting UrbanCode Deploy with Patterns to OpenStack

UrbanCode Deploy with Patterns (UCDP): a mouthful right? A pretty neat and powerful mouthful though. Consider theses two posts: Cooking up deployments on stacked clouds and UrbanCode Deploy with vSphere and Chef. UCDP makes it simpler and easier to carry out a bunch of steps detailed in those posts. Before I get into the details, let me first quickly go through how to install UCDP and connect it to an OpenStack setup.

The Knowledge Centre for UCDP is detailed and all the necessary steps are well documented . What I do miss in the KC are more pictures and an interactive roadmap like the CLM Installation KC has, though the UCDP installation is a fair bit simpler. So for this post I’ll go through one installation path, mostly providing relevant links to the KC and adding pictures where necessary:

– extend an existing OpenStack HEAT engine with UCDP custom types

– use an existing MySQL server to host the UCDP database

– install the UCDP design server with non-default ports

– connect UCDP to an OpenStack Icehouse cloud

– connect UCDP to an existing instance of  UCD 6.1.0.1

My server is a RedHat Enterprise Linux 6.5 Server VirtualBox VM with the latest updates.

For reference the IBM software part number is IBM UrbanCode Deploy with Patterns 6.1.0 Multiplatform English (CIZT6EN).

1. Extend an existing OpenStack HEAT engine with UCDP custom types

Since I already have an OpenStack HEAT engine and Keystone service running I use the steps in Extending existing Heat engines, skipping step 10 as I don’t want to connect to EC2 just yet.

Once the HEAT plugins have been copied over and the engine and API service restarted I can see the set of IBM resource types.


 # source keystonerc_admin
 [icehouse ~(keystone_admin)]# heat resource-type-list | grep IBM
 | IBM::EC2::EIP |
 | IBM::EC2::EIPAssocation |
 | IBM::EC2::InternetGateway |
 | IBM::EC2::NotSupported |
 | IBM::EC2::Port |
 | IBM::EC2::RouteTable |
 | IBM::EC2::RouteTableAssociation |
 | IBM::EC2::Server |
 | IBM::EC2::Subnet |
 | IBM::EC2::VPC |
 | IBM::EC2::Volume |
 | IBM::EC2::VolumeAttachment |
 | IBM::UrbanCode::ResourceTree |
 | IBM::UrbanCode::SoftwareConfig::UCD |
 | IBM::UrbanCode::SoftwareDeploy::UCD |
 [icehouse ~(keystone_admin)]#
 

2. use an existing MySQL server to host the UCDP database

I also have a MySQL instance (Ver 14.14 Distrib 5.1.73) so I follow the steps in “Before you Begin” in the “Installing the design server” topic to create a new database for UCDP.

3. install the UCDP design server with non-standard ports

I have another Tomcat server using ports 8080/8443 so I edit  ibm-ucd-patterns-install/web-install/install.sh to override the ports defined in the Chef attributes.rb of the tomcat cookbook. I add the following lines to the tomcat attributes section:

\"port\": 30080,
 \"ssl_port\": 30443,
 \"ajp_port\": 30009

so that the section now looks like this:

\"tomcat\": {
 \"keystore_password\": \"$keystorepassword\",
 \"keytool\": \"/opt/IBM/ibm-java-x86_64-70/bin/keytool\",
 \"java_options\": \"-Xmx512M -Djava.awt.headless=true -Darchaius.dynamicPropertyFactory.registerConfigWithJMX=true -Djava.library.path=/usr/share/tomcat6/webapps/landscaper/WEB-INF/lib/rcl/linux/x386_64\",
 \"port\": 30080,
 \"ssl_port\": 30443,
 \"ajp_port\": 30009
},

I also change the “host” attribute for the landscaper section to reflect the new HTPP port:

    \"host\": \"http://$publicurl:30080/landscaper\", 

Having made those changes I run install.sh following the instructions at “Installing the design server“, choosing not to have the installer connect to  UCD for now.

4. connect UCDP to an OpenStack Icehouse cloud

Following the instructions at “Creating OpenStack Identity service authentication realms“, I login using “ucdpadmin/ucdpadmin”.

ucdplogin

Click Settings > Users.

settings-users
Click Create New Realm.

newrealm
In the Type list, I select OpenStack Identity Service.
In the OpenStack Identity Service section the location of my identity service is “http://10.0.2.15:5000/v2.0/“.
I clear the Use default orchestration engine check box, and specify the location of my (IBM extended) engine, “http://10.0.2.15:5000:8004“.

I specify the administrator user name, password, and tenant for my OpenStack server, click Save and then click Import User, to import users into UCDP.

importusersTo allow the “demo” OpenStack user to use UCDP features, I follow “Configuring teams” to add the user to the pre-existing “Internal Team” and grant it the “Admin” role.

demoroleNow logging in as the OpenStack “demo” user lets me create and use blueprints using resources from my OpenStack cloud.

demoresources01

5. connect UCDP to an existing instance of  UCD 6.1.0.1

I chose not to have the installer connect UCDP to UCD so I follow  “Connecting to IBM UrbanCode Deploy” to do so now. After restarting the UCDP Tomcat server I can now access and use components defined in UCD.

ucducdp

In addition I can pick a UCDP blueprint when creating new environments in UCD.

ucdnewenv

That’s all it takes to connect UrbanCode Deploy with Patterns with an OpenStack Cloud and UrbanCode Deploy. There’s a nice 10 minute demo of key UCDP features at https://developer.ibm.com/urbancode/videos/ibm-urbancode-deploy-patterns-10-minute-demo/. More coming up on using UCDP with OpenStack, Amazon EC2 and I will be revisiting Cooking up deployments on stacked clouds and UrbanCode Deploy with vSphere and Chef with UCDP.

 

 

Advertisements

4 thoughts on “Connecting UrbanCode Deploy with Patterns to OpenStack”

  1. I’m getting the following errors on the next step. Any Idea?

    Unknown resource type ‘IBM::UrbanCode::SoftwareDeploy::UCD’.
    Unknown resource type ‘IBM::UrbanCode::SoftwareConfig::UCD’.
    Unknown resource type ‘IBM::UrbanCode::ResourceTree’.

      1. Thanks for your reply. I got this one resolved by extending our heat engine to include those resource types.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s