Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Puppet 加密的Hiera eyaml变量在主机上解密,但在节点上不解密_Puppet_Hiera - Fatal编程技术网

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

Puppet 加密的Hiera eyaml变量在主机上解密,但在节点上不解密,puppet,hiera,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 我可以看到我的临时配置文件正在正确生成: password="pass

我刚刚在我的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解密不是在傀儡主机上进行的吗?

傀儡目录是在傀儡主机上编译的。然后通过SSL连接与客户机共享编译后的目录(假设Puppet CA已经签署了来自客户机的SSL证书请求)。然后在客户机上实现目录。编译阶段还涉及合并Hiera数据(如果使用EYAML后端,则首先解密)。如果使用例如GPG加密,Puppet Master上的GPG recipients文件将用于决定在解密过程中使用哪些密钥。最终的结果是客户端实际上不会解密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

另外,在--no deamonize模式下运行puppet master,并使用--debug--verbose标志有助于跟踪两侧发生的情况。

要清楚,您是否正在运行
puppet代理--test--environment=dev
以获得该结果?不使用--test,并以verbose模式将输出写入日志文件。但是这些不应该影响结果。Env=dev是在节点的puppet.conf中定义的。因此,运行puppet master--compile命令应该得到与节点上的puppet代理相同的结果。那么为什么只有在puppet master上调用密码时才替换密码呢?