在Chef Data Bag更改时执行某些操作

时间:2014-06-18 06:56:36

标签: chef chef-recipe

有没有办法在Chef Data Bag中更改值时执行某些操作。

让我们说数据包看起来像这样。

{
    "data": {
        "version": "1.0.12-SNAPSHOT"
    }
}

并且它会更改为

{
    "data": {
        "version": "1.0.13"
    }
}

有没有办法让Chef资源“订阅”此更改或此更改为“通知”更改资源?

1 个答案:

答案 0 :(得分:2)

对此的常见解决方案是订阅数据包中的更改,但要明智地处理更改的结果。

您似乎在描述要安装的软件版本。因此,一个明智的方法是在每次厨师运行期间执行这些步骤:

  • 检查当前安装的软件版本是否与数据包中当前定义的版本相同
  • 如果匹配,则不执行任何操作
  • 如果不同,请更新软件

这样,您不需要任何实际的发布/订阅架构,只需在常规厨师运行期间处理所有内容。

事实上,这种一般方法是厨师工作中的所有提供者:如果它与配方定义的预期状态不同,检查当前状态并进行调整。