如何使用Puppet / Augeas管理exim dc_local_interfaces配置?


2

我需要将“ dc_local_interfaces”的值设置为“ 127.0.0.1; :: 1”,但分号可以防止这种情况。

这是我在Puppet中的定义:

augeas { "/etc/exim4/update-exim4.conf.conf":
  lens    => "Shellvars.lns",
  incl    => "/etc/exim4/update-exim4.conf.conf",
  changes => "set dc_local_interfaces 127.0.0.1;::1",
}

我尝试了不同的方法来设置值(不使用撇号,使用撇号,使用反斜杠转义的撇号),但是没有一种有效。使用augtool时,一切正常:

set /files/etc/exim4/update-exim4.conf.conf/dc_local_interfaces "'127.0.0.1;::1'"

当我同时编写问题和进行测试时,我自己找到了答案,但是由于通常没有什么可以作为进出口/人偶的内容,因此我决定将其发布,以希望其他人会发现它有用。您必须在外部使用撇号,以便可以在内部使用引号来再次在内部内部使用转义的撇号。是。而且它实际上看起来比听起来还要难看(空间现在也可以使用):changes =>'set dc_local_interfaces“ \'127.0.0.1; :: 1; test 1 2 3 \'”“,
Larsen

我不确定update-exim4.conf.conf是不是一个shellvars文件……它可能需要自己的镜头。
ℝaphink

可能是这样,但由于找不到,我使用了shellvars镜头。
Larsen 2013年

Answers:


2

(几个小时后,我现在可以直接回答此问题,而无需使用注释(以获得更好的格式))

当我同时编写问题和进行测试时,我自己找到了答案,但是由于通常没有什么可以作为进出口/人偶的内容,因此我决定将其发布,以希望其他人会发现它有用。

您必须在外部使用撇号,以便可以在内部使用引号来再次在内部内部使用转义的撇号。是。而且实际上看起来比听起来还要难看(空间现在也可以工作):

changes => 'set dc_local_interfaces "\'127.0.0.1;::1;test 1 2 3\'"',

0

我的解决方案是这样的:

class exim4::augeas (
  $config = undef,
) {
  if $config {
    create_resources(augeas, $config, $defaults)
  }
  else {
    $hiera_config = hiera_hash('exim4::augeas', undef)
    if $hiera_config {
      create_resources(augeas, $hiera_config)
    }
  }
}

在hiera中:

exim4::augeas:
  'exim4':
    context: '/files/etc/exim4/update-exim4.conf.conf'
    lens: 'Shellvars.lns'
    incl: '/etc/exim4/update-exim4.conf.conf'
    changes:
      - "set dc_other_hostnames \"\'something.test.com\'\""

实际上不是很特别的exim ...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.