Engineers, sysadmins, and DevOps roles' job responsibilities include answering dozens of emails, upgrading hundreds of servers, and patching all the systems in your data center or favorite cloud.
All of these tasks take a considerable amount of time to complete—and they are sometimes boring but always important. A slight mistake can open up a potential threat to the security of the entire system. For example, failing to apply a security patch can make a system vulnerable. And let's be honest, people make mistakes. But what if you could automate these mundane tasks, save some time, and simplify your team's tasks?
[ Download now: A system administrator's guide to IT automation. ]
What is automation?
Let's start by answering this question: Why is there a need to automate your daily tasks? It's simple, as discussed above. It usually takes a lot of time to manually repeat the same tasks daily and it's also prone to mistakes if you miss slight details. With all the advancements in technology, it's quite natural to take these for granted.
For example, there are still sysadmins who install servers by hand, make backups by logging into each system, and manually upgrade packages. These jobs don't necessarily take much expertise to complete. Let's estimate 15–20 minutes for each of these tasks. Once an automation framework is set, sysadmins can simply repeat these tasks and move on to more difficult projects requiring time, attention, and skills.
The benefits of automation can be:
- Being productive and focusing on tackling difficult tasks at hand
- Saving time and increasing overall productivity
- Reducing documentation
- Storing all automation scripts and tools in a free, hosted software development and version control system such as GitHub
- Reducing mistakes
What tasks should be automated?
Here are a few different ways of thinking about which tasks to automate.
Repeatable and routine tasks
These are the tasks that need to be carried out on a regular basis. For example, I need to update my GitHub fork, including the latest changes from an upstream repository. Other examples include:
- Collecting the system backup logs
- Sending out a weekly system upgrade email
- Carrying out upgrades
Simple yet time-consuming tasks
You might be required to collect system utilization in your lab or send a daily email to the team about system availability. There will be some tasks that take a lot of time for the system to complete, such as a continuous integration/continuous delivery (CI/CD) pipeline or a particular installation. It's always better to set some alerts in such cases. I use an email alert that I receive after each Jenkins pipeline completion. This way, I can keep track of progress and also use the time to do other tasks.
The combination of several jobs, such as installing an operating system (OS), installing the latest packages, and making sure a weekly CI/CD pipeline is run into the system, is not complex, but think of repeating these steps for hundreds of systems in your data center or cloud environment. Other examples include setting up load balancers and proxy servers or making entries for systems in your Domain Name System (DNS) infrastructure.
What it takes to learn automation
As a sysadmin/DevOps engineer, automation should always be a top priority. It doesn't take much time to learn the easy tools available, which make our tasks simpler. In addition to scripting skills, Ansible is one configuration management tool that I use to do my automation tasks.
Using Ansible, I have set up an infrastructure that automatically installs the operating system to all of my systems in our data center using Red Hat Satellite. The Ansible playbook installs the latest packages and runs automation to set up our DNS and DHCP systems on a per-team basis. I have a Jenkins pipeline configured that completes the OpenShift installations on our systems and sends an alert to my email.
I maintain a central repository that stores Ansible playbooks and scripts that I update to ensure all the documentation and instructions are available in a single place. This is especially important so that other team members can consume and submit their own changes, saving a lot of time. Learning Ansible, Jenkins, and Terraform was one of the best decisions that we made as a team. Essentially, I tend to view all repeated tasks as automation candidates after working on them frequently.
[ A free guide from Red Hat: 5 steps to automate your business. ]
I have given various examples of simple, repeatable tasks that are often time-consuming. If properly planned, and with the help of some tools, these tasks can be completely automated and stored in a centralized repository like GitHub. By automating these steps, you can save a lot of time and increase team productivity. Most importantly, you can avoid making mistakes when a complex task is involved, which usually depends on taking input from one segment of the system and passing it on to another segment, and then moving on to completion.
It's not always necessary to automate every job. If you feel automation is difficult, you can usually start by working with small, low-risk tasks and then build up your repository by partially automating other tasks. Automation will bring a huge change to the team's work style in the long run.
In summary, it's never about automating yourself out of a job—it's about deciding when you have done enough of the work and want to change your focus.