Centos

通過 Hiera puppet 管理啟用 - 禁用 nginx 站點?

  • December 8, 2013

我的任務是實現 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}',
   }
}

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