Eina: puppet
puppet és un entorn per a l'automatització de les tasques d'administració de sistemes. Està format per tres entorns:
- Un llenguatge de programació declaratiu per a expressar les configuracions de sistemes.
- Un entorn client/servidor per a la distribució
- Una biblioteca per a la realització de les configuracions
La filosofia de puppet és oferir un llenguatge de programació que permet definir les relacions existents entre els servidors, els serveis oferts i els objectes que formen aquests serveis. Al contrari d'altres plantejaments d'administració, on es detalla com obtenir una configuració determinada per a facilitar un servei, amb Puppet els usuaris indiquen la configuració que volen obtenir, amb un nivell d'abstracció, i és la responsabilitat de Puppet realitzar les tasques necessàries per obtenir la configuració o bé indicar a l'usuari la informació necessària per a la solució dels problemes detectats.
For instance, take a typical Apache web server deployment. Puppet allows one to encapsulate all of the primitives necessary for successful deployment into one reusable object, and that object can even be abstracted to support multiple apache versions. Here's how a simple apache definition might look for a Debian server (Debian uses apache for 1.x versions and apache2 for 2.x versions):
define apache(version, conf, user, group) { # abstract across apache1 and apache2 $name = $version ? { 1 => "apache", 2 => "apache2", } package{ $name: install => true, } file { "$conf": user => "$user", group => "$group", source => "$conf", } # we want the service to restart if the config file changes # or if the package gets upgraded service { "$name": running => true, requires => [file["$conf"], package["$name"]], } }Now, with this configuration, one can easily set multiple servers up to run different versions of apache. The key benefit here is that the information necessary to run apache correctly is separated from the decision to do so on a given host. For example:
# import our apache definition file import "apache" node server1 { # use a locally-available config file apache { version => 1, conf => "/nfs/configs/apache/server1.conf", user => "www-data", group => "www-data", } } node server2 { # use a config that we pull from elsewhere apache { version => 2, conf => "http://configserver/configs/server2/httpd.conf" user => "www-data", group => "www-data", } }Notice that our node configuration only specifies 1) that a given server is running Apache, and 2) the information necessary to differentiate this instance of apache from another instance. If a given detail is going to be the same for all apache instances (such as the fact that the service should be running and that it should be restarted if the configuration file changes), then that detail does not have to be specified every time an Apache instance is configured.
puppet dóna suport a sistemes POSIX (Linux, OpenBSD, Solaris…). Hi ha una pàgina amb totes les versions a les que es dóna suport.




Revista 

