Использование augeas с puppet для добавления атрибута к корневому узлу

Итак, я пытаюсь сделать что-то, что выглядит идентично вопросу в "Проблемы с добавлением атрибута в корневой узел XML через augeas», но приведенный там ответ мне не подходит. Без команды вставки я получаю это сообщение об ошибке (в режиме puppet agent -t --debug --verbose):

Debug: Augeas[context.xml](provider=augeas): /augeas/files/usr/share/tomcat/conf/context.xml/error/message = Failed to match 
    { /#attribute/ }?({ /#text/ = /(\\]\\]\\]*[^]\001-\004<>][^]\001-\004<]*\\]|(\\][^]\001-\004<]|[^]\001-\004<][^]\001-\004<])[^]\001-\004<]*\\]|[^]\001-\004<]\\])(\\]\\]*[^]\001-\004<>][^]\001-\004<]*\\]|[^]\001-\004<][^]\001-\004<]*\\])*(\\]\\]*([^]\001-\004<>][^]\001-\004<]*|)|[^]\001-\004<][^]\001-\004<]*|)|\\]\\]\\]*([^]\001-\004<>][^]\001-\004<]*|)|(\\][^]\001-\004<]|[^]\001-\004<][^]\001-\004<])[^]\001-\004<]*|\\]|[^]\001-\004<]/ } | { /#comment/ = /([^\001-\004-]|-[^\001-\004-])*/ } | <<rec>> | { /[:A-Z_a-z][.0-:A-Z_a-z-]*/ = /#empty/ } | { /#pi/ })*
  with tree
    { "#text" = "

    " } { "#comment" = " Default set of monitored resources " } { "#text" = "
    " } { "WatchedResource" } { "#text" = "
    " } { "#comment" = " Uncomment this to disable session persistence across Tomcat restarts " } { "#text" = "
    " } { "#comment" = "
    <Manager pathname="" />
    " } { "#text" = "

    " } { "#comment" = " Uncomment this to enable Comet connection tacking (provides events
         on session expiration as well as webapp lifecycle) " } { "#text" = "
    " } { "#comment" = "
    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
    " } { "#text" = "

" } { "Manager" } { "#attribute" }
Debug: Augeas[context.xml](provider=augeas): Closed the augeas connection
Error: /Stage[main]/mytomcat::Hardening::Context-xml/Augeas[context.xml]: Could not evaluate: Saving failed, see debug

Что в основном то, что мы видели в том другом посте. С командой вставки вот соответствующий код, который я использую:

class mytomcat::hardening::context-xml {
  require ::augeas
  augeas{ 'context.xml':
    lens    => 'Xml.lns',
    incl    => '/usr/share/tomcat/conf/context.xml',
    changes => [
      'ins #attribute before Context/#text',
      'set Context/#attribute/allowLinking false', 
    ],
  }
}

Что дает мне эту ошибку:

Debug: Augeas[context.xml](provider=augeas): sending command 'ins' with params ["#attribute", "before", "/files/usr/share/tomcat/conf/context.xml/Context/#text"]
Debug: Augeas[context.xml](provider=augeas): Closed the augeas connection
Error: /Stage[main]/mytomcat::Hardening::Context-xml/Augeas[context.xml]: Could not evaluate: Error sending command 'ins' with params ["#attribute", "before", "/files/usr/share/tomcat/conf/context.xml/Context/#text"]/Error sending command 'ins' with params ["#attribute", "before", "/files/usr/share/tomcat/conf/context.xml/Context/#text"]

Я попытался использовать touch вместо insert, основываясь на "справочнике по типам марионеток. "страница для Augeas с этим кодом:

class mytomcat::hardening::context-xml {
  require ::augeas
  augeas{ 'context.xml':
    lens    => 'Xml.lns',
    incl    => '/usr/share/tomcat/conf/context.xml',
    changes => [
      'touch Context/#attribute',
      'touch Context/#attribute/allowLinking',
      'set Context/#attribute/allowLinking false', 
    ],
  }
}

Но затем я получаю сообщение об ошибке:

Error: /Stage[main]/mytomcat::Hardening::Context-xml/Augeas[context.xml]: Could not evaluate: Unknown command touch

РЕДАКТИРОВАТЬ: я попытался выполнить clear вместо касания, но это, похоже, команда NOOP, и она не дает мне другого результата, чем первый, показанный в самом верху этого поста.

Итак, я не могу сделать touch, использование полного XPath для попытки установить атрибут не работает, потому что вы должны добавить узел #attribute перед узлом #text, clear выглядит как NOOP, а затем, когда я пытаюсь сделать команду "вставить" как рекомендовано, тоже не работает.

Любая идея, что здесь происходит не так, и как я могу это исправить?


person Brad Knowles    schedule 22.04.2015    source источник
comment
При работе с --debug --verbose есть ли вообще какой-нибудь полезный вывод?   -  person Felix Frank    schedule 23.04.2015
comment
Я обновил свой пост выше, чтобы показать информацию об отладке, но я не думаю, что это полезно.   -  person Brad Knowles    schedule 23.04.2015
comment
Какую версию Puppet вы используете? Похоже, что сенсорная команда была добавлена ​​в Puppet 4.0: tickets.puppetlabs.com/browse/PUP- 1413   -  person Peter Souter    schedule 11.12.2015
comment
похоже, это связано с путем, вы можете попробовать изменить touch => /usr/bin/touch   -  person Ernesto Iser    schedule 17.11.2017