Пароль ткани

Каждый раз, когда выполняется тэг, он запрашивает пароль root, может ли он отправляться вместе с тем для автоматических предложений.

fab staging test

Ответ 1

fab -h покажет вам все варианты, вы также можете прочитать их здесь.

В частности, и цитирую,

-p PASSWORD, --password = PASSWORD

Устанавливает env.password для данной строки; он будет использоваться как значение по умолчанию пароль при подключении SSH или вызов программы sudo.

Ответ 2

Я знаю, что вы спрашивали о пароле, но не лучше ли настроить эту систему, чтобы вы могли делать тканью (т.е. 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.

Ответ 3

Вы также можете установить пароли для каждого узла. Для меня это не было очевидно, поэтому здесь все идет к кому-то, кто ищет:

from fabric import env
env.hosts = ['[email protected]:port1', '[email protected]']
env.passwords = {'[email protected]:port1': 'password1', '[email protected]': 'password2'}

Тканевые кеши использовали пароли в словаре env.passwords. Он устанавливает этот кеш с использованием полной строки хоста в качестве ключа этого словаря и пароля в качестве значения. Если вы установите этот словарь самостоятельно перед выполнением какой-либо задачи, Fabric не будет запрашивать их вообще.

Ответ 4

Просто чтобы добавить для каждого, кто заходит сюда из поиска, вы можете указать опцию -I при запуске fab, чтобы он предлагал вам использовать пароль по умолчанию. Таким образом, это не будет видно в истории команд

Пример:

$ fab -I my_task
Initial value for env.password: 

Ответ 5

Один из способов сделать это, не помещая пароль в список процессов (команды, отображаемые в ps aux), - это поместить его в файл fabfile.py, например:

from fabric.context_managers import env
env.password = 'PASSWORD'

Поместите это перед тем, что идет в удаленную систему, и больше не будет запрашивать пароль.

Ответ 6

Также можно установить пароль ssh в connect_args

    conn = Connection(
    "{username}@{ip}:{port}".format(
        username=username,
        ip=ip,
        port=port,
    ),
    connect_kwargs={"password": password},
)