我正在使用Fabric
自动化我的一些工作流程,其中大部分涉及操纵EC2实例.
我正在寻找一种方法来保持我的.ssh/config
文件是最新的,因为我经常启动并关闭EC2实例,如果我可以轻松地调试它们以进行调试等,这对我很有帮助.
我的SSH配置文件中的条目如下所示
Host ins_id Hostname xxxxxxxx.com User ubuntu IdentityFile ~/.ssh/kp.pem
目前,我正在做类似以下的事情(利用Fabric
和boto
),坦率地说这是一种垃圾方法:
def my_cool_spin_up_function(self): . . . . . . ssh_conf = os.path.join(homedir, '.ssh/config') ssh_info = '\n'.join(['Host %s' % name, 'Hostname %s' % ins.dns_name, 'User %s' % env.user, 'IdentityFile %s' % kp_loc, '\n']) w_com = 'echo %s | cat - %s | tee %s > /dev/null' % (ssh_info, ssh_conf, ssh_conf) local(w_com)
正如你所看到的,这只会在每次调用时都保留在我的配置文件之前,这很好,因为SSH在配置中为每个主机获取第一部分,但这意味着文件会逐渐增加...
我想知道是否有任何Python库允许将其.ssh/config
视为更多的配置文件,其相关部分可以随时更新.例如,如果您可以简单地将其.ssh/config
视为字典并抽象出文件读/写,那将是非常棒的...
谢谢你的任何建议!
我们为这种配置做的是维护配置片段的目录,可以根据需要添加/删除,然后执行以下操作:
cat .ssh/config.d/* > .ssh/config
这将按词汇顺序附加内容,这意味着排序取决于您选择如何命名文件.这使得很容易使旧配置到期,删除特定项目,以及以其他方式控制配置文件.