Каждый раз, когда выполняется тэг, он запрашивает пароль root, может ли он отправляться вместе с тем для автоматических предложений.
fab staging test
Каждый раз, когда выполняется тэг, он запрашивает пароль root, может ли он отправляться вместе с тем для автоматических предложений.
fab staging test
fab -h
покажет вам все варианты, вы также можете прочитать их здесь.
В частности, и цитирую,
-p PASSWORD, --password = PASSWORD
Устанавливает env.password для данной строки; он будет использоваться как значение по умолчанию пароль при подключении SSH или вызов программы sudo.
Я знаю, что вы спрашивали о пароле, но не лучше ли настроить эту систему, чтобы вы могли делать тканью (т.е. SSH) без пароля?
Для этого на локальном компьютере выполните:
ssh-keygen
и соглашайтесь со всеми значениями по умолчанию (если у вас нет причин делать это иначе)cat ~/.ssh/id_rsa.pub
и скопируйте этот ключНа удаленном компьютере:
mkdir ~/.ssh && chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys2 && chmod 600 ~/.ssh/authorized_keys2
authorized_keys2
Теперь ваш удаленный компьютер "доверяет" вашему локальному компьютеру и позволяет регистрировать его без пароля. Handy.
Вы также можете установить пароли для каждого узла. Для меня это не было очевидно, поэтому здесь все идет к кому-то, кто ищет:
from fabric import env
env.hosts = ['[email protected]:port1', '[email protected]']
env.passwords = {'[email protected]:port1': 'password1', '[email protected]': 'password2'}
Тканевые кеши использовали пароли в словаре env.passwords. Он устанавливает этот кеш с использованием полной строки хоста в качестве ключа этого словаря и пароля в качестве значения. Если вы установите этот словарь самостоятельно перед выполнением какой-либо задачи, Fabric не будет запрашивать их вообще.
Просто чтобы добавить для каждого, кто заходит сюда из поиска, вы можете указать опцию -I
при запуске fab, чтобы он предлагал вам использовать пароль по умолчанию. Таким образом, это не будет видно в истории команд
Пример:
$ fab -I my_task
Initial value for env.password:
Один из способов сделать это, не помещая пароль в список процессов (команды, отображаемые в ps aux), - это поместить его в файл fabfile.py, например:
from fabric.context_managers import env
env.password = 'PASSWORD'
Поместите это перед тем, что идет в удаленную систему, и больше не будет запрашивать пароль.
Также можно установить пароль ssh в connect_args
conn = Connection(
"{username}@{ip}:{port}".format(
username=username,
ip=ip,
port=port,
),
connect_kwargs={"password": password},
)