Puppet

如何修復 Puppet 完全限定的參數路徑錯誤?

  • April 28, 2015

當我在機器上執行 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 有點格格不入,所以我會更好地了解這一點…… 由於找不到變數或未獲取值,它似乎導致了與在文件字元串上使用非完全限定路徑相同的行為?反正很奇怪。

編輯:很可能在範圍內找不到變數,因此是空的,絕對不是完全限定的路徑。沒有解釋為什麼這不一致,但是……

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