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.
Components:
·
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.
Configuration:
·
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.
Database:
·
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.
RabbitMQ configuration:
·
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.
Key challenges:
·
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
Drivers:
·
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.
Enrollment process:
·
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:
http://docs.openstack.org/developer/ironic/deploy/user-guide.html
References:
https://wiki.openstack.org/wiki/Ironic
https://developer.rackspace.com/blog/how-we-run-ironic-and-you-can-too/
https://software.intel.com/en-us/articles/physical-server-provisioning-with-openstack