Imagine you want to install php in about 200 system, or perform an update of php in these systems !! What if we need to roll-back to a previous version of php in there systems !! The time is takes, and the chances of human errors are lots. What if the production environment and the testing environment was configured individually and the code developed by developers does not work in testing environment!!
What is Configuration Management?
Is is a practice of handling changes made to configuration of a system systematially. It keeps a historical record of state of systems properly.
Infrastructure as Code (IAC)
This concept is used to achieve outcome of CM. Here code to build infrastructure is written and stored in a central location. This code is used in other environments such as Development, Testing, Production, etc.
Two types of configuration environment:
- Push Configuration : Here the centralized systems that holds IAC pushes the configuration to all systems. Ansible and Saltstack works in this environment.
- Pull Configuration : Here all systems contacts the centralized server that holds IAC and pulls the configuration. Puppet and Chef works in this environment.