如何在 conf 文件中没有 header 部分的情况下更新 Puppet ini_setting 或 ini_subsetting 资源?
How to update Puppet ini_setting or ini_subsetting resource without section header in conf file?
我想知道是否有人可以帮助我解决我的 conf 文件问题。我需要获得如下所示的输出,但在使用 inifile 时遇到问题。我把我的代码和测试输出放在下面。由于“[]”,我的服务无法启动。非常感谢您的意见和想法。谢谢!
预期输出
cat /etc/service.conf
info something something...
without section header
setting1=value1
测试
testscript1.pp
ini_setting {'setx':
ensure => present,
path => '/etc/service.conf',
key_val_separator => '=',
setting => 'setting1',
value => 'value1',
}
testscript1.pp
的输出
cat /etc/service.conf
info something something...
[setx]
setting1=value1
testscript2.pp
$defaults = {
ensure => present,
path => '/etc/service.conf',
key_val_separator => '=',
}
$settings = {
' ' => {
'setting1' => 'value1',
}
}
create_ini_settings($settings,$defaults)
testscript2.pp
的输出
cat /etc/service.conf
info something something...
[ ]
setting1=value1
由于我真的很想删除 []
字符,因为它在服务重启期间会导致错误,所以我使用了 section_prefix => '#',
。第一个傀儡代理 运行 运行顺利。现在的问题是,如果 Puppet 代理 运行 的频率时间(比如每小时),由于缺少部分 header,它会在 conf 文件中 auto-append 详细信息。我决定使用 ini_subsetting
但我遇到了错误。
testscript3.pp
ini_subsetting {'subset':
ensure => present,
section => '',
key_val_separator => '=',
path => '/etc/service.conf',
setting => 'setting1',
subsetting => '',
value => 'value1',
}
testscript3.pp
的输出
Error: Failed to apply catalog: Parameter path failed on Ini_subsetting[subset]: File paths must be fully qualified, not '/etc/service.conf'.
非常感谢任何建议或建议。
谢谢。
你试过 testscript1.pp 和 section => ''
了吗?
看起来像这样:
ini_setting {'setx':
ensure => present,
path => '/etc/service.conf',
key_val_separator => '=',
section => '',
setting => 'setting1',
value => 'value1',
}
输出将是:
cat /etc/service.conf
info something something...
setting1=value1
或者您可以尝试使用 force_new_section_creation => false
,因为它在默认情况下是正确的,并且会强制创建一个部分,如模块的 reference.
中所述
至于您的第 3 个示例,它可能因空白 subsetting
参数而失败。 ini_subsetting
资源类型需要 setting
和 subsetting
参数才能工作。
如果您正在管理的文件没有某种节标记,那么它就不是 INI 文件,即使在 puppetlabs/inifile 模块支持的广义意义上也是如此。据我所知,您需要选择不同的方法来管理文件。
您可以考虑对整个文件进行模板化,或者为其编写自定义类型和提供程序,但在遇到这么多麻烦之前,您应该考虑是否有来自 puppetlabs/stdlib 的旧 file_line
资源足以满足您的需求。
我想知道是否有人可以帮助我解决我的 conf 文件问题。我需要获得如下所示的输出,但在使用 inifile 时遇到问题。我把我的代码和测试输出放在下面。由于“[]”,我的服务无法启动。非常感谢您的意见和想法。谢谢!
预期输出
cat /etc/service.conf
info something something...
without section header
setting1=value1
测试
testscript1.pp
ini_setting {'setx':
ensure => present,
path => '/etc/service.conf',
key_val_separator => '=',
setting => 'setting1',
value => 'value1',
}
testscript1.pp
的输出cat /etc/service.conf
info something something...
[setx]
setting1=value1
testscript2.pp
$defaults = {
ensure => present,
path => '/etc/service.conf',
key_val_separator => '=',
}
$settings = {
' ' => {
'setting1' => 'value1',
}
}
create_ini_settings($settings,$defaults)
testscript2.pp
的输出cat /etc/service.conf
info something something...
[ ]
setting1=value1
由于我真的很想删除 []
字符,因为它在服务重启期间会导致错误,所以我使用了 section_prefix => '#',
。第一个傀儡代理 运行 运行顺利。现在的问题是,如果 Puppet 代理 运行 的频率时间(比如每小时),由于缺少部分 header,它会在 conf 文件中 auto-append 详细信息。我决定使用 ini_subsetting
但我遇到了错误。
testscript3.pp
ini_subsetting {'subset':
ensure => present,
section => '',
key_val_separator => '=',
path => '/etc/service.conf',
setting => 'setting1',
subsetting => '',
value => 'value1',
}
testscript3.pp
的输出Error: Failed to apply catalog: Parameter path failed on Ini_subsetting[subset]: File paths must be fully qualified, not '/etc/service.conf'.
非常感谢任何建议或建议。
谢谢。
你试过 testscript1.pp 和 section => ''
了吗?
看起来像这样:
ini_setting {'setx':
ensure => present,
path => '/etc/service.conf',
key_val_separator => '=',
section => '',
setting => 'setting1',
value => 'value1',
}
输出将是:
cat /etc/service.conf
info something something...
setting1=value1
或者您可以尝试使用 force_new_section_creation => false
,因为它在默认情况下是正确的,并且会强制创建一个部分,如模块的 reference.
至于您的第 3 个示例,它可能因空白 subsetting
参数而失败。 ini_subsetting
资源类型需要 setting
和 subsetting
参数才能工作。
如果您正在管理的文件没有某种节标记,那么它就不是 INI 文件,即使在 puppetlabs/inifile 模块支持的广义意义上也是如此。据我所知,您需要选择不同的方法来管理文件。
您可以考虑对整个文件进行模板化,或者为其编写自定义类型和提供程序,但在遇到这么多麻烦之前,您应该考虑是否有来自 puppetlabs/stdlib 的旧 file_line
资源足以满足您的需求。