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

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

我需要将“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'"

答案1

(几个小时后,我现在可以直接回答这个问题,而不是使用评论(为了更好的格式))

当我编写问题并同时进行测试时,我自己找到了答案,但由于关于 exim/puppet 的资料很少,所以我决定发布此答案,希望其他人会发现它有用。

您必须在外面使用撇号,这样您就可以在里面使用引号,以便能够再次在内部使用转义撇号。是的。而且它实际上看起来比听起来更丑(空格现在也可以使用):

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

答案2

我的解决方案如下:

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)
    }
  }
}

在层次上:

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 的......

相关内容