如何解决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 举报,一经查实,本站将立刻删除。