【问题标题】:Encrypted Hiera eyaml variable decrypts on master but not on node加密的 Hiera eyaml 变量在主节点上解密,但不在节​​点上
【发布时间】:2016-01-15 20:56:31
【问题描述】:

我刚刚在我的 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 agent --test --environment=dev 以获得该结果?
  • 不带 --test 并以详细模式将输出写入日志文件。但这些不应该影响结果。 env=dev 在节点的 puppet.conf 中定义。

标签: puppet hiera


【解决方案1】:

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

【讨论】:

  • 这让人相信,运行 puppet master --compile 命令应该给出与节点上的 puppet 代理相同的结果。那为什么只有在puppet master上调用密码才被替换呢?
【解决方案2】:

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

$ 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 模式下使用 --debug --verbose 标志运行 puppet master 有助于跟踪双方发生的情况。

【讨论】:

    猜你喜欢
    • 2015-05-14
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多