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