You are a system administrator on an operations team that works using agile methodologies following a framework based on scrum, kanban, or even scrumban. Your team takes care of a constantly evolving environment. On top of the daily support tickets, there are deliverables to stakeholders that must be completed according to deadlines. The workload is demanding, and the backlog is only getting longer.
This situation creates a high-pressure environment where tasks that deliver immediate value to stakeholders are considered top priority and given the most attention. Tasks that do not provide immediate value are given a lower priority. Unfortunately, it is all too common for developing automation tools and frameworks to fall into the low-priority basket, so your team continues to do things manually. If some of this sounds familiar, you are not alone.
Redirecting focus to developing automation is not always a straightforward matter. Hopefully, you will receive strong support from your team and maybe positive reinforcement from management. However, you may hit some heavy resistance when it comes to prioritization—and for good reason. Your team has stakeholders to deliver to, and your primary mandate is to ensure they get what they need on time.
As an operations team, you likely have dependencies on other teams and suppliers. One delay up the chain will have a domino effect further down, thus delaying your deliveries. For teams working scrum, it is not uncommon for stories and subtasks that were not completed by the end of the sprint to spill over into future sprints. This increases the pressure on your team, delaying future projects and pushing back the tasks that are primarily focused on improving your environment. Such a situation can leave a team feeling as though they have lost control, and they may feel frustrated as little attention is given to long-term solutions. Again, this is a common situation for many operations teams.
[ A free guide from Red Hat: 5 steps to automate your business. ]
How to get started with automation
So, what can you do about it? You should, of course, begin by raising the topic with your team, product owner, or project manager, and, if necessary, your manager. Providing examples of how much time and effort will be saved by investing resources into developing automation is one good way to get management's attention. You can begin by drafting a proposal that outlines how long tasks take the team now, how much time you think it will take to automate these functions, and how much time tasks will take after automation.
You can also start allocating some extra time for those tasks that can be automated. Begin with the smaller jobs, such as streamlining the process of adding items to your configuration management database (CMDB). A good CMDB will have an API, so creating a shell or Python script to take advantage of that API is an integral part of the automated workflow for deploying and managing servers. Once you have the API figured out and a script that interfaces with it, you could take it one step further and build a library that other scripts can use. A library will standardize the way your team interacts with the API. It will also prevent duplicate development effort since all future scripts can use this library whenever they need to access the API. It may be a little bit more work upfront, but it will save time and effort in future development of scripts and tools.
Armed with a library with standardized access to the CMDB API and a script that can pull asset information, you can begin automating parts of your server deployment process. If you already use preboot execution environment (PXE) and kickstart files as part of your deployment procedure, why not automate most of the work? You could achieve this through scripts written in a language of your choice or by using Ansible playbooks. By employing some of Ansible's built-in modules, such as the template module, you can easily generate PXE boot files and kickstart files with data pulled from the CMDB. Ansible also has modules available for connecting to various manufacturers' out-of-band management interfaces, so tasks like setting out-of-band hostnames, IP addresses, and power management are straightforward.
You can, of course, achieve the same result through other tools, custom scripts, and various open source and proprietary software solutions. There's more than one way to approach the challenge. The same is certainly true for server deployment. Use the skills and tools at your disposal to streamline processes and reduce time spent on repetitive tasks.
With a few of the smaller tasks now automated, you should start to see some positive effects. For one, you and your team no longer need to click through that clunky CMDB interface to input and retrieve information. In addition, part of your server deployment process is now automated. Finally, there is another big benefit of automation—a reduction in issues due to human error. It is well known in the IT industry that human error is a frequent cause of various system failures, outages, and security breaches. Automating even the most simple tasks, especially the mundane ones, will help alleviate this.
[ Looking for more on system automation? Get started with The Automated Enterprise, a free book from Red Hat. ]
Taking back control of your environment
As more of your team starts to get involved in the development of automation tools, you will find that the ecosystem of tools grows organically. This growth will raise other challenges, such as code quality, maintainability, and responsibility. It is important to establish guidelines early on to ensure certain criteria are met and ways of working are followed. You can achieve part of this by using a version control system and tools such as Git and Gerrit to track changes and support code collaboration within your team.
Once you have put together a healthy toolset to take care of the repetitive tasks, you will find that your team defaults to using automation. One of the first questions they will ask when planning something new will be, "Can we automate this?" The more automation you implement, the more likely you are to change the status quo and take back control of your environment. Developing tools that automate and streamline mundane tasks will not only improve delivery time to stakeholders and reduce human error, but it will also allow you and your team more time to focus on working on the future of your environment.
[ Download now: A system administrator's guide to IT automation.]