Puppet Enterprise 2017.2

次の図は、Puppet Enterpriseの標準インストール時のアーキテクチャを示したものです。 各種のコンポーネントとサービスが含まれています。

PE architecture diagram(クリックして拡大)

マスターオブマスター(MoM)

マスターオブマスター(MoM)はPuppet masterとも呼ばれ、Puppet Enterpriseでのアクティビティとプロセスの中心ハブになっています。 ここでPuppetコードがコンパイルされ、agentカタログが作成されます。また、SSL証明書の確認と署名も行われます。

Puppet Enterpriseには、モノリシックインストールと分割インストールの2つのインストール方法があります。 モノリシックインストールでは、MoMが1つのノード上ですべてのサービスをホストします。 分割インストールでは、MoM、Puppet Enterprise Webコンソール、PuppetDB (およびPostgreSQL)が、それぞれ別々のノード上でホストされます。

どちらのインストールアーキテクチャでも、MoMには常にコンパイルmasterとPuppetサーバーが含まれます。 インストールの規模が拡大した場合、コンパイルmasterを追加して、agentカタログのコンパイル負荷を分散することができます。

Puppet Enterpriseインストールアーキテクチャの選択について、詳しくは最新のハードウェアの推奨事項 を参照してください。

以下に、MoMとコンパイルmasterに関連付けられた主要なサービスおよびコンポーネントを示します。

コンパイルmaster

すべてのコンパイルmasterには、Puppetサーバー、カタログコンパイラ、ファイル同期インスタンスが含まれます。 インフラの規模が拡大した場合、コンパイルmasterを追加して処理性能を拡大することができます。

Puppetサーバー

Puppetサーバーは、MoM上のJava Virtual Machine (JVM)で稼働するアプリケーションです。 認証局サービス向けのエンドポイントをホストする以外に、カタログコンパイラを駆動します。カタログコンパイラは、Puppetコードとその他の各種データソースを使用して、Puppet agentノード向けの設定カタログをコンパイルします。 Puppetサーバーサービスの詳細については、Puppetサーバーのマニュアルを参照してください。

カタログコンパイラ

管理対象ノードを設定するとき、Puppet agentはカタログと呼ばれるドキュメントを使用しますが、これはMoMまたはコンパイルmasterからダウンロードしたものです。 カタログには、ノード上で管理が必要な各リソースに対して、あるべき状態が記述されています。また、一定の順序で管理する必要のあるリソースの依存関係情報を指定することができます。

ファイル同期

ファイル同期は、複数のコンパイルmaster間でPuppetコードの同期を維持します。 Webエンドポイントからのトリガーにより、ファイル同期はマスターオブマスターズ(MoM)の作業ディレクトリから変更を取得し、そのコードをライブコードディレクトリにデプロイします。 次に、このコードをすべてのコンパイルmasterにデプロイすることで、マルチmaster構成に含まれるすべてのmasterの同期を維持し、準備ができたPuppetコードのみがデプロイされるようにします。

このサービスの使用方法の詳細は、ファイル同期APIマニュアルを参照してください。

認証局

Puppet内部の認証局(CA)サービスは、ノードからの証明書署名リクエストを承認し、証明書と証明書取り消しリスト(CRL)をノードに提供し、必要に応じて、証明書の署名または取り消しコマンドを承認します。

CAサービスは、標準Puppetのssldirにある.pemファイルを使用して、証明書を保存します。 標準のpuppet certコマンドを使用すると、これらの証明書の表示、署名、取り消しを含む操作を実行できます。

Puppet CAに関する注意

アーキテクチャとセキュリティの要件に合わせて、MoMまたは独自ノードのどちらでもCAをホストすることができます。 コンパイルmaster上のCAサービスは、デフォルトで、CAに対するCAリクエストをプロキシするように設定されています。

また、Puppet CAを外部CAで置き換えることができます。

Puppet agent

MoMまたはコンパイルmasterをインストールすると、Puppet agentも一緒にインストールされます。

Puppet agent

Puppet agentアプリケーションは、通常バックグラウンドのサービスとして管理対象ノード上で実行されます。 管理対象ノードには、MoMとすべてのコンパイルmasterが含まれます。

Puppet agentは定期的にmasterにfactを送信し、カタログをリクエストします。 masterは複数の情報ソースを用いてカタログをコンパイルし、そのカタログをagentに返します。

カタログを受け取ると、Puppet agentはカタログに記述されているリソースをそれぞれ確認します。 も記述されている“あるべき状態”とは異なるリソースを見つけたら、それらを正しい状態になるよう変更します (no-opモードの場合は変更が必要である事をレポートします。 )。

カタログの適用後、Puppet agentはレポートをmasterに送ります。 agentから送られたレポートは、すべてPuppetDBに保存され、PEコンソールからアクセスすることができます。

Puppet agentは、*nixシステムとWindowsシステムで稼働します。

Puppet agentには、以下のコンポーネントが含まれます。

MCollective

MCollectiveは、タスクベースの分散オーケストレーションシステムです。 MCollectiveを含むノードは、メッセージバスを介してコマンドをリッスンし、認可されたリクエストがあれば個別に対応します。 そのため、中央のインベントリ情報を使用しなくても、リアルタイムでインフラを調査して制御することができます。

Facter

Facterは、複数のプラットフォームに対応したPuppetのシステムプロファイリングライブラリです。 Puppetマニフェスト内の変数として提供されるfactを、ノードごとに取得してレポートします。

Puppet agentはカタログをリクエストする前に、Facterを使用して、実行マシンのシステム情報を収集します。

たとえば、osというfactはホストオペレーティングシステムに関する情報を返し、networkingはシステムのネットワーキング情報を返します。 それぞれのfactには、さらに詳しい情報を収集するための各種の要素が含まれています。 networkingというfactに含まれるnetworking.hostnameは、システムのホスト名を返します。

Facterには主要factのリストが組み込まれていますが、必要に応じて独自にカスタムfactを構築できます。

また、factを使用してノードの稼働状態を特定することができ、ノードをグループ化してNCに分類することもできます。

Puppet Enterpriseサービス

以下のサービスを使用すると、Puppet Enterpriseの機能とツールを最大限に活用することができます。 これらのサービスは互いに関係を持ち、Puppet Enterpriseを含むインフラを管理するための強力かつ柔軟な手段となります。

上述したサービスとコンポーネントはmasterおよびagent上で実行され、オープンソースのPuppetでも使用できますが、以下に記載するサービスを使用できるのはPuppet Enterpriseのお客様のみです。

コンソールサービス

Puppet Enterprise Webコンソールのサービスには以下が含まれます。

  • Puppet Enterprise Webコンソール
  • ロールベースのアクセス制御(RBAC)とアクティビティサービス
  • Classifier

Puppet Enterprise Webコンソール

Puppet Enterprise Webコンソールは、Webベースのシステム管理用ユーザインターフェースです。 コンソールでは以下を実行できます。

  • ノード上のリソースのリアルタイムでの閲覧と比較
  • イベントとレポートの分析による、インフラの経時変化の視覚化
  • ノード上のインベントリデータとバックアップファイルコンテンツの閲覧
  • ノードのグループ化と分類、カタログ内のPuppetクラスの制御
  • 外部ユーザディレクトリの統合を含むユーザアクセスの管理

Puppet Enterpriseが作成および収集したデータをコンソールから利用して、インフラの状況を把握する方法については、設定管理の概要を参照してください。

RBAC

Puppet Enterpriseでは、RBACを使用してユーザのパーミッションを管理できます。 パーミッションは、指定されたオブジェクトに対してユーザが実行できるアクションを定義したものです。 例えば以下のようなものです。

  • ユーザは、パスワードを忘れた別のユーザに対して、パスワードリセットトークンを付与できるか

  • ユーザは、ローカルユーザのロールとパーミッションを編集できるか

  • ユーザは、ノードグループ内のクラスパラメータを編集できるか

RBACサービスは外部のLDAPディレクトリに接続できます。 つまり、Puppet Enterprise内でローカルユーザを作成して管理することも、既存のディレクトリからユーザとグループをインポートすることも、両方を組み合わせて使用することもできます。 Puppet EnterpriseはOpenLDAPとActive Directoryをサポートしています。

Puppet Enterpriseに対するアクセス管理の詳細については、RBAC概要を参照してください。

RBACサービスとアクティビティサービスのAPI

Puppet Enterprise Webコンソールを介して、RBACサービスおよびアクティビティサービスを対話方式で使用できます。 または、RBACサービスAPIアクティビティサービスAPIを使用できます。 アクティビティサービスは、ユーザロール、ユーザ、ユーザグループのイベントをロギングします。

Puppet Access (token auth)

Puppet Enterpriseユーザは、特定のPuppet EnterpriseコマンドラインツールとAPIエンドポイントに対するアクセスを認証するためのトークンを生成します。 認証トークンは、以下のPuppet Enterpriseサービスおよびツールへのアクセス管理に使用されます。

認証トークンは、RBACを介してユーザに付与されるパーミッションと関連付けられており、HTTPリクエストに対する適切なアクセスをユーザに提供します。

Classifier

Puppet Enterpriseには専用のNode Classifier (NC)が付属しており、Puppet Enterprise Webコンソールに組み込まれています。

分類とは?

分類は、管理対象ノードの設定時にクラスを割り当てることです。 クラスは、複数のモジュールで提供されるPuppetコードで、管理対象ノードの機能を定義したり、特定の設定と値をノードに適用したりするものです。 たとえば、すべての管理対象ノード間で時間を同期する必要があるとします。 その場合、NC内でノードをグループ化し、このグループにNTPクラスを割り当て、このクラスのパラメータが特定のNTPサーバーを指すように設定します。 このようにノードをグループ化することを、分類と呼んでいます。

ユーザは独自のクラスを作成できますが、Puppetコミュニティによって作成されている多数のクラスを利用することもできます。 既存のクラスを使用すると、新たなバグが発生する可能性を抑えて、時間を節約することができます。 Puppet Forgeで紹介されているモジュールの多くは、Puppetによって承認またはサポートされています。

Puppet Enterprise WebコンソールでのNCを使用したノード管理について、詳細は分類の使用開始を参照してください。

NC APIを使用してノードを分類することもできます。

コードマネージャとr10k

Puppet Enterpriseには、Puppetコードの管理およびデプロイ用ツールとしてコードマネージャとr10kが含まれています。 コードマネージャとr10kは、ユーザがgit内に保持するコードに基づいて、Puppetモジュールをインストールし、環境を作成して維持し、masterにコードをデプロイします。 両ツールによってmasterにコードが同期されるので、agentの実行を妨げることなく、すべてのサーバーが同時に新しいコードを使用し始めることができます。

コードマネージャとr10kはどちらもPuppet Enterpriseに組み込まれているので、インストールは不要ですが、gitに関する基本的な知識は必要です。 これらのコード管理ツールの詳細については、Puppetコードの管理とデプロイを参照してください。

コードマネージャに付属しているコマンドラインツールを使用すると、コマンドラインでコードのデプロイを実行できます。

オーケストレーションサービス

オーケストレーションサービスは、PuppetアプリケーションオーケストレーションとPuppetオーケストレータを駆動するための基盤となるツールセットです。

Puppetアプリケーションオーケストレーションは、Puppet言語の拡張機能とコマンドラインツールを提供しており、マルチサービスアプリケーションやマルチノードアプリケーションの設定および管理に役立ちます。 具体的に説明すると、アプリケーションオーケストレーションは以下を指します。

  • 分散アプリケーションに含まれるコンポーネント間の設定関係を記述したPuppet言語要素

たとえば、負荷バランサ、アプリケーション/Webサーバー、データベースサーバーからなる3層スタックアプリケーションインフラがある場合、それぞれのサーバーは互いに依存関係を持ちます。 アプリケーションを正常に立ち上げるには、アプリケーションサーバー側でデータベースサービスの場所と接続方法を把握している必要があります。 また、負荷バランサが多数のアプリケーションサーバーに対する要求を分散するように、自動的な自己設定を行う必要もあります。 さらに、これらのマシンの設定を更新する場合や、新しいアプリケーションリリースを展開する場合、3つの層を正しい順序で再構成する必要があります。

  • ノードレベルから環境レベルまで、順序付けられた設定の適用をオーケストレートするサービス

Puppetオーケストレータは、オーケストレーションジョブの計画、実行、検査用のコマンドラインツールです。 たとえば、このツールを使用して、環境内で宣言されたアプリケーションインスタンスを確認することができます。また、通常の30分間隔でノードがチェックインするのを待つことなく、環境レベルで変更を適用することもできます。

オーケストレーションサービスは、PuppetDBと相互作用してノードに関するfactを取得します。 オーケストレータジョブを実行するには、最初にPuppet Accessへの認証を実行する必要があります。これにより、RBACで管理されているユーザとパーミッションプロファイルが検証されます。

Puppet Enterpriseのデータベース

PostgreSQL

Puppet EnterpriseはバックエンドデータベースとしてPostgreSQLを使用します。 既存のインスタンスを使用することも、Puppet Enterpriseで新しいインスタンスをインストールして管理することもできます。 Puppet EnterpriseのPostgreSQLインスタンスには、以下のデータベースが含まれます。

データベース 説明
pe-activity 誰が、何を、いつ実施したかを含めた、分類子からのアクティビティデータ
pe-classifier 分類データ、すべてのノードグループ情報
pe-puppetdb エクスポートしたリソース、カタログ、facts、レポート(詳しくは下記を参照)
pe-rbac ユーザー、パーミッション、AD/LDAP情報
pe-orchestrator ジョブ実行の詳細(ユーザー、ノード、実行結果)

上記データベースの管理方法については、Puppet Enterpriseのデータベースの管理を参照してください。

PuppetDB

PuppetDBは、Puppetインフラ全体で生成されたデータを収集します。 PuppetDBにより、エクスポートリソースなどの高度なPuppet機能が使用できるようになります。また、Puppet Enterpriseに含まれる各種のコンポーネントとサービスは、このデータベースからデータにアクセスします。 Puppet agentの実行レポートは、PuppetDBに保存されます。

PuppetDBの詳細については、PuppetDBの概要を参照してください。

セキュリティと通信

次の表に、Puppet Enterpriseに含まれるサービスとコンポーネントが使用する通信およびセキュリティプロトコルの詳細を示します。

サービス/コンポーネント 通信プロトコル 認証 認可
Puppetサーバー HTTPS、SSL/TLS Puppet CAによるSSL証明書の検証 trapperkeeper-auth
認証局 HTTPS、SSL/TLS Puppet CAによるSSL証明書の検証 trapperkeeper-auth
Puppet agent SSL/TLS Puppet CAによるSSL証明書の検証 n/a
PuppetDB HTTPS (外部)またはHTTP (ループバックインターフェース) Puppet CAによるSSL証明書の検証 SSL証明書のホワイトリスト
PostgreSQL TCP (PostgreSQL)、SSL (Puppet Enterprise) Puppet CAによるSSL証明書の検証 SSL証明書のホワイトリスト
Activityサービス SSL Puppet CAによるSSL証明書の検証、トークン認証 RBACユーザベース認可
RBAC SSL Puppet CAによるSSL証明書の検証、トークン認証、セッションベースの認証 RBACユーザベース認可
Classifier SSL Puppet CAによるSSL証明書の検証、トークン認証、セッションベースの認証 RBACユーザベース認可
コンソールサービスUI SSL セッションベースの認証 RBACユーザベース認可
オーケストレータ HTTPS、Secure Websocket RBACトークン認証 RBACユーザベース認可
PXP agent Secure Websocket Puppet CAによるSSL証明書の検証 n/a
PCPブローカ Secure Websocket Puppet CAによるSSL証明書の検証 trapperkeeper-auth
ファイル同期 HTTPS、SSL/TLS Puppet CAによるSSL証明書の検証 trapperkeeper-auth
コードマネージャ HTTPS。HTTP、HTTPS、SSHを介してリモートでコードを取得 (gitを使用) RBACトークン認証。リモートモジュールソースの場合、HTTP(S) BasicまたはSSHキー RBACユーザベース認証。リモートモジュールソースの場合、HTTP(S) BasicまたはSSHキー
Razor HTTPS、SSL Apache Shiro認証 Apache Shiroのユーザとロール
MCollective SSL Puppet CAによるSSL証明書の検証 n/a

コンポーネントバージョンのトラッキング

最近のPuppet Enterpriseリリースのコンポーネントバージョンは、上記のPuppet Enterpriseソフトウェアコンポーネントのバージョンと、ここに記載されていない一部のソフトウェアバージョンをトラッキングします。

Back to top