如何停止配置一个VM直到另一个VM完成?

时间:2015-01-30 15:06:24

标签: virtual-machine vagrant chef

使用Vagrant + Chef Solo我正在设置两个VM:#1是TeamCity服务器,#2是TeamCity代理。通过首先在VM#1上安装TeamCity服务器软件包完成供应,然后引导代理VM并从用于安装代理的服务器请求数据。整件事情很好。

但是现在我想在代理完成配置后改变服务器 。我想直接修改服务器的数据库,以更改仅在代理程序启动后可用的属性。但是有一种方法可以让一个VM的配置触发另一个VM吗?一旦代理完成,我想以某种方式恢复配置服务器,这样我就可以编辑数据库..

欢迎任何想法,建议或反馈。我是Vagrant,Chef, TeamCity的新手,所以我有可能错过了一个更简单的解决方案。

* 为什么我要直接编辑数据库你可能想知道? TeamCity代理必须经过授权才能使用,我想以编程方式执行此操作。我发现的解决方案是直接编辑数据库,因为授权功能不是通过TeamCity REST API公开的(据我所知)

2 个答案:

答案 0 :(得分:1)

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

此循环应具有睡眠和计数器以避免无限循环。

我不了解团队城市,所以无法判断它是否是最佳方式。

答案 1 :(得分:1)

一般而言,Chef旨在管理您的系统,而不是简单地配置它(尽管在具有“黄金图像”策略的现代云世界中不太常见)。尽管如此,在您的情况下,最好的办法是将Chef-client设置为每15分钟运行一次的服务。客户端完成配置后,服务器的下一次运行将能够对其进行授权。

如果你真的想从另一个“触发”那个,你需要在外部用etcd或consul之类的东西做,或者你需要在框之间设置一个ssh密钥对并添加一个{{1在客户端上直接进行数据库修改,或者在服务器上调用ruby_block