fab-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Fab-user] Moving to Fab ?


From: Nicolas Steinmetz
Subject: [Fab-user] Moving to Fab ?
Date: Wed, 5 Nov 2008 18:33:44 +0100

Hello,

I'm currently testing Fab in order to evaluate it to see if it can replace a home made perl script that my firm use for deployment but that I cannot maintain or improve due to my lack of perl skills.

It has following features
- Handle environnement server (one file per environnement)
- For a given environnement, I can set "tags", like "front" for front server and "db" for db servers. For each tag, I can set one or more servers.

Example for my ezpupdate/etc/prod file :
tags: front db
front: www1 www2 www3
db: sql1

In a given archive for a deployment, I have the following structure :

files/
files/front
files/db
changes/
changes/front
changes/db
commands.upd

-> files is used for files to be sent. Then "front" and "db" are the tags that match the tags defined above.

For ex, if I want to update a new httpd.conf, my.cnf, and index.php files, I will have :
files/front/etc/httpd/httpd.conf
files/front/var/www/project/index.php
files/db/etc/my.cnf

-> changes are to be considered as a kind of patch. Accoding to some pattern, I'm able to add/change/modifiy/withdraw a line in a given file. Just think it as sed . Same principe for front/tag tags.

-> commands.upd is a file which gather some commandes to run, once files and changes have been applied. It can run local and remote commands and it can even run a commande once for a given tag.

For ex, if I want to update the crontab of the first server in the list and not all of them :
remote front once cd /var/www/projet && update_crontab.sh

Process of deployment is the following one :
I run : myscript -target=<envt> -source=<archive>

then it does the following :
- create a log file
- unpack archive in /tmp on my local computer (from which I deploy the package on my remote servers)
- send files on relevant servers according to tag
- apply changes with some ssh $srv "sed like command"
- execute remote / local commandes in commands.upd
- end log file

In parallel, I started trying to implement fab on my own but I'd like to have your feedback on my current tool vs fab (0.0.9). My first thought is that Fab is based on the opposite principe (or maybe I'm wrong due the examples I saw), that is to say  to send archives on the remote server and then to execute remote scripts. Whereas in my case, I'm more on the principle : I handle locally files, send them to remote computers and execute script from deployment server (not sure I'm clear).

Thanks for reading me, I hope I'm clear enough and looking forward reading your feedback on this.

Nicolas

reply via email to

[Prev in Thread] Current Thread [Next in Thread]