嵌套结构连接

编译

场景是我们的生产服务器位于一个私有子网中,在它们前面有一个NAT实例,以允许通过SSH进行维护。当前,我们通过SSH连接到NAT实例,然后从那里通过SSH连接到相应的服务器。

我想做的是使用NAT作为代理从计算机上运行部署任务,而无需将代码库上载到NAT实例。Fabric可以做到这一点吗?还是我将陷入一个痛苦的世界?

编辑只是为了跟进此事,如@Morgan建议的那样,网关选项确实可以解决此问题。

为了完整性,请在我的fabfile.py中:

def setup_connections():
    """
    This should be called as the first task in all calls in order to setup the correct connections
    e.g. fab setup_connections task1 task2...
    """
    env.roledefs = {}

    env.gateway = '[email protected]' # where all the magic happens

    tag_mgr = EC2TagManager(...)

    for role in ['web', 'worker']:
        env.roledefs[role] = ['ubuntu@%s' % ins for ins in
                              tag_mgr.get_instances(instance_attr='private_ip_address', role=role)]


    env.key_filename = '/path/to/server.pem'

@roles('web')
def test_uname_web():
    run('uname -a')

我现在可以运行,fab setup_connections test_uname_web并且可以让我的网络服务器变得更加一致

摩根

因此,如果您使用的是Fabric(1.5+)的较新版本,则可以尝试使用网关选项。我本人从未使用过它,但是看起来就像您想要的那样。

此处的文档:

同样,如果您遇到任何问题,我们所有人都将在irc中变得无所事事。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章