2014-01-28 100 views
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?

回答

1

我認爲這可以通過創建2個fabfiles來完成:1在本地,1在代理服務器上。

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

(沒有測試的代碼,但這樣的事情應該工作。)

+0

感謝@Pratyush我終於實現了這一點。 – Bwire

相關問題