[PYTHON] 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