我有一个configuration文件在augeas使用自定义镜头输出数据如下。
/files/opt/../server.conf/target[1] = "general" /files/opt/../server.conf/target[1]/serverName = "XXX" /files/opt/../server.conf/target[1]/guid = "XXX0XXX" /files/opt/../server.conf/target[2] = "sslConfig" /files/opt/../server.conf/target[2]/sslKeysfilePassword = "$1$XXXXX"
这很好 – 一些目标名称包含冒号等,所以我需要使用目标[x]格式。
什么是正确的插件语法来创build一个新的部分在我的INI使用这种语法?
您可以使用:
set /files/opt/.../server.conf/target[. = 'newsection'] 'newsection'
如果该部分不存在,它将创build它。 然后,您可以使用它来添加此部分下的密钥。 这个代码是幂等的,所以它可以安全地用于你需要密钥的每个部分,因为它只会创build该部分,如果它还不存在。
为了logging,如果你真的希望新的部分出现在现有的部分之前,你可以使用ins ,例如:
# Add a new target node before the sslConfig target ins target before /files/opt/.../server.conf/target[. = 'sslConfig'] # Set the target name to "newsection" by matching the node right before the "sslConfig" target set /files/opt/.../server.conf/target[following-sibling::*[1][label() = 'target'][. = 'sslConfig']] 'newsection'
请注意,上面的代码不是幂等的,不像我粘贴的第一个代码。 如果您使用Puppet使用Augeas,则可能需要添加一个onlyif语句以幂等方式应用此类更改。