如何让Chef重新启动节点,并从中断的地方继续执行配方?

4

我正在使用Berkshelf和Vagrant设置一个asterisk服务器,并想首先通过运行

apt-get升级

来升级内核并重启我的机器。

如何在recipe中触发重启,并在机器重启后继续执行?使用Fabric没有问题,但是在Vagrant中的Chef provisioner在机器重启时停止了。

1个回答

1

幂等性是Chef的原则之一。

这意味着您的食谱可以多次运行,它只会更改不符合预期的内容。

因此,在您的情况下,它将是这样的:

  • 第一次运行Chef注意到安装了一个意外的内核。因此,它安装内核并触发重新启动。
  • Chef再次运行,识别出内核已按预期安装,因此继续进行。现在您可以继续其他操作。

请注意:我从未尝试过这样做,但在Chef运行中间发出reboot信号可能会造成一些损坏。我建议在reboot信号后中止chef运行(例如通过引发异常,请参见如何中止/结束Chef运行?)。


啊,刚刚看到你甚至证明了“Vagrant中的Chef配置管理器在机器重启时死亡”的问题。对于Vagrant来说有点特殊,因为它不会在重启后再次运行Chef。但对于不运行Vagrant的服务器,应该可以解决这个问题。对于Vagrant,您必须自己发出vagrant reload命令。 - StephenKing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接