In the real world are there are many drawbacks of the old model of infrastructure management. What are the benefits of having an automation language to automate Linux administration and does the world really need infrastructure automation and how will Ansible comes into the picture. Yeah, go ahead and read this article, when you have finished reading you will get to know about these things.
Do we really need to Automate the Linux Administration?
The Linux administration was performed through graphical or command-line interfaces for many years. When are performing these tasks Linux administrators usually memorize the routings, check the steps in documents, or follow the check-lists.
There are several drawbacks when we are using these processes when we are managing our infrastructure. There is plenty of chance that the System Administrator might miss a step of his task. Most of the time there is no proper way to check whether the particular task has been completed successfully and it is behaving the expected way after the update or the configuration is done.
If we further discuss this, there are some scenarios where we need multiple servers has to be identical after an update or a deployment, but when we are manually configuring there is a chance that one server might differ from another after an update. This will make maintenance much more difficult and break the stability of your IT Infrastructure
When we considering these facts we can say that Automation can help to avoid these problems that can be caused by System Administrators and infrastructure management. If you are a System Administrator you can ensure that all of your systems are updated correctly and all the deployments are done as required. When you automate your daily repetitive tasks you can spend your remaining time on more productive works. Considering the organization’s point of view they can release their new version more quickly or they can update their application so they can have the new features they needed quickly.
Talking about the benefits of a good automation framework, there are several things that we cannot forget about.
Infrastructure as Code
In a good automation system, it should allow us to define the state of our infrastructure in a human-readable format. Language shouldn’t be very complex and should be very easy to read. If we use this kind of system, we can easily check what state our infrastructure is in and do the necessary changes.
When there is an automation language that can represent simple text files, we can manage them in a version control system like a software code. So when we can commit changes to a version control system, there will be a track of records of the changes we have done to our configurations. Just in case if there is a requirement to revert back the code, you just have to check out that particular code and apply it to the infrastructure.
If the automation platform nature is like this it will align with the DevOps practices as well. Developers will define the desired configurations in automation language and then operators can easily read them and provide feedback. Then automation will ensure the infrastructure will be in the exact state developers desired.
Automate Linux Administration will Reducing Human Error
If is there any requirement to do configuration changes to your server, when you are having an automation framework in place you just have to update the code written in automation language, rather than doing the changes manually in servers. If you do the steps manually you have to worry about if you have missed some steps every time you do these changes.
As we discussed in earlier chapters, we have written our automation in a code, so we can review these codes with multiple subject matter experts and get their feedback about these codes. This will reduce the operational risks, where we can avoid any problem that can be occurred in our infrastructure configuration.
If some company uses automation for its infrastructure configuration, it will reduce any human errors that can be occurred during a manual configuration process.
Tools available for Infrastructure Automation
- Terraform
- Ansible
- Chef
- Puppet
- Saltstack
We have focussed on Ansible in this article, just because Ansible is one of the popular Automation tools in the industry nowadays.
Automate Linux Administration using Ansible
Ansible is one of the best automation tools available as free and open source. We can write our configuration in yml format in ansible PlayBooks and configure our infrastructure automatically. Ansible can adapt to many different workflows/environments easily. Due to the simplicity of learning Ansible new users can learn it quickly and apply their configuration more productive manner.
Simple
Since these Ansible PlayBooks are in a human-readable format they can easily read and do the changes without having specific coding knowledge. Due to this simplicity, even someone not in the team that has written the Playbook can understand and edit the PlayBooks and someone new to ansible can quickly grab the knowledge and do the necessary changes.
Powerful
Ansible can be used to Automate the entire application life cycles like deployment automation, configuration automation, and network automation.
Agentless
There are a lot of Automation tools that came before ansible in the field, but unlike any of them, Ansible is Agentless. That means you can deploy the changes to your infrastructure server without installing any agent to those servers. Ansible will connect and run tasks in Linux hots using OpenSSH and it will connect to windows hosts using WinRM. Ansible will only put small programs called ansible modules in these hosts and these modules will take care of the tasks configured in ansible PlayBook that needed to run in the host. When they finished the task, the modules will be automatically removed from the hosts.
Due to this advantage ansible can run on any host. Ansible provides Agentless support for Linux, Windows, UNIX, and network devices in physical, virtual, cloud, and container environments.