我需要将“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 的......