Puppet は、状態を定義する宣言型のドメイン固有言語 (DSL) を使用します。Puppet コードは、マニフェスト内に書き込まれます。そのコードでは、ファイル、パッケージ、サービスなどのシステムのさまざまな側面を定義するリソースを宣言します。リソースはクラスにグループ化され、各クラスでは、リソースの動作に影響を与える可能性のあるパラメータが公開されています。クラスと構成ファイルが次に、モジュールに整理されます。これらの Puppet の基本的な用語は、以降のセクションでより詳細に説明されています。より完全な定義については、Puppet の用語集 (https://docs.puppet.com/references/glossary.html) を参照してください。
特定の構成に対して宣言する必要のあるさまざまなリソースは、マニフェストと呼ばれるファイル内に格納されます。マニフェストは Puppet コードを含み、Puppet のインフラストラクチャーの中心です。これらのマニフェストは Puppet マスター上にあります。リソース定義を保存する場合は常に、マニフェスト内に保存します。各マニフェストは .pp ファイル拡張子で終わる必要があります。
すべてのノードに適用されるグローバル構成を定義するには、Puppet site.pp マニフェストを使用します。サイトマニフェストには、特定のノードに適用されるノード固有のコードも含めることができます。ノード定義 (または ノード文) は、一致するノードのカタログにのみ含まれる Puppet コードのブロックです。この機能を使用すると、特定のノードに特定の構成を割り当てることができます。詳細は、https://docs.puppet.com/puppet/latest/reference/lang_node_definitions.html を参照してください。
また、いくつかのリソースをグループにまとめるマニフェストを記述することもできます。この場合は、クラスを使用して、指定されたノードにリソースを適用します。Oracle Solaris での Puppet マニフェスト、クラス、およびモジュールの記述を参照してください。
クラスは、まとめてバンドルされる一連の構成です。Puppet クラスには、リソースや変数だけでなく、追加の高度な属性を含めることができます。ノードにクラスを割り当てると、そのノードは、このクラスの一部である構成のすべてを取得します。クラス宣言は、マニフェスト内に含めます。Puppet クラスの記述を参照してください。
Puppet モジュールは、ファイルとディレクトリの自己完結型のコレクションであり、Puppet マニフェストやその他のオブジェクト (ファイルとテンプレートを含む) を含めることができます。モジュール内にある情報はパッケージ化され、Puppet が理解して使用できる方法で整理されています。モジュールは、Puppet が IT インフラストラクチャー内の構成管理に使用できるクラスとタイプを検索する方法です。Puppet は、特定のモジュール内に格納されているすべてのクラスまたは定義済みのタイプを自動的にロードします。マニフェスト内では、これらのクラスまたはタイプのすべてを名前で宣言できます。Puppet モジュールの記述を参照してください。