Centos
通過 Hiera puppet 管理啟用 - 禁用 nginx 站點?
我的任務是實現 hiera puppet 腳本來管理 nginx 的 sites_enabled。
這是我的木偶腳本:
common.yaml
--- classes: - nginx nginx: enabled: abc.com xyz.com disabled: test.com test2.com
初始化程序
class nginx{ create_resources("site_enabled", hiera("nginx"), {}) } define site_enabled($name){ file { '/etc/nginx/sites_enabled/${name}': ensure => 'link', target => '/etc/nginx/site_available/${name}', } }
但是當 puppet 執行時我得到了錯誤:
錯誤:無法從遠端伺服器檢索目錄:伺服器上的錯誤 400:無法在節點 XX 上的 /etc/puppet/modules/nginx/manifests/init.pp:7 處將字元串轉換為整數
當我嘗試通過命令行查詢 hiera 時:
$ hiera nginx
{“啟用”=>
$$ “abc.com”, “xyz.com” $$}
我知道我有些地方錯了。請糾正我。我不太了解 hiera 如何使用數組數據進行查詢和處理。如果可能的話,請給我一些有用的文件。
非常感謝。
您的問題與為 create_resources 創建 Hiera 雜湊的問題非常相似,其中有一個答案。我將在這裡提供一個回顧。
根據create_resources 的文件,散列必須採用
{title => {parameters} }
. 您應該編輯 hiera 數據以設置參數。由於沒有,我認為它可能看起來像這樣:common.yaml
--- classes: - nginx nginx::enabled: abc.com: {} xyz.com: {} nginx::disabled: test.com: {} test2.com: {}
接下來,您需要從 hiera 實際載入正確的數據。你要載入
nginx::enabled
,而不是全部nginx
初始化程序
class nginx{ create_resources("site_enabled", hiera("nginx::enabled")) } define site_enabled($name){ file { '/etc/nginx/sites_enabled/${name}': ensure => 'link', target => '/etc/nginx/site_available/${name}', } }