web-dev-qa-db-ja.com

Puppet / Augeasを使用してeximdc_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'"
2
Larsen

(数時間後、コメントを使用する代わりに直接これに答えることができるようになりました(より良いフォーマットのために))

質問とテストを並行して書いていたので、自分で答えを見つけましたが、exim/puppetは一般的に見つけることがほとんどないので、他の人が役立つことを願ってこれを投稿することにしました。

内側でエスケープされたアポストロフィを再び使用できるようにするには、内側で引用符を使用できるように、外側でアポストロフィを使用する必要があります。はい。そして、実際には思ったよりも醜く見えます(スペースも機能するようになりました):

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

このような私の解決策:

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固有ではありません...

0
Seegras