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

问题描述

这是我在人偶代码中具有类似于以下内容的数据集的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中实现相同的解决方案。

解决方法

在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]}")
}