Puppet

puppet master –compile 將錯誤記錄到標準輸出

  • June 12, 2012

我看到一個關於這個的錯誤,一年前被接受然後關閉:http : //projects.puppetlabs.com/issues/3670 但我使用的是 puppet 2.7.14 並且遇到了同樣的問題。

我正在嘗試使用“puppet solo”(即只在要配置的每台伺服器上執行 puppet apply),因為我在這個項目中只有 2 或 3 台伺服器,並且添加另一台伺服器作為 puppetmaster 完全是矯枉過正。除非我弄錯了,否則手動將節點應用於伺服器的最佳方法是:

puppet master --compile=mynode > catalog.json
puppet apply --catalog catalog.json

但是該puppet master命令會向標準輸出輸出一些警告和通知,並與所需的 json 內容混合。它使用彩色輸出,所以我不能直接通過管道egrep -v '^warning:'

編輯:我想使用 grep 沒什麼大不了的——因為 puppet 2.7 漂亮地列印了實際內容,並且警告永遠不會以空格開頭,而是通過egrep '^( |{|})'作品管道輸出

所以我的問題基本上是:

  • 有沒有比這更好的方法在不使用 puppetmaster 的情況下應用 puppet 節點?我真的找不到任何關於在沒有 puppetmaster 的情況下使用 puppet 的線上參考資料,即使對於一個小項目來說這似乎是一件完全合理的事情。
  • 是否有我缺少的設置或標誌將puppet master停止成為混蛋並將其錯誤發送到 stderr 而不是 stdout?
  • 還是我真的必須關閉顏色記錄,然後 grep 排除警告:並註意:行?

要在無主 Puppet 模式下執行,您可以直接使用puppet apply而無需單獨的puppet master編譯步驟。這是正常的完成方式,可以避免您在目錄中的日誌消息中遇到的問題(儘管這確實應該修復,但票證仍處於打開狀態)。

您需要兩個填充路徑才能使用puppet apply

  1. 清單路徑:Puppet 將讀取的第一個清單,通常稱為 site.pp
  2. 模組路徑:包含標準佈局中的一組模組的目錄

site.pp 清單通常位於/etc/puppet/manifests/site.pp並且可能只是一個類列表,包括:

include module1::class, module2::class

然後你可以執行puppet apply --modulepath=/foo/modules site.pp甚至只是puppet apply --modulepath=/foo/modules -e "include module1::class".

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