A. env.host
を使うと良い。
hostによって配るcrontabが違っていて、レポジトリ的には ${HOSTNAME}.crontab
みたいな感じでhost名を含むファイル名で置いてあるときに、どうしたらうまく配れるかなと考えた結果 env.host
で実行中のhost名が取れるのでそいつを利用した。
from fabric.api import sudo, env from fabric.decorators import task @task def some_task(project): src = "/opt/%s/config/crontab/%s.crontab" % (project, env.host) dst = "/etc/cron.d/%s" % project sudo("if [ -e $src ];then cp %s %s; fi" % (src, dst))