In my view, a good starting point to learn more about the different technical features in OpenStack, is to experiment with them on a small scale local environment. My test bed is a Ubuntu 14.4 64-bit Linux system on a 8x Intel Xeon CPU machine, with 8G memory and two physical network interface cards. The goal is to basically setup an all-in-one configuration, where all the services, including compute services, are installed on the same node. A controller node is where most of the OpenStack services are configured, and will be installed on my Ubuntu system.
Here, I will discuss couple of quick OpenStack development environment setup options:
a) Using stable Git Icehouse repository
OR
b) Using Vagrant Box
Option-A: Deploy OpenStack IceHouse using Git repo
1. Create work directory for OpenStack project, say $ICE_STACK_DIR
# mkdir /scratch/<user>/icehouse
2. Clone stable/icehouse git repository
- used Netbeans ide to clone the Git repository branch to workdir location; alternately, run the following command from $ICE_STACK_DIR
# git clone -stable/icehouse https://github.com/openstack-dev/devstack.git
3. Modify Devstack configuration file to override default settings as needed
- localrc is a user-maintained settings file used to configure DevStack. It is deprecated and has been replaced by local.conf. More details here
Sample local.conf:
4. Install DevStack as a non-root user
# cd $ICE_STACK_DIR/devstack
# ./stack.sh
- Read more about the stack.sh script in the official documentation
- The default services configured by DevStack are Identity (Keystone), Object Storage (Swift), Image Storage (Glance), Block Storage (Cinder), Compute (Nova), Network (Neutron), Dashboard (Horizon)
- During install run, hit errors like below:
cp: cannot create regular file '/etc/nova/policy.json': Permission denied
the resolution was to basically edit the file work-dir/devstack/lib/nova and change to 'sudo cp' for the failing file-access occurrences; for e.g. the following changes were made
sudo cp -p $NOVA_DIR/etc/nova/policy.json $NOVA_CONF_DIR
# Get the sample configuration file in place
sudo cp -p $NOVA_DIR/etc/nova/api-paste.ini $NOVA_CONF_DIR
sudo chown $STACK_USER $NOVA_CONF_DIR
- To give an estimate, deploying DevStack in my environment took between 5-6 minutes (after prior multiple failed attempts)
5. Perform basic sanity tests
- Run the test scripts
# cd $ICE_STACK_DIR/devstack/tests
# ./functions.sh
# ./test_config.sh
- Run the exercise scripts
# cd $ICE_STACK_DIR/devstack/exercises
# ./horizon.sh
-- expect to see something like the following message printed on the console if everything goes well with the deployment
.............
+ set +o xtrace
*********************************************************************
SUCCESS: End DevStack Exercise: ./horizon.sh
*********************************************************************
6. Launch OpenStack Horizon Dashboard
- Go to URL http://my.eth1.ipv4.address
- Logon as default user 'demo' or 'admin' and password $ADMIN_PASSWORD set in local.conf
Here is a screenshot of the dashboard System Info panel
7. Try creating instances from the Dashboard
- Refer OpenStack Admin Guide for more details on managing the resources and services using the Horizon dashboard
8. Stopping and Restarting DevStack
- To stop all processes that were started by stack.sh
# cd $ICE_STACK_DIR/devstack
# ./unstack.sh
- To restart DevStack
# cd $ICE_STACK_DIR/devstack
# ./rejoin-stack.sh
Option-B. Deploy DevStack Icehouse using Vagrant
I found this blog article 'OpenStack Cloud Computing Cookbook' by Kevin very helpful in setting up my local development environment virtual machines.
Installed the following:
1. VirtualBox 4.3.10
2. Vagrant 1.4.3
3. Vagrant Cachier plugin
and then followed the instructions as-is, they just work as documented.