Кукольный augeas не срабатывает при вставке с объективом
Команда augeas insert выдает ошибку, если я указываю линзу и incl в ресурсе. Я действительно не смог найти никого с подобной проблемой. Когда я включаю следующий ресурс, он выдает бесполезную ошибку, которая просто говорит
$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.
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]"]
Без объектива и вкл опций работает нормально, хотя мне нужно уметь их указывать. Я только начинаю использовать augeas, но я не могу найти столько соответствующей документации, используя кукол с augeas. Я должен был угадать эквивалентные команды augtool.
1 ответ
incl
Параметр принимает путь к файлу в файловой системе, а не в дереве Augeas, поэтому необходимо удалить /files
от incl
параметр.
Потому что вы положили /files
в incl
параметр, Augeas не может найти файл для анализа, и ins
пытается вставить перед несуществующим путем, что является ошибкой.