Most of our case studies are written about our customers. But this time, we’re the ones requiring a new solution to enable our Solutionauts to work more efficiently. We put together a custom OpenStack Lab with Ceph Storage and Ansible playbooks, giving us access to internal resources on demand.
We were previously hosting various resources externally in a Data Centre. In order to make it easy for staff members to acquire and release these resources on demand, we needed to set up an internal lab with a unified system which can be used to manage compute, storage and network resources.
The Aptira Solution
The goal is to have most of our servers (12 servers) managed by OpenStack, and other resources, including 2 Noviflow switches and Ceph storage with 72 TB of space, integrated with OpenStack.
In order to maximize the use of bare-metal machines to use for user workload, we have chosen to virtualise the controller plane. As a result, three OpenStack controllers and Ceph monitors are running in VMware as virtual machines, and 8 KVM compute nodes are running on bare-metal machines. We also have another 3 bare-metal compute nodes managed by Ironic. Three out of the 8 KVM compute nodes are also Ceph OSD nodes, with each node having 12 2TB disks.
This stack runs several projects, including Keystone, Glance, Swift, Cinder, Horizon, Nova, Neutron and Ironic. Glance, Cinder and Nova use Ceph as the storage backend. Keystone uses Aptira’s active directory for user authentication. Two KVM compute nodes are cabled to our NoviSwitches and have PCI-Passthrough enabled so VMs on these compute nodes can have direct access to the ports cabled to the NoviSwitches.
The whole system is deployed by Ansible playbooks, custom developed by us. These playbooks are not specific to Aptira’s environment and can be re-used by other projects.
We now have an internal lab to access resources on demand, rather than them being hosted externally. Ansible playbooks are used to deploy OpenStack and Ceph. When deploying OpenStack components, Ansible calls upstream OpenStack Puppet modules to do the installation. That way we don’t need to re-write Ansible playbooks to install OpenStack components.