0

目前我有一个厨师食谱,我可以在一个循环中发布消息进行聊天:

artifacts.each do |artifactItem|
    # Deploy the artifact
    #...

    # Post to chat
    chat_post "deployed artifact #{artifact_name}"
end

我的聊天结果是这样的:

chef [BOT]
deployed artifact A

chef [BOT]
deployed artifact B

chef [BOT]
deployed artifact C

我想知道 - 厨师中是否有一个简单的“队列”机制,我可以将我的部署消息排队,并一次发布它们(当我的食谱完成时)?如果是这样,代码的外观如何。

4

2 回答 2

3

最简单的方法是使用延迟通知系统。

artifacts.each do |artifactItem|
    # Deploy the artifact
    #...

    # Post to chat
    r = chat_post "deployed artifact #{artifact_name}" do
      action :nothing
    end
    ruby_block "notification for #{artifact_name}" do
      block { }
      notifies :someaction, r
    end
end

或类似的东西,请确保检查要用于通知的操作(无论chat_post资源上的默认操作是什么。这也假设chat_post是资源而不是某种辅助方法。如果它不是资源,您可能需要两个ruby_blocks.

于 2016-09-13T07:56:04.417 回答
0

您可以使用node.run_state保存当前厨师运行可访问的瞬态数据。

于 2016-09-13T07:55:18.940 回答