ファブリックが実行されるたびに、root パスワードが要求されます。自動化された提案のために同じように送信できますか。
fab staging test
パスワードについて質問されたことは知っていますが、パスワードなしでファブリック (つまり SSH) を実行できるようにシステムを構成したほうがよいのではないでしょうか?
このために、ローカル マシンで次の操作を行います。
ssh-keygen
すべてのデフォルトに同意します(理由がない場合はそうしないでください)cat ~/.ssh/id_rsa.pub
そのキーをコピーしますリモート マシン上:
mkdir ~/.ssh && chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys2 && chmod 600 ~/.ssh/authorized_keys2
authorized_keys2
これで、リモート マシンはローカル マシンを「信頼」し、パスワードなしでログインできるようになります。ハンディ。
ホストごとにパスワードを設定することもできます。それは私には明らかではなかったので、これを探している人のためにここに行きます:
from fabric import env
env.hosts = ['user1@host1:port1', 'user2@host2.port2']
env.passwords = {'user1@host1:port1': 'password1', 'user2@host2.port2': 'password2'}
ファブリックは、使用されたパスワードをenv.passwordsディクショナリにキャッシュします。その辞書のキーとして完全なホスト文字列を使用し、値としてパスワードを使用して、このキャッシュを設定します。タスクを実行する前にこの辞書を自分で設定した場合、Fabricはそれらをまったく要求しません。
fab -h
すべてのオプションが表示されます。ここで読むこともできます。
特に、私は引用します、
-p PASSWORD, --password=PASSWORD
env.password を指定された文字列に設定します。これは、SSH 接続を確立するとき、または sudo プログラムを呼び出すときに、デフォルトのパスワードとして使用されます。
検索からここにたどり着いた人のために付け加えて-I
おくと、 fab を実行するときに、使用するデフォルトのパスワードを求めるプロンプトを表示するオプションを指定できます。これにより、コマンド履歴に表示されなくなります
例:
$ fab -I my_task
Initial value for env.password:
sshパスワードを設定することも可能ですconnect_args
conn = Connection(
"{username}@{ip}:{port}".format(
username=username,
ip=ip,
port=port,
),
connect_kwargs={"password": password},
)
プロセスリストにパスワードを入れずにこれを行う1つの方法(コマンドはps auxに表示されます)は、次のようにfabfile.pyにパスワードを入れることです。
from fabric.context_managers import env
env.password = 'PASSWORD'
リモートシステムに送信されるものの前にそれを置くと、パスワードを要求されなくなります。