Puppet получает значение из отложенного запуска функции - PullRequest
0 голосов
/ 05 марта 2020

Я использую настроенную версию такой функции Puppet vault_lookup для интеграции с Vault. Изменены некоторые логи c, чтобы войти через AppRole, а не с сертификатами, как это было в оригинальной версии. И пытаюсь автоматизировать установку Vault с помощью этого модуля: puppet-vault .

Итак, этот код из примера работает отлично:

$d = Deferred('vault_lookup::lookup', ["secret/test", 'https://vault.hostname:8200'])

node default {
  notify { example :
    message => $d
  }
}

Но я пытаюсь чтобы достичь чего-то подобного:

class { '::vault':
    storage => {
      postgresql => {
        connection_url => "postgres://postgres_user:${d}@IP:5432/vault_db_user",
        ha_enabled     => 'true',
        ha_table       => 'vault_ha_locks',
      }
    }
}

И это содержимое переменной $d внутри ::vault class:

Deferred('vault_lookup::lookup', ["secret/test", 'https://vault.hostname:8200'])

Да, я могу получить правильное содержимое переменной с помощью использование таких call:

connection_url => "postgres://postgres_user:${d.call()}@IP:5432/vault_db_user",

Это круто, но я не могу использовать тип Sensitive для этой переменной для скрытия содержимого в журналах запуска Puppet :( Кроме того, я легко могу получить содержимое $d переменная (даже с типом Sensitive) при использовании стандартных ресурсов Puppet, таких как file.

Может быть, кто-то уже реализовал vault_lookup и может подсказать, как передать содержимое переменной в другие классы внутри манифеста?

...