SSH ключевая фраза с помощью git pull с использованием Fabric

Я пытаюсь автоматизировать развертывание приложения с использованием структуры.

Код приложения размещен на GitHub, и развертывание новой версии очень просто - просто сделайте 'git pull' и это. Приложение размещено на 100 серверах, поэтому я хотел бы автоматизировать развертывание. Fabfile.py:

def deploy():
  code_path = '/home/myuser/myapp'
  with cd(code_path):
    run('git pull')
    run('git submodule update --init --recursive')

Проблема заключается в том, что для каждой команды git я получаю promt: Enter passphrase for key '/home/myuser/.ssh/id_rsa:

Есть ли способ автоматически вводить кодовую фразу? Это то же самое на каждом сервере и то же, что и пароль sudo

Я пробовал библиотеку fexpect, но мне интересно, есть ли лучший (то есть стандартный) способ сделать это.

Ответы

Ответ 1

Вы также можете использовать агент ssh key key и использовать перенаправление агента. Всегда вводите пароль на клавиши. Github имеет хорошие документы о том, как использовать этот здесь.

Ткань теперь должна также иметь способность пересылки агента. Я столкнулся с проблемами с ним в некоторых случаях, но обошел их с явным локальным ('ssh -A...) как работа, пока проблема не будет решена.

Ответ 2

Хотя я считаю, что перенаправление ssh-aget, описанное в принятом ответе, является предпочтительным решением (если вы его сработали), но есть альтернатива ему, предоставляемая самой Fabric:
Ткань имеет собственный параметр "пароль" (т.е. env.password запись). вы можете сделать тканью для автоматического ввода парольной фразы (и sudo passwod), если вы установите env.password ( посмотреть документацию):

пароль

По умолчанию: None

Пароль по умолчанию, используемый уровнем SSH при подключении к удаленному хостов и/или при ответе на запросы sudo.

 

Вы можете установить для него пароль либо из следующих параметров:

  • используя env.password = 'PASSWORD' непосредственно в коде внутри "fabfile.py",
  • в командной строке в качестве опции команды fab, используя -p PASSWORD или --password=PASSWORD (документация).
  • В качестве другого варианта вы можете поместить строку passwod=PASSWORD в ~/.fabricrc (документация), которая загружается перед каждой командой fab и при использовании этой опции не требуется ни параметр командной строки, ни смена кода.

Ответ 3

Не используйте пароли при создании ключа. Просто нажмите enter, а затем снова подтвердите. Вы также можете иметь более одного ключа. Некоторые с паролями, некоторые без.