场景是我们的生产服务器位于一个私有子网中,在它们前面有一个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
并且可以让我的网络服务器变得更加一致
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句