Puppet - 完全删除 ini_setting
Puppet - remove ini_setting completely
我使用的是 Puppet 4.5.3 和 ini_setting 模块版本 1.4.2。我需要能够删除 ini 文件中的节。例如:
[header]
ip = '1.1.1.1'
hostname = 'myserver'
port = 80
我可以使用 ensure => absent
参数删除 ini 文件的每个部分,但我找不到删除节 header 的方法,或者最好是在一个命令中删除整个内容。
我剩下的是
[header]
有谁知道如何做到这一点?不幸的是,我需要保留同一文件中的其他节,所以我不能简单地删除该文件。
谢谢,
使用 Augeas 类型:
augeas { 'remove_ini_header':
incl => '/etc/example.ini',
lens => 'IniFile.lns_loose',
changes => 'rm section[. = "header"]',
}
为了稍微分解一下,首先我使用了 built-in IniFile.lns_loose
镜头(即 "generic" INI 文件的松散解析)和 augtool
来查看树的当前状态:
$ augtool -t "IniFile.lns_loose incl /etc/example.ini"
augtool> print /files/etc/example.ini
/files/etc/example.ini
/files/etc/example.ini/section = "header"
/files/etc/example.ini/section/ip = "'1.1.1.1'"
/files/etc/example.ini/section/hostname = "'myserver'"
/files/etc/example.ini/section/port = "80"
整个部分在树的一部分中,因此为该部分调用 rm
将删除整个子树。
要匹配 header 部分,您需要搜索名为 section
的节点,其中值(右侧)为 header
。命令的 [. = "header"]
部分是一个 path expression,用于过滤值为 header
.
的节点
我使用的是 Puppet 4.5.3 和 ini_setting 模块版本 1.4.2。我需要能够删除 ini 文件中的节。例如:
[header]
ip = '1.1.1.1'
hostname = 'myserver'
port = 80
我可以使用 ensure => absent
参数删除 ini 文件的每个部分,但我找不到删除节 header 的方法,或者最好是在一个命令中删除整个内容。
我剩下的是
[header]
有谁知道如何做到这一点?不幸的是,我需要保留同一文件中的其他节,所以我不能简单地删除该文件。
谢谢,
使用 Augeas 类型:
augeas { 'remove_ini_header':
incl => '/etc/example.ini',
lens => 'IniFile.lns_loose',
changes => 'rm section[. = "header"]',
}
为了稍微分解一下,首先我使用了 built-in IniFile.lns_loose
镜头(即 "generic" INI 文件的松散解析)和 augtool
来查看树的当前状态:
$ augtool -t "IniFile.lns_loose incl /etc/example.ini"
augtool> print /files/etc/example.ini
/files/etc/example.ini
/files/etc/example.ini/section = "header"
/files/etc/example.ini/section/ip = "'1.1.1.1'"
/files/etc/example.ini/section/hostname = "'myserver'"
/files/etc/example.ini/section/port = "80"
整个部分在树的一部分中,因此为该部分调用 rm
将删除整个子树。
要匹配 header 部分,您需要搜索名为 section
的节点,其中值(右侧)为 header
。命令的 [. = "header"]
部分是一个 path expression,用于过滤值为 header
.