4

シナリオは、運用サーバーがプライベート サブネットにあり、その前に NAT インスタンスがあり、SSH を介してメンテナンスできるようになっています。現在、SSH 経由で NAT インスタンスに接続し、そこから SSH 経由でそれぞれのサーバーに接続しています。

私がやりたいことは、コードベースを NAT インスタンスにアップロードせずに、NAT をプロキシとして使用して自分のマシンから展開タスクを実行することです。これは Fabric で可能ですか?それとも、苦痛の世界に行き着くだけでしょうか?

EDIT @Morganが示唆したように、これをフォローアップするために、ゲートウェイオプションは実際にこの問題を修正します。

少し完全を期すために、私のfabfile.pyで:

def setup_connections():
    """
    This should be called as the first task in all calls in order to setup the correct connections
    e.g. fab setup_connections task1 task2...
    """
    env.roledefs = {}

    env.gateway = 'ec2-user@X.X.X.X' # where all the magic happens

    tag_mgr = EC2TagManager(...)

    for role in ['web', 'worker']:
        env.roledefs[role] = ['ubuntu@%s' % ins for ins in
                              tag_mgr.get_instances(instance_attr='private_ip_address', role=role)]


    env.key_filename = '/path/to/server.pem'

@roles('web')
def test_uname_web():
    run('uname -a')

実行fab setup_connections test_uname_webできるようになり、Web サーバーの uname を取得できるようになりました

4

1 に答える 1

1

したがって、Fabric の新しいバージョン (1.5+) を使用している場合は、ゲートウェイ オプションを使用してみてください。私はそれを自分で使用したことはありませんが、あなたが望むもののようです。

ドキュメントはこちら:

また、何か問題が発生した場合、私たち全員が irc でアイドル状態になる傾向があります。

于 2014-01-14T04:04:25.740 に答える