agileconfiguration-management

Aim of using puppet, chef or ansible


I read many article concerning Configuration Management, but I dont really understand on what this configuration is applied.

Is it on software himself ? Like, changing hosts in conf file etc... ?

Or on the app "host" ? In that case, what is the aim of using this kind of software, knowing that we generally use docker containers "ready to use" ?


Solution

  • You spent hours setting up that server, configuring every variable, installing every package, updating config files. You love that server so much that you named it 'Lucy'. Tomorrow you get run over by a bus. Will your coworkers know every single tiny change you made to that server? Unlikely. They will have to spend hours digging into that server trying to figure out what you've done and why you've done it.

    Now let's multiply this by 100s or even 1000s servers. Doing this manually is unfeasible.

    That's where config management systems come in.

    You might think of a "Golden image" approach where you configure everything, then take a snapshot and keep replicating it over and over. The problem is it's difficult to compare the difference between 2 such images. You just have binary blobs. Where as with most config management systems you can use traditional VCS and easily diff various versions.

    The same principle applies to containers.

    Don't treat your servers as pets, treat them as cattle.