管理啟用 - 透過 Hiera puppet 停用 nginx 網站?

管理啟用 - 透過 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}',
    }
}

但是當木偶執行時我得到了錯誤:

錯誤:無法從遠端伺服器檢索目錄:伺服器上出現錯誤 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 很陌生。

先謝謝了。

相關內容