试图理解 chef_vault 和 ruby 集合
Trying to understand chef_vault and ruby collections
我是 Ruby 和 Chef 的新手 我无法理解如何从数据包中获取嵌套元素 (chef_vault)。我认为这是一个更基本的 Ruby 问题,但不确定是否特定于 Chef。
我创建了这个保险库:
$json = '{
"KEY1": [{
"SUBKEY1": "aaaaa",
"SUBKEY2": "bbbbbbb",
"SUBKEY3": "cccccccc"
}],
"KEY2": [{
"SUBKEY1": "dddddd",
"SUBKEY2": "eeeeee"
}],
"KEY3": "fffffff",
"KEY4": "ggggggg"
}'
knife vault create test_vault vaultitem1 $json --admins red888 --mode client --search 'role:testservers'
这是我在我的食谱中尝试从中获取嵌套元素时注意到的:
test_vault = ChefVault::Item.load("test_vault", "vaultitem1")
puts test_vault.class
puts test_vault['SUBKEY1'].class
puts test_vault['SUBKEY1'].inspect
puts test_vault['SUBKEY1'][0]['SUBKEY2']
现在我在控制台中看到的是:
ChefVault::Item
Array
[{"SUBKEY1"=>"aaaaa", "SUBKEY2"=>"bbbbbbb", "SUBKEY3"=>"cccccccc"}]
{"SUBKEY1"=>"aaaaa", "SUBKEY2"=>"bbbbbbb", "SUBKEY3"=>"cccccccc"}
bbbbbbb
最初我试过 test_vault['KEY1']['SUBKEY2']
却给了我一个错误。我的问题是,为什么我必须做 test_vault['KEY1'][0]['SUBKEY2']
我用 [0] 索引的是什么?
KEY1
和 KEY2
都是包含单个散列的数组。这就是您设置 JSON 的方式,所以这就是您必须使用它的方式。不是真正的 Ruby 东西。
我是 Ruby 和 Chef 的新手 我无法理解如何从数据包中获取嵌套元素 (chef_vault)。我认为这是一个更基本的 Ruby 问题,但不确定是否特定于 Chef。
我创建了这个保险库:
$json = '{
"KEY1": [{
"SUBKEY1": "aaaaa",
"SUBKEY2": "bbbbbbb",
"SUBKEY3": "cccccccc"
}],
"KEY2": [{
"SUBKEY1": "dddddd",
"SUBKEY2": "eeeeee"
}],
"KEY3": "fffffff",
"KEY4": "ggggggg"
}'
knife vault create test_vault vaultitem1 $json --admins red888 --mode client --search 'role:testservers'
这是我在我的食谱中尝试从中获取嵌套元素时注意到的:
test_vault = ChefVault::Item.load("test_vault", "vaultitem1")
puts test_vault.class
puts test_vault['SUBKEY1'].class
puts test_vault['SUBKEY1'].inspect
puts test_vault['SUBKEY1'][0]['SUBKEY2']
现在我在控制台中看到的是:
ChefVault::Item
Array
[{"SUBKEY1"=>"aaaaa", "SUBKEY2"=>"bbbbbbb", "SUBKEY3"=>"cccccccc"}]
{"SUBKEY1"=>"aaaaa", "SUBKEY2"=>"bbbbbbb", "SUBKEY3"=>"cccccccc"}
bbbbbbb
最初我试过 test_vault['KEY1']['SUBKEY2']
却给了我一个错误。我的问题是,为什么我必须做 test_vault['KEY1'][0]['SUBKEY2']
我用 [0] 索引的是什么?
KEY1
和 KEY2
都是包含单个散列的数组。这就是您设置 JSON 的方式,所以这就是您必须使用它的方式。不是真正的 Ruby 东西。