我计划实现为每个用户添加多个ssh密钥的可能性。 对于单个密钥,我使用了:
if ($sshkey) {
ssh_authorized_key { $resourcename:
ensure => 'present',
type => 'ssh-rsa',
key => '$sshkey',
user => $title,
require => User[$title],
}
}
对于多个键,我认为这可能有效:
if ($sshkeyarray != []) {
$sshkeyarray.each |String $singlesshkey| {
ssh_authorized_key { $resourcename:
ensure => 'present',
type => 'ssh-rsa',
key => '$singlesshkey',
user => $title,
require => User[$title],
}
}
}
但是资源名只能使用一次,所以我想给出像" resourcename_1"对于第一个ssh密钥和" resourcename_n"对于第n个密钥。
我该怎么做?我可以从数组中获取singlesshkey的位置并将其添加到resourdcename吗?
答案 0 :(得分:1)
如文档here中所述,您可以这样做:
$sshkeyarray.each |$index, String $singlesshkey| {
ssh_authorized_key { "${resourcename}_${index}":
ensure => 'present',
type => 'ssh-rsa',
key => $singlesshkey,
user => $title,
require => User[$title],
}
}
请注意,无需测试空数组。无论如何,循环一个空数组都不会发生任何事情。