1

プロキシ サーバーにファブリックを使用してアプリケーションをデプロイしたいと考えています。通常、プロキシ サーバーに ssh してから運用サーバーに ssh しますが、ファブリックではこれを直接許可していないようです。

セットアップの例は、ローカル --> サーバー A (プロキシ) --> サーバー B (アプリケーション サーバー) です。

宛先はサーバー B です。

以下のfabファイルを使ってテストしてみました。

import os.path
from fabric.api import env, run, sudo, cd, local, put, settings
from fabric.contrib.files import sed, exists
from datetime import datetime

def proxy():
    env.user = "root"
    env.hosts = ['proxy']
    env.key_filename = "/home/root/monitorserver.pem"

def production():
    """Defines production environment ."""
    env.is_debuggable = False
    env.user = "root"
    env.hosts = ['appserver']
    env.key_filename = "/home/root/appserver.pem"

def createfile():
    """Start Excecute test commands"""
    sudo("touch /tmp/test_%s" % datetime.now().strftime('%H:%M:%S'))

しかし、コマンドを実行しています

fab proxy createfile production createfile

としてのみ機能するようです

fab proxy createfile
fab production createfile

ファブリックをローカルで実行し、プロキシを配置してサーバー B にデプロイする方法はありますか?

4

1 に答える 1

1

これは、ローカルに 1 つ、プロキシ サーバーに 1 つの 2 つの fabfile を作成することで実行できると思います。

from fabric.api import env, run, sudo, cd
from datetime import datetime

def proxy():
    env.user = "root"
    env.hosts = ['proxy']
    env.key_filename = "/home/root/monitorserver.pem"
    with cd('/home/root/'):
        createfile()
        run("fab production")

def production():
    """Defines production environment ."""
    env.is_debuggable = False
    env.user = "root"
    env.hosts = ['appserver']
    env.key_filename = "/home/root/appserver.pem"
    createfile()

def createfile():
    """Start Excecute test commands"""
    sudo("touch /tmp/test_%s" % datetime.now().strftime('%H:%M:%S'))

実行しますfab proxy

(コードをテストしていませんが、このようなものは動作するはずです。)

于 2014-01-29T08:32:31.767 に答える