Развертывание приложения Fabric на прокси-сервер
Я хотел бы развернуть приложение с использованием 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 с прокси на месте?
1 ответ
Решение
Я думаю, что это можно сделать, создав 2 fab-файла: 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
,
(Не проверял код, но что-то вроде этого должно работать.)