加密的 Hiera eyaml 变量在主服务器上解密,但在节点上不解密

Encrypted Hiera eyaml variable decrypts on master but not on node

我刚刚在我的 Puppet 3.8 开源环境中设置了 hiera-eyaml。

defaults.yaml
db_password: ENC[PKCS7,MXCGFDS......]

site.pp
$password=hiera(db_password)

如果我是 运行:

puppet master --debug --compile funky_hostname.mydomain.com --environment=dev

我可以看到我的模板配置文件正在正确生成:

password="password123"

但是当我在实际节点 (funky_hostname.mydomain.com) 上 运行 时,我得到了原始的加密字符串作为结果:

password="ENC[PKCS7,MXCGFDS......]"

Hiera解密不是在puppet master这边进行吗?

Puppet 目录是在 Puppet Master 上编译的。编译后的目录然后通过 SSL 连接与客户端共享(假设 Puppet CA 已签署来自客户端的 SSL 证书请求)。然后在客户端上实现该目录。编译阶段还涉及合并 Hiera 数据(如果使用 EYAML 后端,则首先解密)。如果使用例如GPG 加密,Puppet Master 上的 GPG 收件人文件用于决定在解密过程中使用哪些密钥。最终结果是客户端实际上并没有解密 EYAML,这一切都是在 Puppet Master 上完成的。唯一可以解密 EYAML 的客户端(至少在使用 GPG 的情况下)是 GPG 收件人文件中列出的那些客户端。希望对您有所帮助!

看起来好像有多个问题,其中之一是密钥文件的权限。

$ chown -R puppet:puppet /etc/puppet/secure/keys
enter code here$ chmod -R 0500 /etc/puppet/secure/keys
$ chmod 0400 /etc/puppet/secure/keys/*.pem
$ ls -lha /etc/puppet/secure/keys
-r-------- 1 puppet puppet 1.7K Sep 24 16:24 private_key.pkcs7.pem
-r-------- 1 puppet puppet 1.1K Sep 24 16:24 public_key.pkcs7.pem

另外 运行 带有 --debug --verbose 标志的 --no-deamonize 模式中的 puppet master 有助于跟踪双方发生的事情。