Chef

在 chef-client.rb 中設置屬性

  • July 22, 2016

我有一個案例,其中廚師食譜需要使用“remote_file”來獲取虛擬文件,並且需要通過 HTTP 代理進行獲取。這不起作用,因為 chef-client 不使用系統代理設置……它從/etc/chef/chef-client.rb

那麼如何將代理設置(或一般設置)放入chef-client.rb客戶端的文件中?

理想情況下,我希望它在客戶端引導時發生,但我不知道如何在沒有破解程式碼的情況下做到這一點。

另一種可能性是我可以創建一個更新chef-client.rb文件的配方。但這讓我覺得有點危險。這意味著您需要在其工作之前執行 chef-client 兩次,假設第一次執行中缺少代理設置會導致執行最終失敗。

有想法該怎麼解決這個嗎?

僅供參考:預設配置文件是/etc/chef/client.rb,您需要通過-c /etc/chef/chef-client.rb才能使用該文件。

為 http 代理設置 Chef 配置設置,您可以將代理設置為knife bootstrap與命令行選項一起使用--bootstrap-proxy URL。或者,您可以將其添加到您的knife.rb.

knife[:bootstrap_proxy] = "https://proxy.example.com"

將“ https://proxy.example.com”值替換為您的代理伺服器 URL。

這將自動將http_proxyhttps_proxy行添加到/etc/chef/client.rb文件中。或者,您可以在客戶端配置部分中使用這些配置值創建自定義引導模板。像這樣的東西(從 ubuntu10.04-gems.erb 修改):

(
cat <<'EOP'
http_proxy "http://proxy.example.com" # replace with your URL
<%= config_content %>
EOP
) > /etc/chef/client.rb

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