We hear lot about the automation now a days. Should we automate anything and everything? Yes, most of it. However, we must understand why do we need to bring automation. As far as I understand, we need to automate if it relates to below mentioned points at least.
- Is it a repeated task?
- Does it save time during deployment (like saving down time)
- Does it avoid human error?
- Does it bring standardization in repeated tasks?
I have seen engineers trying to codify everything which might waste hours of time or days, but it could have done in few minutes vs hours vs days. I have done such things in the past, but it is for learning though.
Since I work mostly on Azure, I could relate some of these tasks with Azure deployments.
Repeated Tasks: I recommend creating ARM templates for creating VMs as it would help us automating repeated tasks throughout the deployments. Because we deploy 100s of Virtual Machines (VM) with many extensions. But I do not prefer to create a ARM templates for provisioning a Virtual Network (vNET) because it is just few minutes task with portal or powershell and it might take some time get the ARM sorted out create vNETs and required subnets.
Saving time during deployment: Even if it is one-time task, it might be worth to automate if it would save few hours during deployment which requires downtime. It makes sense to spend couple of days to save few hours of downtime because downtime of production environment is a costly affairs.
Avoid Human Errors: It make sense to use code to avoid human errors by restricted allowed values to be used when provisioning it. Example: Selecting only specific subscriptions or vNETs while deploying VMs in a region.
Standardizing repeated tasks: If you want to bring standardization across the deployment, you could codify that. It would ensure that regardless of who does, every deployment will bring standards across the deployments. Example, number extentions, tags, ASGs etc to be used with VM deployments.
Any others use case? There could be other use cases I missed to explain but we need to consider that case by case and ensure that coding efforts are justified.
In short, we need to evaluate automation efforts versus it’s benefits before we jump in for coding. So I suggest you to checks the facts I mentioned or any other compelling factor to do so. If you do not see any or more cases mentioned above, then let’s not try to do the coding for that. We cannot do automation just for ‘Automating it’