複数のホストからのファクトを含む Puppet によるファイルの作成

複数のホストからのファクトを含む Puppet によるファイルの作成

私は次のような構成ファイルを Puppet で作成しようとしています:

[All]
Hosts=apt-dater@puppetmaster;apt-dater@blaster; (etc...)

基本的に、このファイルには、apt-dater クラスを含む各ノードのエントリが必要です。エクスポートされたリソースを試していますが、それをまとめる明確な方法が見つかりません。このファイルを作成するにはどうすればよいでしょうか?

答え1

個々のタイプのリソースをエクスポートして収集する原理については既に理解されていると思います。ただし、これらの個々のリソースを 1 つのファイルに変換する方法については理解していません。Puppet には、これを行うための 2 つの方法があります。

Augeas は非常に優れたツールですが、独自のレンズを書いて配布し始めると複雑になることがあります。しかし、puppet-concat理解するのは非常に簡単です。次の構文はテストしていませんが、正しい方向に進むはずです。

# apt-dater/manifests/server.pp
class apt-dater::server {
    file { "/somepath/apt-dater/hosts.conf": }
    concat::fragment{ "apt-dater_hosts_header":
        content => "[All]\nHosts=",
        order   => 1,
    }
    Apt-dater::Client <<| |>>
}

# apt-dater/manifests/defines/register.pp
define apt-dater::register($order=10) {
    concat::fragment{ "apt-dater_hosts_$name":
        target  => "/somepath/apt-dater/hosts.conf",
        content => "apt-dater@${name};",
    }
}

# apt-dater/manifests/client.pp
class apt-dater::client {
    @apt-dater::register{ "$hostname": }
}

次にノードを設定します。

# On the central server.
include apt-dater::server

# On each of the client nodes.
include apt-dater::client

関連情報