This blog post is about IBM UrbanCode Deployment with Patterns Blueprint and a how to guide, to help you manage the deployment solutions in the cloud that enables you to design, deploy and update full-stack environment for multiple clouds.
In the traditional on-premise IT teams are struggling to keep up with having to manage and deploy applications into various environments. It is a lot of work trying to get an environment and resources setup before we can start to deploy our application. Each deployment requires a lot of manual processes, where lots of people in the delivery pipelines such as the IT Architects and specialists need to be involved in setting up the virtual machine, network, storage, settings the different configurations in order to get the environment ready for applications deployment. This whole process of finding, setting up an environment and deploying the application can take an average of 3-4 weeks to complete. This is a lot of time wasted. As times goes by, the new business requirements came in and what if we need to make changes in the multiple environments in DEV, TEST and PROD, there are a bunch of manual processes and re configurations that needs to take place yet again.
Therefore in the new cloud business model such as pay-as-you-go in the Infrastructure as a Service (IaaS), it’s definitely a lot easier if we can get these resources from the Cloud. Cloud can help us speed up our development and deployment for new applications in the heterogeneous datacenter (private, public and on premise) as business operational demands increase or decrease very quickly.
This way, when we need an environment to deploy our application we can just simply request one through a cloud environment and have the environment provisioning for us without having to wait 3 to 4 weeks. When your business operational demands increase or decrease, you have an ability to add needed business application quickly and integrate and scale them up or down as needed.
In this series of blog post, I will be demonstrating to you how easy it is to use IBM Blueprint designer to:
Part 1: Create a Provision environment on clouds through OpenStack
Part 2: Deploy my application to the OpenStack environment on the cloud
The value BluePrint Designer brings
- Design complete environment patterns that include your applications along with the infrastructure and middleware that supports them.
- Enables specialist and integrators to capture their knowledge and expertise in the artifacts in the Heat Orchestrator Template (HOT) to represent the information about images, networks, storages and applications.
- Capture the heterogeneous expertise of the total DevOps team, from solution architects to cloud infrastructure specialists
- Manage and version those full-stack environment patterns through Git repositories, like you do with application source codes
- Provision a full-stack environment in minutes from a pattern document that includes your application, the infrastructures, middleware and everything needed to run it
- Cloud-portability through a blueprint. Ability to port your blueprint design in the different virtualized infrastructure to any cloud provider (OpenStack, Amazon EC2, SoftLayer and Vware Vcenter ) across the heterogeneous datacenter (private, public and on premise) as you wish.
- Blueprints Design Server is connected to OpenStack and also has already been configured to connect to UrbanCode Deploy (UCD) server
- IBM UrbanCode Deploy with Patterns is fully configured and it’s up and running
- OpenStack Cloud environment has already been configured
- User responsible for creating blueprint has been granted access to an OpenStack Cloud.
Note: Without the access to the OpenStack cloud environment, we will not be able to use UrbanCode Deploy with Patterns (UCDP) to access resources such as compute images, networks, storage and security from OpenStack to build our blueprints
Part 1: Creating and provisioning new Environment to OpenStack Cloud
In this section, we will be using a Blueprint designer to model, provision and update cloud environments from OpenStack Heat-based blueprints. We will be using a blueprint designer to describe topology of machine, network, storage resources and use the blueprint to provision and install UrbanCode Deploy agents, which references UCD components and processes.
How to use IBM Blueprint Designer to create a blueprint that we can then later on use to help us setting up a new environment to deploy the application on.
In this section you will:
- Learn how to work with the blueprint designer
- Lean to design a complete environment pattern that includes your application along with its infrastructure and middleware that supports them
- Experience how a blueprint design can be designed by technical experts once and then be deployed and reused across the enterprise
At the end of this section you will have a blueprint that describe an environment. You defined Linux nodes, the networks that would be attached to the two Linux nodes and the software components to be deployed on each Linux system.
1.1 Create a Blueprint in Blueprint Designer
- Log on to your landscaper
- Select Blueprint
- Click “New” in the add a new file dialog and type in your blueprint name and “Save” it. You will then be landed in the graphical editor mode of the blueprint.
- From the Network drawer of the palette on the right select and drag the networks that you would like to use with this blueprint. In my case, I am going to drag the private network to the designer’s diagram canvas.
- Select the virtual image. Expand the images drawer; these are the images that are available on my OpenStack Cloud system. Drag and drop the Ubuntu1404x64 image onto the private network resource on the diagram canvas. This will automatically draw a connecter from the Private network to the image
- Select the image to edit its properties and then select the pencil icon. Set Key and Name field to “dbserver“
- Repeat the previous step, drag and drop the Ubuntu1404x64 image onto the private network resource on the diagram canvas. This compute resource will be the host for my Websphere Liberty node
- Set Key and Name filed “appserver“
- Expand the Components drawer. Notice the components and tags that are available from UrbanCode Deploy server. When we drag and drop these components tag to our virtual machine, all of those components on the UCD server for those tags will be added to our blueprint.
- From the Component Drawer, I then select the MySQL Server component and drop it onto the first compute resource, which is “dbserver“. Basically, what I am doing at this step is that I’m adding the components from my UrbanCode Deploy server to the image.
- Choose UCD Application, “JKE” application is selected in the dialog that pops up, and click OK
- Repeat the previous step to add db component to the same compute resource.
- Set the component process for MySQL server, select “CHOOSE” and select “deploy“. If I want, I could also give it a version name as well.
- In the Blueprint Designer, click the circle icon in the bottom-right hand corner of the Liberty Compute resource on the blueprint designer canvas to assign a floating IP to the node in OpenStack. Once it’s done notice that it will turn blue.
- Save the blueprint
- MySQL Server
- Websphere Liberty Profile
- Save your current progress
Notice that on the right hand side of the blueprint designer, there is the palette for different resources for you to select from such as compute images, networks, storage and security from the OpenStack Cloud that you can just simply drag and drop into our design diagram canvas in the middle and start to build a blueprint for your environment.
There are two methods that you can use for building your blueprint. The first method is via the graphical editor and the second method is via the Heat Orchestration Template (HOT) source code of blueprint directly.
Caution: If you don’t see any of these resources that means, your UrbanCode Deployment with Patterns is not properly configure to access the OpenStack Cloud. You have to make sure that user who is responsible for creating the blueprint design has been authenticated to your OpenStack Cloud
Note: I need to choose the UCD application, so, that the UrbanCode Deploy server knows which application I am modeling. This will come in handy once we switch from a blueprint designer to UrbanCode Deploy Server later on.
Next I will add the WebSphere Liberty Profile and war component to the second compute resource.
Note: that both of the compute resources for dbserver and appserver are connected to the private network. It means that they can access each other but will not be accessible outside the OpenStack server. To have the web application that is deployed on the Liberty node accessible from externally, I need to have OpenStack assign a floating IP address to the WebSphere Liberty node on the “public” network.
Next we will mark the deployment sequence order in which the UrbanCode deploy components should be deployed. Select the Policies drawer, and drag-and-drop Deployment Sequence onto each of the components in the sequence of
Note: If you set the deployment sequence incorrectly, you can click the Deployment Sequence icon of any of the component and change the sequence in the dialog.
1.2 Exploring the UrbanCode Deploy
- Open a new tab in your browser and type in the address of your UrbanCode Deploy Server.
- Login to UrbanCode Deploy with your credential
- In UrbanCode Deploy, select Components, and select the war component.
- Select the Configuration tab on the second row, and open the Environment Property Definition tab
- Notice that the default value for “db.host “is set to “localhost”.
- I will have to direct OpenStack to extract the value of the IP address allocated to the MySQL compute resource on the private network and set this as the value of the jke.db.host property.
- Switch back to the Blueprint Designer tab
- Select “war” component, set “jke.db.host” to “Private IP address for dbserver“
- Save the Blueprint. Now I have my blueprint to deploy my application and what cloud I want to deploy it on.
IE: username: admin