Virtual machine 如何在另一个VM完成之前停止一个VM的配置?

Virtual machine 如何在另一个VM完成之前停止一个VM的配置?,virtual-machine,vagrant,chef-infra,Virtual Machine,Vagrant,Chef Infra,使用Vagrant+Chef Solo,我设置了两个虚拟机:#1是TeamCity服务器,#2是TeamCity代理。通过首先在VM#1上安装TeamCity server软件包来完成资源调配,然后启动代理VM并从用于安装代理的服务器请求数据。这一切都很好 但是现在我想在代理完成配置后更改服务器。我想直接修改服务器的数据库,以更改只有在代理启动后才可用的属性。但是有没有一种方法可以让一个VM的配置触发另一个VM?代理完成后,我希望以某种方式恢复对服务器的配置,以便编辑数据库 欢迎任何想法、建议或

使用Vagrant+Chef Solo,我设置了两个虚拟机:#1是TeamCity服务器,#2是TeamCity代理。通过首先在VM#1上安装TeamCity server软件包来完成资源调配,然后启动代理VM并从用于安装代理的服务器请求数据。这一切都很好

但是现在我想在代理完成配置后更改服务器。我想直接修改服务器的数据库,以更改只有在代理启动后才可用的属性。但是有没有一种方法可以让一个VM的配置触发另一个VM?代理完成后,我希望以某种方式恢复对服务器的配置,以便编辑数据库

欢迎任何想法、建议或反馈。我是流浪汉、厨师和团队城市的新手,所以我可能错过了一个更简单的解决方案


*为什么我要直接编辑数据库,你可能会想知道?TeamCity代理必须经过授权才能使用,我希望通过编程实现这一点。我发现的解决方案是直接编辑DB,因为授权功能不会通过TeamCity REST API公开(据我所知)

如果可以测试代理是否已安装/应答,则可以在继续执行配方之前在此测试上添加一个ruby块循环

这个循环应该有一个睡眠和一个计数器,以避免无限循环


我对teamcity一无所知,因此无法判断这是否是最好的方式。

一般来说,Chef旨在管理您的系统,而不是简单地提供它(尽管在现代云世界中,这在“黄金形象”战略中不太正确)。尽管如此,在您的情况下,最好的选择是将chef client设置为每15分钟运行一次的服务。客户机完成配置后,服务器的下一次运行将能够对其进行授权

如果您真的想从另一个“触发”一个,您需要使用诸如etcd或CONSOR之类的外部操作,或者您需要在框之间设置一个ssh密钥对,并在客户端上添加一个
ruby_block
,该客户端可以直接修改数据库,也可以在服务器上调用
chef-client