gpt4 book ai didi

python - Fabric 将应用程序部署到代理服务器

转载 作者:太空宇宙 更新时间:2023-11-03 18:36:48 25 4
gpt4 key购买 nike

我想使用 Fabric 将应用程序部署到代理服务器。通常我们先 ssh 到代理服务器,然后再 ssh 到生产服务器,但是 Fabric 似乎不允许直接这样做。

设置示例为本地 --> 服务器 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

有没有办法可以在本地运行 Fabric 并使用代理部署到服务器 B?

最佳答案

我认为这可以通过创建 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代理

(尚未测试代码,但类似的东西应该可以工作。)

关于python - Fabric 将应用程序部署到代理服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21414202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com