Puppet查找失败,需要敏感值Get String

Puppet查找失败,需要敏感值Get String,puppet,hiera,Puppet,Hiera,我试图在Hiera 5中的yaml中实现加密值,通过自动查找将密码安全地注入Puppet(enterprise)5.3。和提供了关于必要设置的极好指导 但是,我似乎无法获得正确的lookup\u选项以确保转换为敏感类型(以匹配类参数) 使用命令断言失败,原因是: [user@rhel7 ~]$ puppet lookup my_module::db_pass --environment test --type Sensitive[String] Error: Could not run: Fou

我试图在Hiera 5中的yaml中实现加密值,通过自动查找将密码安全地注入Puppet(enterprise)5.3。和提供了关于必要设置的极好指导

但是,我似乎无法获得正确的
lookup\u选项
以确保转换为敏感类型(以匹配类参数)

使用命令断言失败,原因是:

[user@rhel7 ~]$ puppet lookup my_module::db_pass --environment test --type Sensitive[String]
Error: Could not run: Found value has wrong type, expects a Sensitive value, got String 
此外,似乎还发现了这些人,他们看起来很明智:

[user@rhel7 ~]$ puppet lookup my_module::db_pass --environment test --explain-options
Hierarchy entry "Passwords"
        Path "/etc/puppetlabs/code/environments/test/modules/my_module/data/secrets.eyaml"
          Original path: "secrets.eyaml"
          Found key: "lookup_options" value: {
            "^my_module::.*pass$" => {
              "convert_to" => "Sensitive"
            }
          }
解密工作得很好(对明文来说很不幸——不确定这是否是预期的?)

设置如下所示:

[user@rhel7 /etc/puppetlabs/puppet/environment/test/modules/my_module]$ cat hiera.eyaml
---
version: 5
defaults:
  data_hash: yaml_data
  datadir: data

hierarchy:
  - name: "Passwords"
    lookup_key: eyaml_lookup_key
    paths:
      - "secrets.eyaml"
    options:
        pkcs7_private_key: "/etc/puppetlabs/puppet/keys/private_key.pkcs7.pem"
        pkcs7_public_key: "/etc/puppetlabs/puppet/keys/public_key.pkcs7.pem"
我使用不同的正则表达式和/或直接使用键也不成功:

lookup_options:
  my_module::db_pass:
    convert_to: "Sensitive"

对于任何带有模糊代码的小复制粘贴问题,我提前表示歉意:)

我一直不明白为什么我尝试过的上述特定测试设置不起作用,但以下是我最终实现的:

---
lookup_options:
  "^my_module::.*(password|token)$":
    convert_to: Sensitive
模式匹配将适当地将以下任一项强制转换为敏感的[String]:

my_module::password
my_module::service_password
my_module::api_token
my_module::any_number::of_subclasses::token_or_password
如果您正在考虑经历同样的过程,您可能会考虑:

  • 与其硬编码密码,不如尝试利用新的Puppet6+功能,完全避免混淆(不将凭据放入目录中):
  • 如果这不可行,请遵循建议的流程(不要忘记 重新启动Puppet服务器)
  • 自由使用
    puppet lookup
    实用程序,尤其是
    --explain选项
    类型敏感的[String]

顺便说一句,JIRA实际上是Hiera 4版的,基本上是Hiera 5版的测试版。也就是说,乍一看,您需要将
lookup\u选项
从数据迁移到配置。我认为将hiera配置放在数据中是有效的,但从将其放在
eyaml
层次结构级别开始可能会更容易。作为旁注,当我这样做时,我通常只是默许Puppet希望将加密密码作为
字符串查找,然后在任何报告/输出之前重铸为
敏感的
。这也可能是
eyaml
后端中的一个错误。@MattSchuchard,数据内部不仅是
lookup\u选项允许的位置,也是查找选项的适当位置。这些属性描述数据的属性,而不是数据源的属性。此外,据我所知,Hiera 5的主配置中无法识别
lookup\u选项
。请尝试从配置的
defaults
部分删除
data\u hash:yaml\u data
。在默认设置中包含这一点(对于您的eyaml层次结构,这一点没有被覆盖)可能会让Hiera混淆,无法在您希望它使用eyaml的地方使用常规yaml后端。如果您有其他层次结构级别,希望使用yaml后端,则将
数据\u散列
键添加到每个层次结构的配置中。这是在中演示的方法,尽管我不确定是否确实需要。好吧,我的猜测被打消了,现在这似乎更可能是一个bug。对于帮助,我感觉我对Hiera了解更多。我确实试过约翰的建议——运气不好。我也试着跑了,但没跑多远。我确实了解到,第一次(唯一一次)解析
lookup_options
是在加载模块时发生的(prob缓存供以后使用)是在日志行~800),而
db_pass
键的自动参数查找发生得更晚,大约在~1100。根据中的实现说明,我猜不到这一点。
---
lookup_options:
  "^my_module::.*(password|token)$":
    convert_to: Sensitive
my_module::password
my_module::service_password
my_module::api_token
my_module::any_number::of_subclasses::token_or_password