Dans l'administration système de nouveaux outils de depoiement ont fait leur apparition il y a quelques années.
En opensource bien sûr et qui sont très efficaces pour gérer les changements massifs sur les datacenters mais pas seulement.
Indispensable dans le cloud, ils s'avèrent aussi utilises au quotidien car il savent faire abstraction de l'OS.
Le plus célèbre des outils est puppet (qui a recu un investissement de 30M$ de vmware .... quand on parle de cloud ...).
Puppet est à la fois simple et complexe, le but de ce billet n'est pas de rentrer dans le détail mais de décrire une utilisation pratique pour moi qui teste pas mal de choses.

Je cherchais à faire un script qui installait des packages en faisant abstraction du package manager (yum, apt-get ...), c'est en fait rapidement devenu une usine à gas.
Interessé par puppet, j'ai remarqué que cela fonctionne aussi sans serveur central.
Exactement ce qu'il me faut, je fait donc des profils pour installer les packages que j'utilise sur chaque nouvelle distro que je teste.
Si puppet est dispo, il suffit de faire un fichier de profile :
[root@Rosa64 puppet]# cat utils.pp 
package { "ncftp":
  ensure => installed,
}
package { "fsarchiver":
  ensure => installed,
}
puis de lancer :
[root@Rosa64 puppet]# puppet apply utils.pp 
notice: /Stage[main]//Package[ncftp]/ensure: created
notice: /Stage[main]//Package[fsarchiver]/ensure: created
notice: Finished catalog run in 8.04 seconds

Puppet a bien installé mes packages sans que j'ai besoin de connaitre les commandes systemes (dans mon exemple Rosa/Mandriva).
Il ne me reste plus qu'à aller plus loin en faisant des groupement de package, creation de utilisateurs, gestion sudo ....

Evidement puppet peut aller beaucoup plus loin pour gérer différents type de profil, version de package, versionning de fichier de conf, template de deployement.
Ca se complique alors sérieusement, pour aller plus loin :
Une bonne intro en francais.
Plein de truc aussi en francais qui sentent le vécu.

Il peut s'associer avec des outils tels que foreman (industrialisation complete du cycle de vie des serveurs), vagrant (creation d'usine de virtualbox), capistrano (deploiement) et aussi l'inévitable git pour le versioning.
A noter que la plupart de ces outils tournent en Ruby, le language encore plus hype que python.