微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Puppet:访问动态变量路径中的哈希键

如何解决Puppet:访问动态变量路径中的哈希键

我有一个像这样的 puppet 哈希类型数据结构来存储 ssh 密钥:

class users::sshkeys {
  $user1 = {
      user1 => {
          key => 'AAAAAA',type => 'ssh-rsa'
       }
  }
  $user2 = {
      user2 => {
          key => 'BBBBBB',type => 'ed25519'
      }
  }
}

我可以像这样访问密钥:

$users::sshkeys::user1['user1']['key']

我想动态访问密钥(例如在循环中),如下所示:

$users = ['user1','user2']

$users.each |$user| {
  $users::sshkeys::$user[$user]['key']
}

我找到了一个访问动态类/变量的解决方案:

$mydynamicvar = getvar("users::sshkeys::${user1}")
notify{"$mydynamicvar":}

这似乎返回了一个字符串,所以我无法访问里面的哈希键:

notify{"$mydynamicuser[$user]['key']":}

有什么想法吗?

解决方法

啊,明白了:) 将所有散列放入一个变量(此处:$all_users)并将它们汇总到组中的工作方式如下:

$sysadmins = { 
  user1 => $all_users['user1'],user2 => $all_users['user2']
} 

感谢您为我指明正确的方向@MattSchuchard

即使在循环中接收 ssh 密钥和密钥类型也可以使用大哈希:

 $users = ['user1','user2']

  $users.each |$user| {
    profiles::users::sshkeys { $user:
      user                    => $user,group                   => 'sftpusers',ssh_authorized_key      => $users::sshkeys::all_keys::all_users[$user]['key'],ssh_authorized_key_type => $users::sshkeys::all_keys::all_users[$user]['type'],shell                   => $shell,}
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。