首页 > 解决方案 > Puppet 从延迟函数运行中获取值

问题描述

我正在使用此类 Puppet 函数vault_lookup的自定义版本进行 Vault 集成。更改了一些逻辑,使用 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",

这很酷,但我不能在这个变量上使用typeSensitive来隐藏 Puppet 运行日志中的内容 :( 另外,我可以在使用标准 Puppet 资源(如.$dSensitivefile

也许有人已经实现vault_lookup并且可以建议如何将变量内容传递给清单中的其他类?

标签: rubypuppet

解决方案


推荐阅读