首页 > 解决方案 > 如何在 conf 文件中更新没有节标题的 Puppet ini_setting 或 ini_subsetting 资源?

问题描述

我想知道是否有人可以帮助我解决我的 conf 文件问题。我需要得到如下所示的输出,但在使用 inifile 时遇到问题。我已经把我的代码和测试输出放在下面。由于“[]”,我的服务无法启动。非常感谢您的意见和想法。谢谢!

预期产出

cat /etc/service.conf
info something something...
without section header
setting1=value1

测试

测试脚本1.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

测试脚本2.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 代理在其频率时间运行(比如假设每小时),由于缺少节标题,它将自动在 conf 文件中附加详细信息。我决定使用ini_subsetting,但我遇到了错误。

测试脚本3.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'.

任何建议或建议都将受到高度赞赏。

谢谢你。

标签: automationscriptingconfigpuppetdevops

解决方案


你试过你的testscript1.ppsection => ''

它看起来像这样:

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,因为默认情况下它是正确的,并强制创建一个部分,如模块参考中所述。

至于您的第三个示例,它可能由于空白subsetting参数而失败。ini_subsetting资源类型需要和参数才能工作settingsubsetting


推荐阅读