IBM UrbanCode Deploy with Patterns and OpenStack: Part I: Installing DevStack Kilo on Ubuntu 14.04.03 LTS for newbies

Even though, there are ton of instructions on the Internet on how to configure DevStack environment on Ubuntu 14.0.4 LTS. I have to admit that it took me several tries and many hours to troubleshoot my environment until I finally got the hang of it and to truly understand what was going on.

Since this is simply a test environment and I want to keep things very simple, I am going to use the same interface for all of OpenStack networks. In this blog post you will find a straightforward instruction on how to quickly setup OpenStack environment via DevStack. Once the OpenStack environment is up and running, I will show you how to quickly install and integrate with the IBM UrbanCode Deploy with Patterns so, that you can quickly:

  • “Stand up continuous delivery pipeline environment for new applications
  • Provision short-lived testing sandboxes for specific infrastructure
  • Promote infrastructure changes through environments just like application changes
  • Collaborate by composing the work of infrastructure specialists into full environment
  • Drive environment consistency from testing to production even when you are using multiple clouds” –developer.ibm.com

See the demo of UrbanCode Deploy with Patterns

Prerequisite

  1. Download Ubuntu 14.04.03 LTS
  2. Install OS / Configure Ubuntu environment to have it ready for the OpenStack Environment
  3. Configure Ubuntu and Prepare for devstack configuration
    • $ sudo apt-get update
    • $ sudo apt-get upgrade
    • $ sudo apt-get dist-upgrade

DevStack Preparation

  1. Install Git
 $ sudo apt-get install git
  1. Clone devstack.git from branch stable/kilo
 $ git clone https://github.com/openstack-dev/devstack.git -b stable/kilo
  1. Create a localrc file in the root DevStack directory
DEST=/opt/stack

# Logging
LOGFILE=$DEST/logs/stack.sh.log
VERBOSE=True
LOG_COLOR=False
SCREEN_LOGDIR=$DEST/logs/screen

# Credentials
ADMIN_PASSWORD=MyStack
MYSQL_PASSWORD=MyStack
RABBIT_PASSWORD=MyStack
SERVICE_PASSWORD=MyStack
SERVICE_TOKEN=MyToken

# HOST IP
HOST_IP=173.17.137.142

# Network ranges
FIXED_RANGE=10.254.1.0/24
NETWORK_GATEWAY=10.254.1.1

# Heat
ENABLED_SERVICES+=,heat,h-api,h-api-cfn,h-api-cw,h-eng

# Neutron Load Balancing
ENABLED_SERVICES+=,q-lbaas

# Neutron Networking Service
disable_service n-net
enable_service n-cauth
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service horizon
disable_service tempest

Install DevStack

  1. cd into devstack directory
  2. Install Devstack
     $ ./stack.sh
  1. If DevStack was successfully installed, you should see the following screen
            This is your host ip:173.17.137.142
            Horizon is now available at http://173.17.137.142/
            Keystone is serving at http://173.17.137.142:5000/
            The default users are: admin and demo
            The password: MyStack
  1. Confirming heat is responding (Note: We need an the heat orchestration engine to connect to each cloud system. If you don’t want configure Heat here you also have an option to have UrbanCode Deployment with Patterns to install the heat orchestration engine for you later on as well.)
     $ source admin-openrc

Note: admin-openrc file can be download by log in to the OpenStack Dashboard > Choose Your project> Compute > Access & Security > Open API Tab then click Download OpenStack RC File

  1. Make sure that heat service is registered with Keystone
 $ keystone service-list | grep heat
| 6326cd8a316743a79d77d5b9a0ee7bf9 | heat     | orchestration | Heat Orchestration Service   |
| 89333a24d6214a7283e08cbf86d56196 | heat-cfn | cloudformation | Heat CloudFormation Service |
  1. Confirm that Heat is running and responding
 $ heat stack-list
+----+------------+--------------+---------------+
| id | stack_name | stack_status | creation_time |
+----+------------+--------------+---------------+
+----+------------+--------------+---------------+
  1. Generate a keypair for Heat to launch instances
 $ nova keypair-add heat_key > heat_key.priv
 $ chmod 600 heat_key.priv
  1. Launch a stack by running a heat stack-create

Note: Your image_id might be different than the example that I am showing here

 $ heat stack-create teststack -u http://git.openstack.org/cgit/openstack/heat-templates/plain/hot/F20/WordPress_Native.yaml -P key_name=heat_key -P image_id=cirros-0.3.4-x86_64-uec
+--------------------------------------+------------+--------------------+------------------| id             | stack_name | stack_status       | creation_time       |
+--------------------------------------+------------+--------------------+------------------
| ffa93ba6-f1fa-43b0-8f8b-5e87c9b700f0 | teststack | CREATE_IN_PROGRESS | 2015-12-23T17:24:17Z |
+--------------------------------------+------------+--------------------+------------------
  1. List Stacks
 $ heat event-list teststack
  1. List stack events

Referencing: https://wiki.openstack.org/wiki/Heat/GettingStartedUsingDevstack

Extending the existing Heat Engines

We need to extend the existing Heat Engines that we have configured with DevStack so, that we can use it with the UrbanCode Deploy with Patterns

  1. Assuming that you already download the UrbanCode Deploy with Patterns
  2. Edit the configuration file for the engine at /etc/heat/heat.conf and uncomment /usr/lib64/heat and /usr/lib/heat (Note: In my heat.conf configuration file. I didn’t have any plugin-dirs parameters setup, therefore, I need to first create a plugin-dirs directory at /usr/lib/heat and update my plugin_dirs parameters in the /etc/heat/heat.conf to point to it.)
  1. From the UrbanCode Deploy with Patterns with Engine extract ibm-ucd-patterns-install/engine-install/chef.tar.gz file and then
     $ tar -xvf chef.tar.gz

    and then find the cookbooks/ibm-orchestration-ext/files/default/plugins.tar.gz file to the plugs-in folder

 $ tar -xvf plugins.tar.gz -C /usr/lib/heat/
  1. Restart the Heat Engine
 $ service openstack-heat-engine restart
  1. Restart the Heat API
 $ service openstack-heat-api restart
  1. Verify the new resource types from UrbanCode Deployments with Patterns are exist
 $ heat resource-type-list
Advertisements