Puppet-overview

提供:Dev Guides
移動先:案内検索

Puppet-概要

Puppetは、インフラストラクチャの管理と構成を自動化するためにPuppet Labsによって開発された構成管理ツールです。 Puppetは、Infrastructure as codeの概念を支援する非常に強力なツールです。 このツールは、完全なインフラストラクチャをコード形式に変換するのに役立つRuby DSL言語で記述されており、簡単に管理および構成できます。

Puppetはクライアント/サーバーモデルに従います。この場合、クラスター内の1台のマシンはpuppetマスターと呼ばれるサーバーとして機能し、もう1台のマシンはノード上のスレーブと呼ばれるクライアントとして機能します。 Puppetには、初期構成から特定のマシンのサポート終了まで、システムを最初から管理する機能があります。

Puppet Systemの機能

Puppetの最も重要な機能は次のとおりです。

べき等

Puppetはそれをユニークにするmakes等性をサポートしています。 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リソースは、特定のマシンをモデリングするための重要なコンポーネントです。 これらのリソースには独自の実装モデルがあります。 Puppetは同じモデルを使用して、特定のリソースを目的の状態に取得します。

プロバイダ

プロバイダーは基本的に、Puppetで使用される特定のリソースの履行者です。 たとえば、パッケージタイプ「apt-get」と「yum」はどちらもパッケージ管理に有効です。 特定のプラットフォームで複数のプロバイダーが利用できる場合があります。 ただし、各プラットフォームには常にデフォルトのプロバイダーがあります。

マニフェスト

マニフェストは、ターゲットシステムを構成するために関数またはクラス内で結合されるリソースのコレクションです。 システムを構成するために、Rubyコードのセットが含まれています。

モジュール

モジュールはPuppetの主要な構成要素であり、リソース、ファイル、テンプレートなどのコレクションとして定義できます。 それらは、同じフレーバーであると定義されているさまざまな種類のOSに簡単に配布できます。 簡単に配布できるため、1つのモジュールを同じ構成で複数回使用できます。

テンプレート

テンプレートは、Ruby式を使用して、カスタマイズされたコンテンツと変数入力を定義します。 カスタムコンテンツの開発に使用されます。 テンプレートはマニフェストで定義され、システム上の場所にコピーされます。 たとえば、httpdをカスタマイズ可能なポートで定義する場合は、次の式を使用して実行できます。

Listen <% = @httpd_port %>

この場合のhttpd_port変数は、このテンプレートを参照するマニフェストで定義されています。

静的ファイル

静的ファイルは、特定のタスクを実行するために必要になることがある一般的なファイルとして定義できます。 Puppetを使用して、ある場所から別の場所に簡単にコピーできます。 すべての静的ファイルは、モジュールのファイルディレクトリ内にあります。 マニフェスト内のファイルの操作は、ファイルリソースを使用して行われます。