au-to-ma-gic

Tags: , ,
Add comments

Au boulot, j’ai élu une solution de déploiement à haute teneur en convivialité qui m’a été suggérée par nico, j’ai nommé fabric.

Ce soft à l’utilisation simplissime permet en un tournemain de réaliser des opérations complexes en masse sur une architecture distante en utilisant le protocole SSH.

Si la documentation de la plupart des fonctions est clarissime, l’une d’entre elles, qui pourtant me semblait avoir un fort potentiel loutresque, n’était pas très clairement exposée: upload_template.
Cette fonction, comme son nom semble l’indiquer, permet d’envoyer sur un serveur distant un fichier “template” en ayant préalablement remplacé des variables par le contenu souhaité. Après un peu de lecture du code source de fabric, la subtilité de son utilisation m’est apparue.

Voici à quoi doit ressembler un fichier template, j’utilise ici l’exemple classique d’un /etc/network/interfaces à remplir avec les valeurs adéquates :

auto lo
iface lo inet loopback

auto %(iface)s
iface %(iface)s inet static
	address %(ipaddress)s
	netmask %(netmask)s
	gateway %(gateway)s

Ces variables utilisent les string interpolation formatting de python, que l’on renseigne à l’aide d’un dict de cette façon :

netinfo  = {
                'iface': 'eth0',
                'ipaddress': '10.20.30.40',
                'netmask': '255.255.255.0',
                'gateway': '10.20.30.254'
}

Et que l’on inclut finalement dans la fameuse fonction upload_template de cette façon :

        upload_template('etc/network/interfaces', '/etc/network/interfaces', context=netinfo, use_sudo=True)

Moyennant quoi, fabric enverra le fichier template sur sa destination puis remplacera les variables par leur valeurs définies dans le dict passé en paramètre.

Sysop, ne révèle pas à tes employeurs que tu construis aujourd’hui ta glande de demain.

4 Responses to “au-to-ma-gic”

  1. Deimosfr Says:

    Salut !

    Pas mal ton truc. Ca ressemble fortement à Puppet dans l’idée. Un petit avis par rapport à celui ci ?

    Merci

  2. iMil Says:

    Effectivement, il y a un goût de puppet dans l’idée, mais en réalité les deux outils sont relativement differents.

    J’ai également évalué puppet dans ce contexte, mais il ne s’appliquait pas exactement à mon environnement. En effet, j’ai besoin de _déployer_ des architectures qui, si elles sont à première vue similaires, varient dans le nombre de serveurs, leur rôles, leur filesystem, et surtout les besoins des clients hébergés. Ainsi, avec puppet, j’aurais eu autant de templates que de clients.

    J’insiste sur le fait qu’il s’agit d’un environnement d’_hébergement_, ce ne sont pas des machines forcemment similaires, et chacune est soumise à des opérations très particulières.

  3. benoit Says:

    Dans l’idée je le rajouterai bien dans fabulator !

  4. ze Says:

    Petite correction :

    Sysop, ne révèle pas à tes employeurs que tu construis^Wfabric aujourd’hui ta glande de demain.

Leave a Reply

WP Theme & Icons based on GlossyBlue by N.Design Studio
Banner from www.trynthlas.com
Entries RSS Comments RSS Log in