Until now, we have worked with single virtual machines, deploying and configuring them manually. This is nice for labs and very small environments. But if you have to manage bigger environments, this is a very time-consuming and even a boring job. And it's too easy to make mistakes and forget things, such as the slight differences between virtual machines and so on. Not to mention stability and security risks because of that.
It's time to automate deployment and configuration management using scripts. But after a while, you will notice some problems with that approach. There are so many reasons why. To name a few:
- The script fails because something changed, caused by, for instance, a software update
- There is a newer version of a base image that is slightly different
- The scripts can be hard to read and difficult to maintain...