我正面临着解决一个典型的问题,一个新手发现5分钟开始与厨师。
较具体来说:
目前,我正在解决这个问题:
service 'mongod' do
action :start
end
execute "Add Mongo Users" do
command "mongo #{host}:#{port} /tmp/mongo.setup.users.js"
retries 5 #times
retry_delay 10 #seconds
end
这不是一种优雅的方式让我相信它。
我的问题是:有没有办法使用通知和订阅来解决它。我已经看过文档,但我还没弄清楚如何获得它。
答案 0 :(得分:0)
这很简单:
execute 'foo' do
cmd 'bar'
subscribes :run, 'service[mongod]', :immediate # or :delayed
end
一般来说,notifies
和subscribes
的方式是:
subscribes|notify, 'resource_type[resource_name]', :timer
另外,正如@coderanger所述,我会非常小心javascript不是幂等的(这意味着,在这种情况下它会在用户中创建,即使它们已经存在)。
就我个人而言,我认为为此编写your own library会更优雅,有MongoDB driver for Ruby可用于创建/删除/编辑用户,索引,文档......同时保留所有内容在我的ruby Chef代码中清理和维护,(在我看来)更像是"基础设施作为代码的概念"。