如何遍历木偶中的嵌套字典?

时间:2020-09-22 20:09:22

标签: ruby puppet

这是我在人偶代码中具有类似于以下内容的数据集的python示例:

dict = {'account1': {'uid': ['123456'], 'user': ['appuser1'], 'appname': ['myapp1']},
       'account2': {'uid':['567878'], 'user':['appuser'2], 'appname':['myapp2']}}
for i in dict.keys():
     print dict[i]['user'], dict[i]['uid']

我如何在puppet / ruby​​.TIA中实现相同的解决方案。

1 个答案:

答案 0 :(得分:3)

在Puppet清单中,您可以使用each function遍历哈希:

$ cat foo.pp
$dict = {
  'account1' => {
    'uid'     => ['123456'],
    'user'    => ['appuser1'],
    'appname' => ['myapp1']
  },
  'account2' => {
    'uid'     => ['567878'],
    'user'    => ['appuser2'],
    'appname' => ['myapp2']
  }
}

$dict.each | $account_key, $account | {
  notice("${account['user'][0]}, ${account['uid'][0]}")
}
$ puppet apply foo.pp
Notice: Scope(Class[main]): appuser1, 123456
Notice: Scope(Class[main]): appuser2, 567878
Notice: Compiled catalog for it070137 in environment production in 0.04 seconds
Notice: Applied catalog in 0.03 seconds

如果愿意,可以使用类型来检查哈希中的键和值是否符合您的期望:

$dict.each | String $account_key, Hash $account | {
  notice("${account['user'][0]}, ${account['uid'][0]}")
}