如何在运行fabric命令之前先登录防火墙?

时间:2013-08-21 21:48:22

标签: python deployment fabric

我正在尝试在结构中运行部署文件,但我们的应用服务器在需要首先登录的实际服务器之前有防火墙。如何让Fabric首先登录?我无法找到并记录这个问题。

2 个答案:

答案 0 :(得分:0)

创建新任务和结构角色应该可以解决问题:

from fabric.api import run, task
from fabric.decorators import roles
from fabric.state import env

env.roledefs = {"firewall": ["mybox"]}

@roles("firewall")
@task
def do_stuff_on_firewall_server():
    run("some-cmd")

您可以非常轻松地运行此命令:

fab do_stuff_on_firewall_server

答案 1 :(得分:0)

如果我理解正确,你不能直接SSH到目标服务器,但你必须首先通过SSH进入防火墙,然后从防火墙SSH到目标服务器。

在这种情况下,您可以使用Fabric的--gateway命令行选项:

$ fab --gateway=firewall.company.com --hosts=server.company.com sometask

请参阅https://fabric.readthedocs.org/en/1.7/usage/fab.html#cmdoption-g