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

时间:2016-01-15 20:56:32

标签: puppet hiera

我刚刚在我的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

我可以看到我的tempated configfile正确生成:

password="password123"

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

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

Hiera解密是否发生在木偶主人身上?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

看起来有多个问题在一起,其中一个是密钥文件的许可。

$ 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也有助于跟踪双方发生的事情。