リモートホストで操作を行うために、Fabric、Django、および Celery を一緒に使用しようとしています。
私の場合、リモートホストは動的になります。
Django と Celery の使用は無関係だと思います。質問は次のように絞り込むことができます。
- Fabric を単独で使用しているときに SSH パスワードを動的に提供する方法。
Django と Celery でこれを行う方法を示すこのコードを見つけました。
from fabric.api import hosts
from celery import task
@task()
def remote_celery_task():
username, host = get_host_details()
host_string = "%s@%s" % (username, host)
@hosts(host_string)
def fab_task():
run("ls")
execute(fab_task)
しかし、SSH パスワードを Fabric に動的に渡す方法はわかりません。この方法でパスワードを提供するのはセキュリティ上良くないことは理解していますが、現時点ではセキュリティを犠牲にしても構わないと思っています。
アップデート
コードを次のように変更すると、動作しました
@hosts(host_string)
def my_fab_task():
env.password = testhost.SSH_password # is this the correct way ? its working for me
run("ls")