Puppet查找失败,需要敏感值Get String
我试图在Hiera 5中的yaml中实现加密值,通过自动查找将密码安全地注入Puppet(enterprise)5.3。和提供了关于必要设置的极好指导 但是,我似乎无法获得正确的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
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]
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