Fabric развертывание приложения на прокси-сервере

Я хотел бы развернуть приложение, используя ткань, на прокси-сервере. Обычно мы подключаемся по ssh к прокси-серверу, а затем к производственному серверу по ssh, однако ткань, похоже, не позволяет это делать напрямую.

Примером настройки может быть локальный --> сервер A (прокси) --> сервер B (сервер приложений).

Пункт назначения — сервер B.

Я попытался использовать потрясающий файл ниже для тестирования.

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 с установленным прокси?


person Bwire    schedule 28.01.2014    source источник


Ответы (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.

(Код не тестировал, но что-то вроде этого должно работать.)

person Pratyush    schedule 29.01.2014
comment
Спасибо @Pratyush, я так и сделал. - person Bwire; 29.01.2014