木偶奥格斯未能插入镜头并包含指定

木偶奥格斯未能插入镜头并包含指定

如果我指定镜头并包含在资源中,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)

我发现,即使没有 insert 命令,它也能正常工作(尽管没有 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 命令。

答案1

incl参数采用文件系统中文件的路径,而不是 Augeas 树中的路径,因此您必须/filesincl参数中删除。

因为你输入/files了参数incl,所以 Augeas 找不到要解析的文件,并ins尝试在一个不存在的路径前插入,这是一个错误。

相关内容