Cet article parle de Fabric1. Depuis Fabric2 est sortie, et a beaucoup changé.
Fabric est franchement un outil vraiment bien branlé pour faire ses déploiements, mais aussi installer ses serveurs.
Par exemple, voici une installation basique:
from fabric.api import * from fabric.colors import * def install(): env.user = 'admin' print(green('=== Installing basics for Nginx/Uwsgi/MariaDB/RabbitMQ ===')) sudo('yum -y -q install epel-release') sudo('yum -y -q install nginx python-pip git mariadb mariadb-server mariadb-devel python-devel ' 'rabbitmq-server librabbitmq-devel librabbitmq-tools') sudo('yum -y -q group install "Development Tools"') sudo('pip install virtualenv virtualenvwrapper uwsgi')
Il suffit par la suite de lancer fabric, mais yum et pip sont très verbeux, malgré l’option -q…
$ fab -H myHost install [....] [myHost] out: Collecting uwsgi [myHost] out: Downloading uwsgi-2.0.11.2.tar.gz (782kB) [myHost] out: [myHost] out: 0% |▏ | 4.1kB 18.0MB/s eta 0:00:01 [myHost] out: 1% |▍ | 8.2kB 15.4MB/s eta 0:00:01 [myHost] out: 1% |▌ | 12kB 15.1MB/s eta 0:00:01 [myHost] out: 2% |▊ | 16kB 11.2MB/s eta 0:00:01 [myHost] out: 2% |▉ | 20kB 11.7MB/s eta 0:00:01 [myHost] out: 3% |█ | 24kB 12.5MB/s eta 0:00:01 [myHost] out: 3% |█▏ | 28kB 13.2MB/s eta 0:00:01 [myHost] out: 4% |█▍ | 32kB 10.5MB/s eta 0:00:01 [myHost] out: 4% |█▌ | 36kB 10.4MB/s eta 0:00:01 [myHost] out: 5% |█▊ | 40kB 10.6MB/s eta 0:00:01 [myHost] out: 5% |█▉ | 45kB 10.4MB/s eta 0:00:01 [myHost] out: 6% |██ | 49kB 9.0MB/s eta 0:00:01 [myHost] out: 6% |██▏ | 53kB 9.0MB/s eta 0:00:01 [myHost] out: 7% |██▍ | 57kB 9.6MB/s eta 0:00:01 [myHost] out: 7% |██▌ | 61kB 9.7MB/s eta 0:00:01 [myHost] out: 8% |██▊ | 65kB 9.1MB/s eta 0:00:01 [myHost] out: 8% |██▉ | 69kB 8.8MB/s eta 0:00:01 [myHost] out: 9% |███ | 73kB 10.3MB/s eta 0:00:01 [myHost] out: 9% |███▏ | 77kB 10.7MB/s eta 0:00:01 [myHost] out: 10% |███▍ | 81kB 9.9MB/s eta 0:00:01 [myHost] out: 10% |███▌ | 86kB 9.6MB/s eta 0:00:01 [myHost] out: 11% |███▊ | 90kB 11.5MB/s eta 0:00:01 [myHost] out: 12% |███▉ | 94kB 11.7MB/s eta 0:00:01 [myHost] out: 12% |████ | 98kB 11.8MB/s eta 0:00:01 [myHost] out: 13% |████▏ | 102kB 11.7MB/s eta 0:00:01 [myHost] out: 13% |████▍ | 106kB 12.6MB/s eta 0:00:01 [...]
Bon là c’est juste un petit extrait de ce que peut nous sortir pip. Alors quand y’a plein de truc à installer …
Heureusement Frabric nous propose une solution pour éviter de perdre la vue avec autant d’infos : fabric.context_managers.hide
Et voici donc comment faire :
from fabric.api import * from fabric.colors import * def install(): env.user = 'admin' with hide('stdout'): print(green('=== Installing basics for Nginx/Uwsgi/MariaDB/RabbitMQ ===')) sudo('yum -y -q install epel-release') sudo('yum -y -q install nginx python-pip git mariadb mariadb-server mariadb-devel python-devel ' 'rabbitmq-server librabbitmq-devel librabbitmq-tools') sudo('yum -y -q group install "Development Tools"') sudo('pip install virtualenv virtualenvwrapper uwsgi')
Et la, c’est quand meme vachement plus agréable !
$ fab -H myHost install [myHost] Executing task 'install' === Installing basics for Nginx/Uwsgi/MariaDB/RabbitMQ === [myHost] sudo: yum -y -q install epel-release [myHost] sudo: yum -y -q install nginx python-pip git mariadb mariadb-server mariadb-devel python-devel rabbitmq-server librabbitmq-devel librabbitmq-tools [myHost] sudo: yum -y -q group install "Development Tools" [myHost] sudo: pip install virtualenv virtualenvwrapper uwsgi === Install New Relic === [myHost] sudo: rpm -Uvh http://download.newrelic.com/pub/newrelic/el5/i386/newrelic-repo-5-3.noarch.rpm [myHost] sudo: yum install newrelic-sysmond -y [myHost] sudo: nrsysmond-config --set license_key=7e6eb966bf31cf82ab4d9fe5cc0b0d772fa6cee8 [myHost] sudo: /etc/init.d/newrelic-sysmond start Done. Disconnecting from myHost... done.
La fonction hide peut prendre plusieurs paramètres. Dans notre exemple il n’y a que les sorties de programme qui sont cachées. Pour savoir tout ce que l’on peut cacher c’est ici
Tchuss 😉