2016-01-15 63 views
1

我只在我的Puppet 3.8開源環境中設置hiera-eyaml。加密的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解密是不是正在木偶大師身上發生?

+0

要說清楚,你正在運行'puppet agent --test - environment = dev'來獲得這個結果嗎? –

+0

不使用--test並將輸出以詳細模式寫入日誌文件。但是這些不應該影響結果。 Env = dev在節點的puppet.conf中定義。 –

回答

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模式有助於跟蹤什麼在兩側。

1

木偶目錄在木偶大師編譯。編譯的目錄然後通過SSL連接與客戶端共享(假設Puppet CA已經從客戶端簽署了SSL證書請求)。該目錄然後在客戶端上實現。彙編階段還涉及合併 Hiera數據(如果使用EYAML後端,則首先解密)。如果使用例如GPG加密,Puppet Master上的GPG收件人文件用於決定在解密過程中使用哪些密鑰。最終的結果是客戶事實上並不解密EYAML,這一切都是在Puppet Master上完成的。唯一可以解密EYAML的客戶端(至少在使用GPG的情況下)是GPG收件人文件中列出的客戶端。希望有所幫助!

+0

這使得相信,運行puppet master --compile命令應該給出與節點上的puppet代理相同的結果。那麼爲什麼只有在木偶大師上被調用時才更換密碼? –

相關問題