如何从这个复杂的 Puppet 结构中提取值

Jol*_*oly 1 puppet

我在木偶中有这样的数据结构:

Struct[
    'ssh_keys' => Hash[
      String,
      Struct[
        'path'    => String,
        'content' => String,
      ]
    ]
  ] $myStructure
Run Code Online (Sandbox Code Playgroud)

我想将所有“路径”值提取到一个数组中。

我使用映射内部结构

$testvariable = $myStructure['ssh_keys'].map |$items| { $items[1] }
Run Code Online (Sandbox Code Playgroud)

但这里有点糟糕,任何帮助将不胜感激。

Joh*_*ger 5

目前还不清楚你在纠结什么,因为你确实已经完成了大部分应该可行的解决方案。然而,对于哈希,我通常更喜欢map()lambda 接受两个参数、一个单独的键和值的函数形式。在这种情况下,读起来会更清楚:

$testvariable = $myStructure['ssh_keys'].map |$unused, $ssh_key| { $ssh_key['path'] }
Run Code Online (Sandbox Code Playgroud)

但您还应该能够在原始代码中将其索引$items[1]为哈希 ( Struct):$items[1]['path']

dig()如果您无法忍受上面的数组和散列索引的混合,您也可以使用该函数: $items.dig(1, 'path')

  • 我还要提一下,不要在 Puppet 中使用驼峰命名法。请参阅 https://github.com/rodjek/rspec-puppet/issues/622 另请参阅风格指南。还有一些过去发现的与骆驼案例相关的其他错误。 (2认同)