[CLOUDSTACK-6114] Create config management recipes to install CloudStack

To ease deployment of CloudStack we need to develop a set of recipes for all the configuration management systems. A few already exist using Chef, Puppet and Ansible.

This project will do an inventory of existing recipes available on-line, coalesce them into a coherent set and write missing recipes.

The student will need to learn configuration management with at least one tool (chef, puppet, ansible, salt..etc) and will develop recipes using Vagrant.

The outcome will be a fully functional devcloud (cloudstack sandbox) with multiple recipes. CloudStack will be deployable in a sandbox or in a multi-machine environment.

Abstract

The aim of this project is to use Vagrant and one of the many configuration management tools to easily bring up Cloudstack environments for development or testing purposes.

Existing projects

Currently there are two projects which aim to give full Cloudstack development environments:

  • SimStack: Vagrant box with Apache Cloudstack and Raik-CS. It uses the Cloudstack simulator in order to simulate a virtual data centre. It uses chef recipes for the installation of all required software.

  • Devcloud: Vagrant box with Apache Cloudstack and Xen installed. Uses boxer and puppet for its creation. It requires a modified version of Vagrant because it uses SCP for uploading the puppet recipes to the box. As far as I'm aware the project is a little dated. Its code is available within/tools/devcloud/src.

Along with this there are several projects for installing Apache Cloudstack:

  • puppet-cloudstack: puppet manifests for installing Apache Cloudstack (unsure of specific version), Cloudstack-Agent and KVM. Project was last updated 2 years ago.

  • cookbook_co-cloudstack: Chef cookbook for installing Apache Cloudstack 4.2.

  • autoinstall_cloudstack: Shell script for installing Apache Cloudstack 4.2.

Deliverables

The project will aim to deliver:

  • Puppet recipes for:
    • Installing all required packages for compiling Cloudstack (Maven, Tomcat, JDK7, etc.).
    • Installing all required services for running Cloudstack (NFS, MySQL).
    • Cloning the code base, adding in vhd-util and downloading the SystemVM template to secondary storage.
    • Compiling the code base.
    • Initialising the database for devcloud or simulator usage.
  • Packer files for:
    • Creating XenServer base box (Will be used as the hypervisor).
    • Creating CentOS base box (Will be used for NFS, MySQL and possibly management server).
  • VagrantFile for VirtualBox to:
    • Bring up 1 to n XenServer boxes that will act as hosts.
    • Bring a CentOS based boxes that will act as NFS, MySQL and possibly management server.
    • Bring a CentOS box that will have NFS, MySQL and management server in simulator mode.

Design

Design 1

  • Cloudstack runs on developers machine
  • NFS and MySQL run on a CentOS virtual machine.
  • XenServer runs in a virtual machine.

Design 1

  • Cloudstack management server on developers machine.
  • Virtual Machine for NFS and MySQL on a virtual machine.
  • XenServer on another virtual machine.

NFS and MySQL

This box will be provisioned by puppet on first boot.

Port 3306 will be forwarded to the host machine to avoid the developer having to install a MySQL server.

XenServer

The VagrantFile will allow for 1 or more XenServer boxes to be brought up.

The host-only adapter will act as a gateway to the NAT adapter to allow VMs brought up by Cloudstack to access the internet.

Design 2

  • Cloudstack, MySQL and NFS on a CentOS virtual machine.
  • XenServer on another virtual machine.

Design 2

NFS, MySQL and Cloudstack Management Server

This box will be provisioned by puppet on first boot.

It will take some time to come up as the Cloudstack code base will need to be downloaded and compiled.

XenServer

The VagrantFile will allow for 1 or more XenServer boxes to be brought up.

The host-only adapter will act as a gateway to the NAT adapter to allow VMs brought up by Cloudstack to access the internet.

Design 3

  • Cloudstack, MySQL and NFS on a CentOS virtual machine.

No hypervisor will be present, Cloudstack will be deployed in simulator mode.

Design 3

NFS, MySQL and Cloudstack Management Server

This box will be provisioned by puppet on first boot.

It will take some time to come up as the Cloudstack code base will need to be downloaded and compiled.

No hypervisor is required as Cloudstack is running in simulator mode.

References

https://issues.apache.org/jira/browse/CLOUDSTACK-6114

https://cwiki.apache.org/confluence/display/CLOUDSTACK/DevCloud

https://github.com/runseb/simstack

https://github.com/CloudStack-extras/puppet-cloudstack

https://github.com/cloudops/cookbook_co-cloudstack

  • No labels