Imagine that you have two machines.
Let's say we wanted to turn this freshly installed Ubuntu machine into a web server, for example, we are running Apache hosting a website, a rails app stack along with all its dependencies, or something similar.
How would we go about doing that? Well, we could do this manually connect to that machine using ssh at its IP address
10.0.0.113, and running the commands to install your application stack, editing the configuration files by hand, and finally copying over our application code. Once you are all done, you disconnect, and the machine is configured.
This common practice is pretty manual work. You may have all the steps documented very clearly for this machine, however, repeat the same on other machines is intense manual work given each machine is somewhat unique like a little snowflake depending on who installed it. The manual work gets compounded very quick if you have more people involved and are needing to configure a large number of machines out in the cloud.
It is a royal pain when one of the machines dies because we are not really sure how it was created, or how we go about recreating it quickly. Yes, it remains a royal pain even if you have meticulously documented every step along the way.
Documented steps need to repeat manually. Documentation does not run like code. Someone has got to manually execute the steps described in the documentation. Manually doing this means lost time constantly installing packages, dependencies, checking to see if it works, installing more packages, and tweaking things manually until the service is restored.
It turns into this vicious cycle, and we are recreating the exact scenario that caused this mess in the first place.
Let's find out how tools like Ansible change all this for a whole lot better. Shall we?
Cloud Genius® is a highly rated advanced technical education provider licensed by the State of Washington, USA.