
我的任務是實作 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}',
}
}
但是當木偶執行時我得到了錯誤:
錯誤:無法從遠端伺服器檢索目錄:伺服器上出現錯誤 400:無法將節點 XX 上的 /etc/puppet/modules/nginx/manifests/init.pp:7 處的字串轉換為整數
當我嘗試透過命令列查詢 hiera 時:
$ 希拉 nginx
{“已啟用”=>[“abc.com”,“xyz.com”]}
我知道我有些地方做錯了。請糾正我。我不太了解 hiera 如何查詢和處理數組資料。如果可能的話,請給我一些有用的文件。
非常感謝。
答案1
你的問題非常相似為 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}',
}
}
答案2
感謝 Sciunus 的快速回覆。
我可以問這個問題嗎?我想讓我的 yaml 數據遵循這種格式:
nginx:
enabled: abc.com xyz.com disabled: test.com test2.com
我不想採用這樣的格式:
nginx::啟用:
abc.com: {} xyz.com: {}
nginx::停用:
test.com: {} test2.com: {}
我怎麼能讓我的木偶腳本按預期工作。我還閱讀了Hiera文檔,據我所知,它也支援三種查找資料:hiera、hiera_hash和hiera_array。但我無法按照上面的 yaml 檔案格式使其按預期工作
抱歉,因為我對 hiera 很陌生。
先謝謝了。