2016-11-03 7 views
0

Я хочу создать задачу развертывания с файлом ткани. У нас есть несколько раз только данные ftp или данные ssh.Напишите файл ткани для rsync с ключом ssh

Этот код работает

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

Но с этим кодом каждый пользователь должен иметь один и тот же конфигурационный файл SSH. Поэтому мне нужны данные в проекте. В этот момент я не знаю лучшей практики, но если бы я написал руководство, данные в коде я получаю ошибки. Что я сделал не так?

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

Вы можете использовать '-F' аргумент' ssh' и указать его во временный файл конфигурации создается (может быть, это корабли с вашим проектом, затем вы копируете его в/tmp/...), который отделен от пользователей. –

ответ

0

Пожалуйста, оставьте свои ошибки, но я думаю, что ваша проблема не вызвана отсутствием использования -e флага. При использовании Rsync по сравнению с использованием 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.