IT INFRASTRUCTURE AUTOMATION

World technology changes at an unprecedented speed. The consumption of technology services through new applications has increased over the years. Many ordinary activities use digital channels, but people in the past have done the same actions in person. How we live and interact with technology transforms how we use money and our free time. The avalanche of new users who demand updates and new functionalities that must be designed, tested, and implemented without impacting the stability of the service and security before vulnerabilities have brought new challenges for the teams that develop and support technology operations.
 
IT infrastructure must adapt to demand to support transactional flow, so the way it is deployed and configured must evolve. Concepts such as cloud, orchestration, containers, service meshes, and serverless are new for some of us who are used to on-premise infrastructure and can be overwhelming, but supported by new tools and methodologies can be allies to achieve a positive impact in the way technology services are delivered.
 
To continue, we must address the concept of IT infrastructure. IT infrastructure is the set of technological elements —hardware, software, networks, and facilities— that are required to develop, test, deliver, monitor, control, or support IT services. Infrastructure is the foundation of an IT service, whether on a traditional infrastructure located in a private data center or hosted on a cloud provider’s infrastructure. Depending on the IT service’s operation, scalability, and delivery have to define the deployment method.
 
However, new tools that allow collaborative and controlled work, supported by new agile methodologies, can help us efficiently manage the IT infrastructure that is constantly changing and growing.
 
Automation is the key
 
As the IT service grows —not only referring to the number of users, new features, and security patches— the complexity and number of infrastructure elements involved in its deployment and support also grow, which makes administration an increasingly heavy burden. Creating new functionalities for an application generates activities that, on many occasions, can be repetitive, tedious to execute manually, and prone to human error. An example of these activities is creating and testing the new infrastructure. Also, it brings with it the provisioning of virtual machines, the configuration of network and security devices, the design of access rules, the definition of high availability, and other tasks supporting the new functionality. Before this, IT administrators must do all these tasks in a controlled manner to avoid impacting the value delivered by the business and triggering application degradation.
 
Having said all of the above, we must agree that automation tools increase agility, avoid the potential danger caused by human errors, facilitate capacity planning, avoiding insufficient infrastructure preparation or the unnecessary allocation of resources. In this way, automation can become an ally in reducing costs in the cloud and on-premise.
 
What can we automate?
• Creation or elimination of infrastructure
• Infrastructure configuration
• Network automation
• Multi-cloud management
• Deployments
 
IaC (Infrastructure as code) tools allow the creation and management of IT infrastructure from scripts that can be centralized and versioned in a single repository; in this way, IT administrators can execute these scripts multiple times without manual configuration. In addition, replicating them in different environments is possible so that the IT team does not have to worry about manually managing servers, network configurations, storage, or any other element every time it is required to create new functionality or launch a new service.
 
Among the most popular IaC solutions are:
• Chef
• Puppets
•Terraform
• Ansible
• AWS Cloud Training
 
There are relevant solutions on the market that complement each other such as Terraform and Ansible. While Terraform allows you to define the state of the infrastructure through code, Ansible will enable you to manage the configuration, for example, the preparation of the operating systems and network devices that the service will use.
 
One of the reasons why Terraform is so popular, in addition to its simple syntax power, is that it is not limited to a specific infrastructure provider since it has support for Amazon, Azure, Digital Ocean, and Vmware vSphere, among others, allowing the code definition of your infrastructure, even if it is distributed among several cloud providers, whether public or private, obtaining complete management by avoiding the limitations of using a single provider. Another favorable aspect is that it avoids the complexity of interacting with the interface of each of the providers.
 
In conclusion, the definition of infrastructure as code allows integration with other automation, continuous integration, and continuous deployment tools (Gitlab, Jenkins), allowing the work team to focus on creating value for the technology product or service, leaving aside the work of the operation, or in more exact words, reduced to the execution of a script that will leave the necessary infrastructure ready to work.

Written by Jorge Andrés Morales Sepulveda, ITSM  Consultant & Support Coord de BPS