puppet master –compile 將錯誤記錄到標準輸出
我看到一個關於這個的錯誤,一年前被接受然後關閉: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
:
- 清單路徑:Puppet 將讀取的第一個清單,通常稱為 site.pp
- 模組路徑:包含標準佈局中的一組模組的目錄
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"
.