Puppet

使用庫存設置的多個木偶大師

  • December 20, 2012

我設法設置了多個 puppet master,其中一個 puppet master 充當 CA,客戶端能夠從該 CA 伺服器獲取證書,但使用他們指定的 puppet master 來獲取他們的清單。有關更多資訊,請參閱此問題..多個木偶大師。但是,我必須做幾件事才能使其正常工作,並且我會遇到錯誤。

首先,為了讓 puppet-client (PC) 連接到其指定的 puppet-master (PM) 的庫存工作,我必須將 PM1 上的 CA 證書複製到 PM2 ca 目錄。我執行了這個命令:

scp root@puppet-master1.test.net:/var/lib/puppet/ssl/ca/ca_cr*.pem  root@puppet-master2.test.net:/var/lib/puppet/ssl/ca/.

一旦我這樣做了,我就可以取消註釋SSLCertificateChainFile, SSLCACertificateFile & SSLCARevocationFile我在 PM2 上的 rack.conf VH 文件的部分。完成此操作後,庫存開始起作用。這聽起來是一種可以接受的做事方式嗎?

其次,在 puppet.conf 文件中,我為客戶端設置了指定的 PM 伺服器,例如server = puppet-master2.test.net. 除非有更好的方法,否則這就是它在我的生產設置中的工作方式。所以 PC1 將與 PM1 通信,PC2 將與 PM2 通信。這是我有錯誤的地方。當 PC2 第一次在 PM1 上向 CA 請求證書時,證書會出現,然後我在 PM1 上的 CA 上簽署證書。然後,當我在 PC2 上執行 puppet 代理 –test (在 puppet.conf 中有 server = puppet-master2.test.net )時,我收到此錯誤:

Warning: Unable to fetch my node definition, but the agent run will continue:
Warning: Error 403 on SERVER: Forbidden request: puppet-master2.test.net(10.1.1.161) access to /certificate_revocation_list/ca [find] at :112

但是,如果我更改 PC2 puppet.conf 文件並指定 server = PM1 並重新執行 puppet 代理 –test,我不會收到任何錯誤。然後我可以將 puppet.conf 文件中的更改恢復為 server = PM2,一切似乎都執行正常。

我是否必須在 PM2 上為客戶端向 /certificate_revocation_list/* 發出的請求設置某種 ProxyPassMatch 並將它們重定向到 PM1?或者我該如何解決這個錯誤?

乾杯,奧利

一旦我這樣做了,我就可以取消註釋 SSLCertificateChainFile, SSLCACertificateFile & SSLCARevocationFile 我在 PM2 上的 rack.conf VH 文件的部分。完成此操作後,庫存開始起作用。這聽起來是一種可以接受的做事方式嗎?

不需要這樣做 - 吊銷列表和根證書應該已經在輔助主機上。在 PM2 上嘗試以下文件位置:

SSLCertificateChainFile /var/lib/puppet/ssl/certs/ca.pem
SSLCACertificateFile    /var/lib/puppet/ssl/certs/ca.pem
SSLCARevocationFile     /var/lib/puppet/ssl/crl.pem

其次,在puppet.conf文件中,我為客戶端設置了指定的PM伺服器,例如server = puppet-master2.test.net。除非有更好的方法,否則這就是它在我的生產設置中的工作方式。

你在哪個木偶版本?3.0 的 SRV 記錄功能很好地解決了這個問題,讓您可以為客戶提供一組他們可以選擇的大師,具有權重和優先級。

我是否必須在 PM2 上為客戶端向 /certificate_revocation_list/* 發出的請求設置某種 ProxyPassMatch 並將它們重定向到 PM1?或者我該如何解決這個錯誤?

這是一個糟糕的預設值auth.conf- 代理連接未經過身份驗證,預設值是強制對 CRL 進行身份驗證(不敏感)。將此添加到您auth.conf的 PM1 上:

path /certificate_revocation_list
auth any
method find
allow *

引用自:https://serverfault.com/questions/459375