My experience with Bare metal provisioning: OpenStack Ironic
Cloud! The name itself says a lot. No need to explain. But just think about what were there before cloud. Guess!! Yes, it is virtualization. Entire community was amazed with the capabilities and the feature virtualization technology provides. The ease of maintaining infrastructure and reducing burden on the cost was truly awesome. No doubt about it.
However, when technology evolves further and started new edge on the research and technology, cloud came up. And surprisingly, it started roaming all over the IT sky in a very short time span, it grew like anything. Now everyone talks about the cloud, what why, how and so on. Most of the organizations and products are now moving to clouds and using its benefit.
So, what next! Yes, when we talk about cloud, many people raises their eyes and ask, what about computing performance and for that I have answer, bare metal provisioning in openstack, aka Ironic!!!
Ironic: the openstack bare metal hardware provisioning service
Today, I will shed lights on the setup and challenges faced while implementing the same across projects.
As you might be already aware, the main purpose of Ironic service is to provision the hardware based on the configuration and let the guest operating system be installed on that remotely to have the E2E infrastructure provisioning done.
· Ironic has three major components
o Ironic API
§ Talks to Nova compute service
o Ironic conductor
§ Talks to other openstack services
o Ironic DB
§ Talks to the different drivers.
· Make sure that authentication system is in place before executing any openstack command.
· You need to download the rc file from horizon dashboard and source it.
· Actual command : source server-openrc
· This file contains all the variables required to locate each service and url. It asks for the password once you enter the command. you need to enter the admin password if you are using rc file of admin user
· Every user has its own RC file which contains information related to its tenant, projects and credentials etc.
· You need to create the endpoint for service. The service type is baremetal and service name is Ironic
· Ironic API and Ironic conductor service can be on different machines. Ironic conductor can be installed on many machines but there version should be same to have exact function properly.
· Mysql DB gets used to store all data. mariaDB prompt comes for all the mysql commands.
· Ironic database and ironic user has to be created.
· In the first attempt, we see that rabbitMQ portal was not working. To fix that, we have to install management plugin and then it started working.
· Get the RabbitMQ username and password from nova configuration file.
· While creating ironic database, faced the issue with sql connection. The issue was, while creating database, service was not able to access the mysql connection. The reason being, in the /etc/ironic/ironic.conf file, in the connection section the IP of controller where identity service is running was provided. Instead, it should contain that entry which is there in /etc/mysql/my.cnf
· Ironic supports plenty of driver to provision the hardware and install the OS. There are various 3rdparty providers who have their own proprietor software's and drivers to work with Ironic.
o The popular one is IPMI
o Installed the IPMI utility.
o Configured the service as it is and restarted the service.
· It seems that IPMI-tool need IPMI controller hardware to be present on the machine which is being provisioned.
Configuring Compute service:
· Nova.conf file needs to be modified to add the parameters required for Ironic to work.
· Sometimes nova.conf file present on the both the boxes. Compute node and controller node. This is bit confusing. The file which is present on the node on which nova-scheduler service is running is the main file and is responsible for all the changes related to Ironic.
· Once all the configuration are in place, restart nova-scheduler on controller node and nova-compute on compute node.
· While enrolling any node, we need to provide the ironic api version. set the environment variable : export IRONIC_API_VERSION=1.11
· Need to register the MAC address with ironic service. If there are multiple NICs , get the MAC address of that NIC which is connected to LAN
· Node should be in available state so that compute service can see it to provision the hardware. If the node is in any another state then compute service won't see it and cannot be provisioned.
· Node cannot be moved directly from enroll state to available state. First they should move to manageable state and then to available state.
To summarize, bare metal provisioning is really cool stuff when you design the private cloud and planning to deploy an application which requires high end computing and are very sensitive to computing performance. "pxe_wol" is the easiest driver to learn how Ironic service works and get acquainted enough to understand capabilities of Ironic. As I mentioned earlier, there are plenty of drivers, however, they need special hardware support and configuration to get it working. Try with "pxe_wol" first and move forward.
Typical Openstack Ironic conceptual design you can refer here: