I recently attended the Ansible Automates event in London. I didn’t know what to expect from the day or my expectations. I expected there to be a sales pitch for one of the suites of Red Hat products. Ansible Tower was mentioned in almost every presentation and a live demo at the end.
However, it was not your usual this is what we are trying to sell a product event. The content was much more than that. The day was all about how not only how Ansible can automate your job, your team, your products, your enterprise and the entire world if you pushed it hard enough. It was about understanding the idea of automation and how you can leverage it to make life easier.
There were three ideals set out from the start.
- Complexity kills productivity
- Optomise for readbility
- Think declaratively
Which when said simply to; make it simple, readable and reusable.
I agree with all of these. I tend to try and keep things as simple as possible, knowing that this will not always be the case. I try and make things as readable as I possibly can. Mainly so when I come back to it and try to figure out what I was thinking when I come back to it. More recently I have been thinking about the reuse of the scripts I have been writing. Terraform and Ansible both allow you to do this when creating environments etc. you just have to remind yourself that variables are your friends.
Organisations have to start thinking more like this as lots of systems have now moved from a cupboard with a few servers in that you can point at and say “that’s my web server and that’s the database”. Too having multiple virtual servers running on those same boxes and extending out to the cloud and further virtualisation with containerisation.
This new IT landscape has enabled organisations to be flexible and grow but the downside is the complexity of IT services and the multitude and variation of IT setups. The consequence of this is that managing the IT landscape can become a whole issue in itself. With developers, testers, security, networking and administration to name a few all needing to work together and separately.
This is where automation can help with this.
Existing ways of working which are still happening today do not help an organisation move forward with the flexibility required.
The classic scenario is where a developer finishes their code and passes it to testers who then run their tests, scripted or manual. They then pass the release to a sysadmin to deploy but that sysadmin has to check with networks if the IP range he is using is correct. Automation enables everything to be put in place so the passing is automatic. All this delays the actual release of the product or service the organisation is trying to provide.
Now imagine a scenario where a developer finishes their code and runs the tests that the testers would. Once that is complete the code is then automatically pushed to an infrastructure build pipeline where it is made available for further scrutiny. Even this small automation enables the team to save time by allowing the automation pipeline to complete the tasks the team would normally perform.
You can even further this example ensuring the infrastructure build will have had security, networks and others approval so the deployment becomes automatic with pre-approved authority. This further frees up time
This will worry people and is a large change to how people operate as they are worried about control of their work, etc. However, this is not the case. What automation means is that it frees your time to do the more fun stuff.
Automation is supposed to be boring as it gets rid of all the normal and mundane tasks, so you are free to do the more interesting stuff.