To Helion and Back!
HP Helion OpenStack Community is a new, Openstack Icehouse-based distribution for enterprises and cloud administrators interested in evaluating, developing and deploying a private cloud based on OpenStack technology. It was recently released to the public for free as it was released under the Apache 2.0 license (same as Openstack).
For those familiar with Openstack, you'll see many of the features installed and enabled with some caveats. Although this is mostly Openstack, there are some major additions that allow for greater orchestration and scalability. With that being said, let's get started.
For those that are used to testing new OS flavors or applications by spawning a new virtual machine via VirtualBox, you're in for a big change. The prerequisites are the following:
- At least 16 GB of RAM
- At least 200 GB of available disk space (although the install will only take around 80GB)
- Virtualization support enabled in the BIOS
Why the heavy requirements you say? Helion leverages TripleO and it's ability to deploy OpenStack using OpenStack wherever possible. It uses OpenStack's own cloud facilities as the foundations to build, using nova, neutron and heat to automate fleet management at datacenter scale (hence the lofty minimum requirements). To get a better understanding, as well as a breakdown of the components, take a look at my lab diagram (grey areas show virtual components):
As you can see from the lab above, TripleO simulates the deployment of OpenStack by creating and configuring a set of virtual machines (VM) that play the roles that baremetal machines would in a real deployment:
- Seed — The seed VM is started as a VM from a specific seed VM image(seed.qcow2). It contains a number of self-contained OpenStack components that are used to deploy the undercloud. The seed deploys the undercloud by using Nova baremetal to deploy a specific undercloud machine image.
- Undercloud — In a typical HP Helion OpenStack Community deployment, the undercloud is a baremetal server, but in a virtual deployment the undercloud is simulated as a VM. The undercloud is a complete OpenStack installation, which is then used to deploy the overcloud.
- Overcloud — The overcloud is the end-user OpenStack cloud. In a typical HP Helion OpenStack Community deployment, the overcloud comprises several baremetal servers. In a virtual deployment, the overcloud comprises 4 nodes:
- 1 overcloud controller
- 2 overcloud swift nodes
- 1 overcloud compute node
Now you understand the lofty memory requirements, but later I'll show you how to reduce the requirements slightly in exchange for swap space (do not do this in production though!)
Start with a Ubuntu 14.04 64-bit system and install the following dependencies (and yes....my lab server is called partytime):
dc@partytime:~$ sudo apt-get install -y libvirt-bin openvswitch-switch python-libvirt qemu-system-x86 qemu-kvm openssh-server
dc@partytime:~$ sudo /etc/init.d/libvirt-bin restart
Switch to root and generate an public SSH key:
root@partytime:~# sudo su - root@partytime:~# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: d1:08:ec:34:d0:d8:87:9e:71:50:b0:e2:29:ab:b7:2a root@partytime The key's randomart image is: +--[ RSA 2048]----+ | .*+=. | | . Oooo | | .+.*o . | | . o+ . | | . o S | | o | | . | |E.. | |+o.. | +-----------------+ root@partytime:~#
Download and unpack the Installer
Download the HP Helion OpenStack® Community Virtual Install file and rename the .csu file:
dc@partytime:/opt$ mv hp_helion_openstack_community.tar.gz.csu hp_helion_openstack_community.tar.gz
Verify the checksum:
dc@partytime:/opt$ md5sum hp_helion_openstack_community.tar.gz 4f82f7924722080d5721ce752051b1f2 hp_helion_openstack_community.tar.gz
dc@partytime:/opt$ tar -zxvf hp_helion_openstack_community.tar.gz
Start the Seed VM
Use the following command to start the seed VM (provided to unpacked this in the root directory):
HP_VM_MODE=y bash -x ~root/tripleo/tripleo-incubator/scripts/hp_ced_start_seed.sh
BE PATIENT! This process can take 10 minutes or more as the initialization scripts installs any additional dependencies and packages. Some of the common errors are the following:
error: unsupported configuration: Domain requires KVM, but it is not available. Check that virtualization is enabled in the host BIOS, and host configuration is setup to load the kvm modules.
If you get this, check your BIOS settings and make sure
virtualization is enabled. Each BIOS is different so the following is an example of my system:
If the seed startup is successful, a message similar to the following is displayed:
Wed Jul 2 17:47:35 CDT 2014 --- completed setup seed
You should now see a 'seed' VM created in your host system:
root@partytime:~/tripleo# virsh list Id Name State ---------------------------------------------------- 2 seed running
Start under/overcloud components
After the Helion setup, you'll notice a new interface that has been setup:
root@partytime:~/tripleo# ifconfig virbr0 virbr0 Link encap:Ethernet HWaddr fe:54:00:84:dc:89 inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:171 errors:0 dropped:0 overruns:0 frame:0 TX packets:240 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:28599 (28.5 KB) TX bytes:49284 (49.2 KB)
...as well as some new route entries:
root@partytime:~/tripleo# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 br-eth0 192.0.2.0 192.168.122.106 255.255.255.0 UG 0 0 0 virbr0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br-eth0 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
As you can see from the lab diagram, the new control network of 192.0.2.0/24 has been instantiated...so now we can SSH into our seed VM:
root@partytime:/# ssh 192.0.2.1 Linux hLinux 3.13.9-5-amd64-hlinux #5 SMP Fri Apr 18 15:45:22 MDT 2014 x86_64 The programs included with the hLinux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. hLinux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Thu Jul 3 04:11:14 2014 from 192.168.122.1 root@hLinux:~#
Once logged in you'll need to run another script to start the undercloud and overcloud components:
root@hLinux:~# bash -x ~root/tripleo/tripleo-incubator/scripts/hp_ced_installer.sh
Again, be patient with the script as it can take up to 10 minutes for the script to create, image, and start the VMs required for the undercloud and overcloud, as well as create a test guest VM in the overcloud. If you get the following message...
++ wait_for_stack_ready 300 10 overcloud Command output matched 'CREATE_FAILED'. Exiting...
...then it means that it took longer than the allotted time so the scripts need some modification:
vi ~root/tripleo/tripleo-incubator/scripts/hp_ced_overcloud.sh wait_for_stack_ready 3000 10 $STACKNAME vi ~root/tripleo/tripleo-incubator/scripts/hp_ced_undercloud.sh wait_for_stack_ready 2800 10 undercloud
If the deployment completes successfully, a message similar to the following is displayed:
HP - completed -Thu Jul 03 11:19:14 UTC 2014
** Side note. I tried this separately on an AMD system and was hung prior to this step. A quick debug showed the following:
root@hLinux:~# nova --debug service-list --binary nova-compute DEBUG (shell:792) You must provide a username or user id via --os-username, --os-user-id, env[OS_USERNAME] or env[OS_USER_ID] Traceback (most recent call last): File "/opt/stack/python-novaclient/novaclient/shell.py", line 789, in main OpenStackComputeShell().main(argv) File "/opt/stack/python-novaclient/novaclient/shell.py", line 616, in main raise exc.CommandError(_("You must provide a username " CommandError: You must provide a username or user id via --os-username, --os-user-id, env[OS_USERNAME] or env[OS_USER_ID] ERROR (CommandError): You must provide a username or user id via --os-username, --os-user-id, env[OS_USERNAME] or env[OS_USER_ID] root@hLinux:~#
This is an issue with virtual preview in AMD processors and will be fixed in the next virtual preview release.
Verify the Install
Set up your environment to access the overcloud, and list the running instances:
root@hLinux:~# source ~root/tripleo/tripleo-overcloud-passwords root@hLinux:~# TE_DATAFILE=tripleo/testenv.json root@hLinux:~# source ~root/tripleo/tripleo-incubator/overcloudrc-user root@hLinux:~# nova list
Example screen shot:
And test connectivity to the guest VM:
Connect to the Horizon console
From within the seed VM, set your environment to access the undercloud, then list the overcloud instances and find the IP address of the overcloud NOVA controller:
root@hLinux:~# source ~root/tripleo/tripleo-undercloud-passwords root@hLinux:~# TE_DATAFILE=tripleo/testenv.json root@hLinux:~# source ~root/tripleo/tripleo-incubator/undercloudrc root@hLinux:~# nova list
Obtain the passwords for the demo and admin users:
root@hLinux:~# grep OVERCLOUD_DEMO_PASSWORD ~root/tripleo/tripleo-overcloud-passwords root@hLinux:~# grep OVERCLOUD_ADMIN_PASSWORD ~root/tripleo/tripleo-overcloud-passwords
And log into your Horizon console: http://192.0.2.23
And that's pretty much it for the install. The list of the passwords that were automatically generated during installation can be found in ~root/tripleo/tripleo-overcloud-passwords.
- If the hp_ced_start_seed script fails to start the seed, run the script again. The virtual installation does not persist across system reboots. When you reboot your system, be sure to start a new VM installation.
- For best performance, cleanup any VMs using excess space using the following commands: - Delete the KVM VMs and their storage volumes using virsh commands.
- Delete /tmp/seed_options.
- Uninstall any packages that you no longer require.
- To avoid an unsupported locale setting error when issuing Neutron commands from within the seed VM, set the following environment variable:
Helion is an amazing way of deploying an Openstack ecosystem. Although it's a much larger install than a traditional Openstack deployment, the additional components added allow for much faster provisioning and resource allocation. I'll dive more into provisioning new VM's and networks via Horizon in my next post. Until then...