Возврат уникальных значений из встроенного цикла - PullRequest
0 голосов
/ 01 ноября 2019

Я использую Puppet 5 и пишу модуль, который ссылается на некоторую иерархию, в которой есть некоторое дублирование (пример ниже - см. Gpgkey):

profile::example1:
  repo1:
    descr: Centos repo 
    gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  repo2:
    descr: Centos repo
    gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  repo3:
    descr: puppet repo
    gpgkey: http://puppet.repo/GPG-KEY

Мне успешно удалось получить репоимена (repo1, repo2 и repo3 в этом примере). Далее я хотел бы запустить exec для импорта gpgkey, однако это приводит к ошибке объявления дубликата (я полагаю, потому что gpgkey дублирован в hiera). Любые идеи или помощь о том, как это сделать? Вот поиск:

  $repo_name = lookup('profile::example1', Hash, 'deep')
        $repo_name.each | $name, Hash $config_hash | {
        notify { "${name}": }
  }

Я смотрел на встраивание другого цикла для извлечения значений из $ config_hash, но я обычно получаю один и тот же результат независимо от этого.

1 Ответ

2 голосов
/ 01 ноября 2019

Встроенная в Puppet функция unique() кажется естественной для этой работы. Например:

$repos = lookup('profile::example1', Hash, 'deep')
$unique_keys = $repos.map |$_name, $props| { $props['gpgkey'] } .unique
$unique_keys.each |$key| {
  # ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...