3

我正在尝试使用 puppet 来编辑 jenkins config.xml。由于各种原因,我认为 augeas 最有意义,而且我几乎拥有我需要的东西,但格式非常粗糙。

这是我的木偶文件:

augeas { 'jenkins_config.xml' :
  incl    => '/tmp/config.xml',
  lens    => 'Xml.lns',
  context => '/files/tmp/config.xml/hudson',
  changes => [
    "set securityRealm/#attribute/class hudson.security.PAMSecurityRealm",
    "set securityRealm/#attribute/plugin pam-auth@1.0",
    "set securityRealm/serviceName/#text sshd",
  ],
}

我在找什么:

<hudson>
  <securityRealm class="hudson.security.PAMSecurityRealm" plugin="pam-auth@1.0">
    <serviceName>sshd</serviceName>
  </securityRealm>
</hudson>

我得到了什么:

<hudson>
<securityRealm class="hudson.security.PAMSecurityRealm" plugin="pam-auth@1.0"><serviceName>sshd</serviceName>
</securityRealm>
</hudson>

内容很好(顺便说一句,这太棒了),但阅读起来并不有趣。augeas 可以为我处理缩进和换行吗?如果我必须自己做,任何人都可以提供关于缩进的提示吗?我的尝试都失败了。

4

1 回答 1

5

简短的回答是你没有。

Augeas(当前)不允许您管理它,它只允许您按原样编辑文件,并使用默认值添加新参数。此外,它无法检测当前标识以重新使用它。

实现所需的一种方法是使用漂亮的打印机命令,并在 Augeas 更改后将其插入,例如:

augeas { 'manage your file':
  changes => [ 'blah'],
} ~>
exec { 'pretty print file':
  command     => '/bin/pretty-print-cmd file',
  refreshonly => true,
}

这将在应用 Augeas 更改时触发漂亮的打印命令。例如,对于漂亮的打印,您可以使用xmlstarlet

于 2013-11-07T09:34:36.507 回答