Conseils d'écriture sur tissu
Je veux courir localement
fabfile.py
from fabric.api import local
def test:
local("ls")
Ligne de commande
$ fab test
Je veux l'exécuter pendant la connexion à un serveur distant quelque part
fabfile.py
from fabric.api import run
def test:
run("ls")
Ligne de commande
$ fab -i ${key} -u ${user} -H ${host} test
Je veux passer une variable d'environnement de la commande d'exécution et l'exécuter
fabfile.py
from fabric.api import local
def test(value="hello"):
local('echo %s' % value)
Ligne de commande
$ fab test
# hello
$ fab test:value=ok
# ok
Je veux l'exécuter dans l'état cd
fabfile.py
from fabric.api import cd, lcd, run
def test(value="hello"):
#Pour les locaux
with lcd("/var/tmp/"):
local("pwd")
#Pour la télécommande
with cd("/var/www/"):
run("pwd")
Ligne de commande
$ fab -i ${key} -u ${user} -H ${host} test
# /var/tmp/
# /var/www/
Je veux transférer un fichier
fabfile.py
from fabric.api import cd, put, run
def test():
#Transfert SFTP
put("~/local.txt", "/tmp/remote.txt")
#Vérification
with cd("/tmp"):
run("ls")
Ligne de commande
$ fab -i ${key} -u ${user} -H ${host} test
# remote.txt
Je veux le mettre en veille au milieu du traitement
fabfile.py
import time
from fabric.api import local
def test():
#Processus 1
local('echo A')
#Attendez 30 secondes
time.sleep(30)
#Processus 2
local('echo B')
Je veux exécuter en parallèle
Motif 1 (ajoutez @ parallel
au code)
fabfile.py
from fabric.api import parallel
@parallel
def test():
#En traitement
Ligne de commande
$ fab -H "host1,host2,host3" test
Motif 2 (exécuter avec l'option -P)
Ligne de commande
$ fab -P -H "host1,host2,host3" test