Infrastructure As Code – An overview :

A server has crashed – this can be a freezing situation for any support person. The techie in you will tell that there is a solution. But, despite of the help from the  documentation outlining every step needed for a reconfiguration, it’s a bare fact that huge time is needed to accomplish this task manually.

IAC (Infrastructure as Code) means one can write code to provision and manage servers, in addition to automating processes. IAC can sometimes be referred to as Programmable Infrastructure. This differs from Infrastructure automation, which involves replicating steps multiple times and reproducing them on several servers.

For Example, an IAC that is coded with Ansible, an IT management & configuration tool can install MySQL server & verify that it is running properly, create a user account & password, set up a new database & remove unwanted databases – all via code.  Other similar tools are also there like – Vagrant, Puppet, Docker, etc.  Things are even made simpler by RESTful APIs provided by hosting sites like AWS.

Most of these tools also ensure that same configuration can be run multiple times to achieve the same results. IAC has Version Control, which makes it easier to track configuration changes in the infrastructure environment. Plus, using IAC, configurations can be run on anything from local machines, local physical servers, cloud to virtualization tool.

There are some problems too with IAC. Need of Huge planning, Replication of Bad configurations in all servers, Configuration Drift (in the case of Hot Fixes).

But today’s expanding businesses need highly flexible and high speed IT environment. Unlike less flexible scripting / manual processes, in IAC, complete IT infrastructure provisioning has been done using code. Thus, it will be able to dictate the needed IT Infrastructure as well as it serves as a documentation.

IAC leverages effective SDLC methods. To completely embrce IAC, 3 factors –  an agile development process (to accept change & ensure flexibility), DevOps environment (to be faster by unifying software development (Dev) & software operation (Ops)) & a development tool (as we discussed above) –  is needed.

Effective implementation of IAC produce faster as well as flexible IT infrastructure; gain monetary benefit by  reducing man hours to even minutes & eliminate shadow IT. As a whole, we can see IAC as a simpler solution to sophisticated IT infrastructure demands of the industries.