在puppet中使用位置的数组迭代

时间:2017-04-26 07:57:26

标签: puppet

我计划实现为每个用户添加多个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吗?

1 个答案:

答案 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],
    }
  }

请注意,无需测试空数组。无论如何,循环一个空数组都不会发生任何事情。