私はAugeasにかなり慣れていませんが、それはthe puppetで構成を変更するためのツールであると言われています。
/ etc/hostsに行がまだ存在しない場合は、行を追加する単純なクラスを作成しようとしています。
augeas { "test_config":
context => "/files/etc/hosts/01/",
changes => [
"set ipaddr 192.168.100.3",
"set canonical test.localdomain",
"set alias[1] test",
],
これは私が求めている行を作成します。
ホストファイルは次のようになります
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.3 test.localhost test
192.168.0.4 badger.oam.eeint.co.uk badger
重複したくないので、一致させるためにaugtoolで一致行を作成しました。
augtool> match/files/etc/hosts/3/alias/files/etc/hosts/3/alias = test
私の現在の設定はせいぜい予測できないようです
augeas { "test_config":
context => "/files/etc/hosts/*/",
changes => [
"set ipaddr 192.168.100.3",
"set canonical test.localdomain",
"set alias[1] test",
],
onlyif => "match alias 'test'",
}
誰かが私をこれについて正しい方向にナッジするのを手伝ってくれる?
ホストエントリを管理するには、 Host
リソースタイプを使用する必要があります。
このタイプはデフォルトでPuppetに付属していますが、 augeasproviders モジュール(特にaugeasproviders-baseモジュール)を使用することで、Augeas(私がお勧めします)でも使用できます。
exec
リソースを使用してみませんか?
exec{'serverfault demo':
command => 'echo 192.168.100.3 test.localdomain >> /etc/hosts',
unless => 'grep test.localdomain /etc/hosts',
path => ['/bin','/usr/bin'],
}
これにより、echo
コマンドが実行され、行192.168.100.3 test.localdomain
が/ etc/hostsに存在しない場合にのみその行が追加されます。