web-dev-qa-db-ja.com

puppetを使用して、クライアントに特定の役割のセットになるように依頼できますか?

最近、puppetmasterとクライアントを稼働させ、クライアントに正しく署名してから、簡単な変更を要求して適用しました。すべて問題ありません。

マシンの数が増えています(> 100)。それらは一貫して名前が付けられていません(歴史的な理由)。それらはいくつかのカテゴリに分類されます(dataserver_type1、dataserver_type2、webserver_type1、webserver_type2 ....のように考えてください)。これらのタイプのマシンの新しいインスタンスは毎週追加されます。

必要なモジュールを含む(たとえば)「dataserver_type1」の「汎用」ノードを宣言し、クライアントpuppet.confに「私はdataserver_type1です」という何かを設定する方法が(まだ)理解できないか、わかりません"ホスト名/ FQDNを使用せずに

カタログ内のノード名を(たとえば)「my-data-server-type1」(認定されたホスト名)として設定すると、ノード名が取得されて機能します。ホスト名にパターンを使用できることは知っていますが、前述したように、サーバー名に一貫性がなく、変更できません。

これは、サーバーが成長し続けるときに、ファイルを編集して各サーバーのノードを手動で追加する必要があることは不誠実なようです。

編集:

深く掘り下げると、rolesが私が望むものかもしれません。しかし、マスターに特定の名前付きサーバーが実行する必要のある役割のリストが含まれている要素がまだあるようです。おそらく私が求めているのは、サーバーを更新しなくても、クライアントが「この役割になりたい」と言うにはどうすればよいのでしょうか。

2
Aitch

解決策を持ち帰り、将来のグーグルのために。入力してくれた他の人に感謝します。

ここでの議論 がありました 解決策を示唆するファイルのセット につながりました。

しかし、私の限られた経験は、これがファイルの場所に関して少し時代遅れであったことを示唆しています。クライアントでは、次のようなファイルが必要です。

root@vbox1-test:/etc/puppet# cat custom_facts.yml 
servertype: webserver-type1

サーバー(puppetmaster)で、提供された2番目のリンクのファイルをたどると、.rbは正常に機能しますが、場所が間違っています(v3.xを使用しています)。次の場所に移動してみてください。

ubuntu@puppetmaster:/etc/puppet/modules/custom/lib/facter$ ls custom_facts.rb
custom_facts.rb

モジュールの.ppファイルなどのいずれかに、次のようなものを追加するだけです。

...
notify { "My servertype is: ${servertype}" : }
...

繰り返しますが、2番目のリンクは、ある種の「case」ステートメントを実行して、使用するモジュール/マニフェストを選択できるという事実をほのめかしています。したがって、サーバーマニフェストに触れることなく、ほとんどのマシンに基本セットのルールを適用し、次に特定のタイプのカスタムルールを適用できます。

クライアントに与える効果は次のようなものです。

root@vbox1-test:/etc/puppet# puppet agent --test
Info: Retrieving plugin
/File[/var/lib/puppet/lib/facter]/ensure: created
/File[/var/lib/puppet/lib/facter/custom_facts.rb]/ensure: defined content as '{md5}xxxxxxxxxxxxxxxxxxxxxxx'
Info: Loading facts in /var/lib/puppet/lib/facter/custom_facts.rb
Info: Caching catalog for vbox1-test
Info: Applying configuration version '1351762428'
My servertype is: webserver-type1
/Stage[main]//Node[default]/Notify[My servertype is: webserver-type1]/message: defined 'message' as 'My servertype is: webserver-type1'
Finished catalog run in 0.05 seconds

私はこれが私に欲しいものを与えてくれるとかなり楽観的であり、マニフェストにサーバー名を付けないようにすることができます。サーバー名はレガシーであり、継続的に成長しています。

0
Aitch

ノードは、マニフェストまたは 外部ノード分類子 (またはその両方)のいずれかで常に中央で定義されます。

クライアントが自分の役割を指定できるようにするENCをまとめることができると思いますが、なぜ各コンピューターに触れてローカルで構成する必要があるのでしょうか。

ノードマニフェストをより適切に整理する必要があるようです。たぶん、新しいノードを作成するたびに重複を減らすためのシステムの「役割」のノード継承と、システム名のセットをカバーするいくつかの優れた正規表現ノード名(たとえば、すべてのwebserver_type2を1つでカバーできない場合があります)正規表現ですが、新しいノードに使用している命名規則をカバーするものを配置してください)。

2
Shane Madden