Red Hat ManageIQ is an open source cloud management platform(CMP) that enables the virtualization admins to better manage their existing virtualization, private cloud and hybrid cloud infrastructures. You can plug your existing VMware vSphere, Openstack or RedHat Enterprise Virtualization environments into ManageIQ and manage all of them through a single pane of glass. You can also plug your Amazon Web Services(AWS) infrastructure into ManageIQ and manage it with your other environments. They also have support for Docker containers and integration with Chef, Puppet, Ansible and Salt coming in the future. I feel I have given enough introduction about ManageIQ. To read more about it you can go to http://manageiq.org/
Let’s dig in and find out what are the different components of the ManageIQ architecture:
- ManageIQ Management Engine Appliance: This comes as a preconfigured, high performance virtual appliance that you can simply deploy in your environment to get it up and running.
- ManageIQ Management Engine Server: This server is a software layer that sits on the appliance and enables communication between the SmartProxy and the Virtual Management Database.
- Virtual Management Database(VMDB): This database resides either on the MangeIQ appliance itself or another machine that can talk to the ManageIQ appliance. This stores all the information that is collected about all the infrastructures that plug into ManageIQ.
- ManageIQ Management Engine Console: This is the web interface that is accessed by the users to view and control your virtual infrastructures.
- SmartProxy: This component can either reside on the appliance or an an ESXi server. Each storage location must have a SmartProxy with visibility to it. As the name suggests, the SmartProxy acts on the behalf of the appliance.
The following diagram shows us the different capabilities that ManageIQ has:
Let’s talk about the Automation capabilities of ManageIQ. ManageIQ gives us the ability to:
- Write and Run our own scripts: It enables us to write our own Ruby code and have it executed based on certain control policy actions.
- Use Tags to automate: ManageIQ allows us to create custom tags and categories in addition to the predefined tags and categories that come with it. We can assign virtual machines various tags and have scripts in place that use those tags to implement features such as load balancing.
- Event Processing: The ManageIQ appliance has the capability to monitor and respond to external events and also raise its own events that can be handled by Automation and Control policies.
- State Machines: State Machines are a useful way of performing a sequence of operations, with abilities to ensure that a certain task got completed before another task was kicked off. It also allows us to retry the failed tasks and gives us the ability to set timeout values, to ensure that the entire operation does not fail due to a single task failure.
The above list isn’t a complete list of all the automation capabilities that ManageIQ offers, but only a small list that I find interesting. Let’s talk about one particular example in detail. This example talks about Enforcing Anti-Affinity Rules on our hosts. The script for this example can be found here. Our task is to enforce the Anti-Affinity rule and ensure that no two virtual machines having the tag ‘server_role’ can coexist on the same physical host. The ‘server_role’ tag is just an example and you can use any customized tag that you want to enforce this. The importance of having such a control policy in place is to make sure that not more than one mission-critical virtual machine lives on the same physical host in case of host failure. The ruby script is invoked by clicking on a custom button on the VM details page. On the click of that button, it checks if that particular VM has the ‘server_role’ tag. If yes, then it checks which physical host is hosting the VM and then performs a check to see if any other VM on the same physical host have the ‘server_role’ tag. If this is true, then it scans all the other hosts inside the same cluster to check if there are any hosts that don’t have any VMs having the ‘server_role’ tag. Once it finds the appropriate host, it begins a live migration operation for the original virtual machine from the original physical host to another host in the same cluster. If you have SMTP configured in your environment then the script also sends and email to the Admin about the migration operation. If it fails to find a suitable host to migrate the VM to, it raises an event. The following decision tree shows the flow of events:
I find this example as a good starting point for using the Automation functionality that ManageIQ offers. If you want to read more into ManageIQ and its automation capabilities, check out the following links:
If you have tried other cool features of ManageIQ then let me know in the comments section.