3

私はファブファイルを持っています:

env.user = 'deploy'

def infra():
    """You need to use a user that can root itself, deploy cannot without a
    password."""
    put('conf.d/etc/nginx/sites-available/www.foo.hk',
         '/etc/nginx/sites-available/www.foo.hk', use_sudo=True)
     sudo('nginx -s reload',)

私はのように実行しfab infra -Rserversます。

--user=root or -u rootそのため、実行時にユーザーをオーバーライドできると思いましfab infra --user=rootたが、それでもパスワードを求められます。ただし、変更しても変更env.userenv.user = 'root'れません。次のような設定コンテキスト マネージャーを使用することもできます。

def infra(user):
    """You need to use a user that can root itself, deploy cannot without a
    password."""
    with settings(user=user):
        put('conf.d/etc/nginx/sites-available/www.foo.hk',
             '/etc/nginx/sites-available/www.foo.hk', use_sudo=True)
        sudo('nginx -s reload',)

私がするとき、それはうまくいきますfab infra:root -Rservers。明らかに、設定をオーバーライドすることは可能ですが、通常のコマンド ライン フラグからはできないようです。私は何か間違ったことをしていますか?

4

3 に答える 3

1

私が望むように、コマンドラインからデフォルト設定を上書きすることは現在不可能です。https://github.com/fabric/fabric/issues/680でもチケットがあり、修正されるようです。

于 2012-08-03T03:49:18.443 に答える
0

私はあなたが探していると思います:

fab infra:hosts=root@somehost

同じusername@...パターンがロールまたはロール定義で機能するかどうかは不明です。

http://docs.fabfile.org/en/1.2.0/usage/execution.html

于 2012-08-02T19:51:03.050 に答える
0

この のチケットを開いています。ここで示したように、そこに例を示しました。私の推測では、明示的なハードコーディングであるため、事前にファイルに env.user を設定することはできません。

于 2012-07-13T14:03:20.300 に答える