Puppet
如何修復 Puppet 完全限定的參數路徑錯誤?
當我在機器上執行 puppet 客戶端(非守護程序)時,我經常但隨機地收到以下錯誤消息:
錯誤:無法創建:參數路徑失敗:文件路徑必須是完全限定的 警告:不在失敗的目錄上使用記憶體 警告:無法實例化配置:參數路徑失敗:文件路徑必須是完全限定的
似乎很清楚這意味著什麼——我在參數中沒有完全限定的路徑。但是,它並沒有告訴我在哪裡可以找到它來修復它,甚至沒有告訴我哪個參數是錯誤的:(
(如果我使用調試選項,它始終可以工作,所以清單的記憶體似乎有問題……仍然可以擺脫它以供生產使用)
注意:我無法始終如一地做到這一點 :/
$$ Answering own question after getting around to prodding at the config for a while $$ 我已經設法將其追踪到我編寫的模組之一(當然),但這是由於使用了一個沒有達到我預期的變數。
發生的事情是:
$variable_dir = "/etc/puppet/bar" class foo { file { $variable_dir: ensure => directory } } define some-define() { # Trimmed for brevity exec { "some-$name": # command, creates, timeout etc here require => File[$variable_dir], } }
..這基本上對文件造成了一些混淆
$$ $$使用變數。我現在已經用變數的顯式值替換了這些,一切正常,但這有點令人驚訝!我假設我對范圍以及何時可以定義/使用變數的理解與 Puppet 有點格格不入,所以我會更好地了解這一點…… 由於找不到變數或未獲取值,它似乎導致了與在文件字元串上使用非完全限定路徑相同的行為?反正很奇怪。
編輯:很可能在範圍內找不到變數,因此是空的,絕對不是完全限定的路徑。沒有解釋為什麼這不一致,但是……