web-dev-qa-db-ja.com

基本的な人形:ENC、スタイル、ハウツーを使用したインフラストラクチャー構成の記述?

私はこの質問をするのに十分な人形をほとんど知りません。

特定のノードの構成は、いくつかのノード固有の接着剤を備えたモジュールのコレクションで構成されることを理解していると思います。チュートリアルとドキュメントから、ノード固有のリソースはnode /nodename/ { }リソースのmanifests/site.ppファイルにあり、関連するクラスの「インクルード」とノード固有の構成を作成するリソースがあるようです変更。

次に、Foremanなどの外部Node Classifier(ENC))を入力します。

ENCドキュメントを読んだところ、site.ppでnode /nodename/ { }リソースを使用できたが、新しいリソースを宣言できなかった。基本的にはお勧めしません。生成されたYAMLはすべて、単にインクルードと変数設定です。

それで、特定のノードまたはホストグループに固有の構成に対して何をしますか?含まれるすべてのクラスを統合する配線ですか?

ノードに固有のクラスを作成することになりますか?そのクラスをノード固有のモジュールのどこに配置しますか?または、特定のノードに割り当てることができるクラスを使用して、サイト固有の構成のキャッチオールモジュールを作成しますか?

6
Mojo

これに対する1つのアプローチは Designing Puppet – Roles and Profiles で表されます。基本的な原則は次のとおりです。

  • ノードには役割が1つ含まれ、役割は1つだけです。
  • ロールには、サーバーのタイプを定義する1つ以上のプロファイルが含まれています
  • プロファイルには、論理的な技術スタックを定義するモジュールが含まれ、管理されます
  • モジュールはリソースを管理します
  • モジュールは、モジュールの作成対象であるコンポーネントの側面の管理のみを担当する必要があります
4
sciurus

Foremanにパペットマスターからインポートするように指示していると仮定します。その場合は、パペットディレクトリを次のように設定することをお勧めします。

puppet
puppet/manifests
puppet/manifests/site.pp
puppet/manifests/nodes/default.pp
puppet/manifests/nodes/{server-type}.pp
...
puppet/modules
puppet/modules/{module1}
puppet/modules/{module1}/files
puppet/modules/{module1}/manefests
puppet/modules/{module1}/templates
...
etc

次に、この行をsite.ppファイルに含めます。

import 'nodes/*'

次に、default.ppでベースサーバーを作成します。

node default {
    #this is where you put all of the puppet directives you want on every server.
    #for example if you wanted screen on all of your servers
    package{ "screen": ensure -> installed; }
}

次に、ノードの下の別のファイル、たとえばweb.ppにそれを含めて、すべてのWebサーバーのディレクティブを次のように設定します。

node /^web0[1-9]\.example\.com$/ inherits default {
    #this will inherit all of the settings in the default node and then do anything else you add.
    #like installing nginx
    package { "nginx": ensure -> installed; }
}

このdb.ppファイルのように継承をチェーンすることもできます。

node db inherits default {
    #install postgresql-9.3
    package { "postgresql-9.3": ensure -> installed; }
}

node /^db0[1-9]\.example\.com$/ inherits db {
    #This block can even be empty unless you need something here.
}
3
meatflag