人形-概要
Puppetは、インフラストラクチャの管理と構成を自動化するためにPuppetLabsによって開発された構成管理ツールです。Puppetは、コードとしてのインフラストラクチャの概念に役立つ非常に強力なツールです。このツールはRubyDSL言語で記述されており、インフラストラクチャ全体をコード形式に変換するのに役立ちます。コード形式は、簡単に管理および構成できます。
Puppetは、クライアントサーバーモデルに従います。このモデルでは、任意のクラスター内の1台のマシンがサーバーとして機能し、Puppetマスターと呼ばれ、もう1台がノード上のスレーブと呼ばれるクライアントとして機能します。Puppetには、初期構成から特定のマシンのサポート終了まで、システムを最初から管理する機能があります。
操り人形システムの特徴
以下は、Puppetの最も重要な機能です。
べき等
Puppetは、べき等性をサポートしているため、独自性があります。Chefと同様に、Puppetでは、同じマシンで同じ構成セットを複数回安全に実行できます。このフローでは、Puppetはターゲットマシンの現在のステータスをチェックし、構成に特定の変更があった場合にのみ変更を加えます。
べき等性は、マシンの作成からマシンの構成変更まで、ライフサイクル全体を通じて特定のマシンを管理するのに役立ちます。Puppet Idempotency機能は、構成が変更されたときに同じマシンを複数回再構築するのではなく、マシンを何年も更新しておくのに非常に役立ちます。
クロスプラットフォーム
Puppetでは、Puppetリソースを使用するResource Abstraction Layer(RAL)を使用して、実装の詳細や、基盤となる構成で定義されているシステム内での構成コマンドの動作を気にすることなく、システムの指定された構成をターゲットにできます。ファイル。
Puppet-ワークフロー
Puppetは、次のワークフローを使用して、システムに構成を適用します。
Puppetでは、Puppetマスターが最初に行うことは、ターゲットマシンの詳細を収集することです。すべてのPuppetノード(ChefのOhaiと同様)に存在する係数を使用して、すべてのマシンレベルの構成の詳細を取得します。これらの詳細は収集され、Puppetマスターに送り返されます。
次に、パペットマスターは、取得した構成を定義済みの構成の詳細と比較し、定義済みの構成を使用してカタログを作成し、ターゲットのPuppetエージェントに送信します。
次に、Puppetエージェントはこれらの構成を適用して、システムを目的の状態にします。
最後に、ターゲットノードが目的の状態になると、レポートがPuppetマスターに返送されます。これは、カタログで定義されているように、Puppetマスターがシステムの現在の状態を理解するのに役立ちます。
パペット-主要コンポーネント
以下は、Puppetの主要コンポーネントです。
Puppetリソース
Puppetリソースは、特定のマシンをモデル化するための重要なコンポーネントです。これらのリソースには、独自の実装モデルがあります。Puppetは同じモデルを使用して、特定のリソースを目的の状態にします。
プロバイダー
プロバイダーは基本的に、Puppetで使用される特定のリソースのフルフィルメントです。たとえば、パッケージタイプ「apt-get」と「yum」はどちらもパッケージ管理に有効です。特定のプラットフォームで複数のプロバイダーを利用できる場合があります。ただし、各プラットフォームには常にデフォルトのプロバイダーがあります。
マニフェスト
マニフェストは、任意のターゲットシステムを構成するために関数またはクラス内で結合されるリソースのコレクションです。これらには、システムを構成するための一連のRubyコードが含まれています。
モジュール
モジュールはPuppetの主要な構成要素であり、リソース、ファイル、テンプレートなどのコレクションとして定義できます。これらは、同じフレーバーであると定義されているさまざまな種類のOSに簡単に分散できます。簡単に配布できるため、1つのモジュールを同じ構成で複数回使用できます。
テンプレート
テンプレートはRuby式を使用して、カスタマイズされたコンテンツと変数入力を定義します。これらは、カスタムコンテンツの開発に使用されます。テンプレートはマニフェストで定義され、システム上の場所にコピーされます。たとえば、カスタマイズ可能なポートを使用してhttpdを定義する場合は、次の式を使用して定義できます。
Listen <% = @httpd_port %>
この場合のhttpd_port変数は、このテンプレートを参照するマニフェストで定義されています。
静的ファイル
静的ファイルは、特定のタスクを実行するために必要になることがある一般的なファイルとして定義できます。Puppetを使用して、ある場所から別の場所に簡単にコピーできます。すべての静的ファイルは、任意のモジュールのファイルディレクトリ内にあります。マニフェスト内のファイルの操作は、ファイルリソースを使用して行われます。