Puppet

Puppet augeas 在插入時失敗,帶有鏡頭和包括指定

  • June 27, 2014

如果我在資源中指定鏡頭和包含,則 augeas insert 命令會引發錯誤。我真的找不到任何有類似問題的人。當我包含以下資源時,它會拋出無用的錯誤,只是說

$file = "/etc/ldap.conf"
$comment_style = "#comment"
$lens = "Spacevars.lns"
augeas { "${file}":
 context => "/files${file}",
 changes => [
   "ins ${comment_style} before '*[1]'",
   "set ${comment_style}[1] 'Puppet has modified this file with augeas'",
 ],  
 incl => "/files${file}",
 lens => $lens,
}

我在augtool中嘗試過等效的:

# augtool --noload --noautoload
augtool> set /augeas/load/Spacevars/lens "Spacevars.lns"
augtool> set /augeas/load/Spacevars/incl "/etc/ldap.conf"
augtool> load
augtool> ins #comment before /files/etc/ldap.conf/*[1]
augtool> set /files/etc/ldap.conf/#comment[1] 'Puppet has modified this file with augeas'
augtool> save
Saved 1 file(s)

我發現沒有插入命令它工作正常(儘管沒有 set 命令它甚至在 augtool 抱怨一個格式錯誤的子節點時也會中斷)。使用 –debug 執行時 Puppet 的錯誤。

Debug: Augeas[/etc/ldap.conf](provider=augeas): sending command 'ins' with params ["#comment", "before", "/files/etc/ldap.conf/*[1]"]
Debug: Augeas[/etc/ldap.conf](provider=augeas): Closed the augeas connection
Error: /Stage[main]/Augeasdebug/Augeas[/etc/ldap.conf]: Could not evaluate: Error sending command 'ins' with params ["#comment", "before", "/files/etc/ldap.conf/*[1]"]/Error sending command 'ins' with params ["#comment", "before", "/files/etc/ldap.conf/*[1]"]

如果沒有 lens 和 incl 選項,它可以正常工作,儘管我需要能夠指定這些。我才剛剛開始使用 augeas,但我找不到使用 puppet 和 augeas 的那麼多相關文件。我不得不猜測等效的 augtool 命令。

incl參數獲取文件系統中文件的路徑,而不是 Augeas 樹中的文件,因此您必須/filesincl參數中刪除。

因為你/files輸入了incl參數,所以 Augeas 找不到要解析的文件,並ins試圖在一個不存在的路徑之前插入,這是一個錯誤。

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