web-dev-qa-db-ja.com

/ etc / hostsを使用したPuppetAugeas

私は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'",
           }

誰かが私をこれについて正しい方向にナッジするのを手伝ってくれる?

1
Bovril

ホストエントリを管理するには、 Host リソースタイプを使用する必要があります。

このタイプはデフォルトでPuppetに付属していますが、 augeasproviders モジュール(特にaugeasproviders-baseモジュール)を使用することで、Augeas(私がお勧めします)でも使用できます。

2
ℝaphink

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に存在しない場合にのみその行が追加されます。

0
Sree