2016-11-03 2 views
0

Je souhaite créer une tâche de déploiement avec un fichier de structure. Nous avons parfois seulement des données ftp ou des données ssh.Ecrivez un fichier de structure pour rsync avec une clé ssh

Ce code fonctionne

def sync_app(): 
local("rsync -rtlv --delete dist/ server:%s" % code_dir) 

Mais avec ce code chaque utilisateur doit avoir le même fichier de configuration ssh. Donc, je veux les données dans le projet. En ce moment, je ne connais pas les meilleures pratiques, mais si j'ai écrit manuellement les données dans le code, je reçois des erreurs. Qu'est-ce que je me suis trompé?

def sync_app(): 
local("rsync -rtlv --delete dist/ 'ssh -i /Users/username/.ssh/id_rsa_dploy -p 9600' [email protected]:%s" % code_dir) 
+0

Vous pouvez utiliser le argument '' -f' pour ssh' et pointer vers un fichier de configuration temporaire vous créez (peut-être il est livré avec votre projet, copiez-le dans/tmp/...) séparé des utilisateurs. –

Répondre

0

S'il vous plaît poster vos erreurs, mais je pense que votre problème est causé par un manque d'utilisation du drapeau -e. Lors de l'utilisation rsync sur l'utilisation ssh -e:

def sync_app(): 
local("rsync -rtlv " 
     "-e 'ssh -i /Users/username/.ssh/id_rsa_dploy -p 9600' " 
     "--delete dist/ [email protected]:%s" % code_dir) 

https://linux.die.net/man/1/rsync:

-e, --rsh=COMMAND 
    This option allows you to choose an alternative remote shell program to use for communication between the local and remote copies of rsync. Typically, rsync is configured to use ssh by default, but you may prefer to use rsh on a local network.