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, а затем снова подтвердите. Вы также можете иметь более одного ключа. Некоторые с паролями, некоторые без.