data_bag_item用于检索单个键值

时间:2016-04-20 21:27:36

标签: ruby chef chef-recipe databags

我今天刚开始和厨师一起玩,有一件事我不能理解我是如何使用数据包在一个项目中存储多个键值(1个包> 1个项目>许多键 - ())并且能够在食谱中逐个调用它们。

如果数据库中的目录存在,这是一个删除目录的简单测试。

directory 'bag_item[installvar.testbag]['testdir'])' do
  action :delete
  only_if { Dir.exist?(bag_item[installvar.testbag]['testdir']) }
end

显然我没有正确使用索引,但我根本就没有使用红宝石,直到几周前我才知道红宝石是什么...所有谷歌搜索引用了大量使用的例子一个键值的多个项目,这不是我想要实现的。数据库是installvar itemID是testbag,我想要检索的密钥是testdir。

2 个答案:

答案 0 :(得分:0)

查看https://docs.chef.io/ruby.html以获取一些非常基本的Ruby介绍。具体来看Hash部分,因为data_bag_item()方法调用返回的项在大多数情况下都像Hash一样。每个包项目都是JSON兼容的哈希。

答案 1 :(得分:0)

所以解决方案很简单:

var = data_bag_item('installvar', 'testbag')
  dir = var['testdir']

directory "#{dir}" do
  action :delete
  only_if  Dir.exist?("#{['dir']}")
end

这有效。