第1章 Puppet を使用した設定管理の概要
Puppet を使用して、ホスト設定の管理および自動化を行うことができます。Puppet は宣言型言語を使用してホストの あるべき状態 を記述します。
複数のホストを同時に管理できるため、Puppet は生産性を高めます。同時に、Puppet を使用するとホストの状態を容易に確認し、場合によってはそれを修正できるため、設定に要する労力が軽減されます。
関連情報
- Open Source Puppet のドキュメント
- Puppet Forge — 事前にビルドされた Puppet モジュールのリポジトリー
1.1. Puppet と Satellite の統合方法
Puppet はサーバー/エージェントアーキテクチャーを使用します。Puppet サーバーは、設定定義を保存する中心的なコンポーネントです。Satellite Server または Capsule は通常 Puppet サーバーと共にデプロイされ、Satellite はそのような Puppet サーバーの External Node Classifier (ENC: 外部ノードの分類子) として機能します。ホストは、Puppet サーバーと通信する Puppet エージェントを実行します。
Puppet エージェントはホストの ファクト を収集し、それらを実行ごとに Puppet サーバーに報告します。ホストで puppet facts
を実行して、Puppet ファクト を JSON 形式で表示できます。
Puppet サーバーは ファクト を Satellite に転送し、Satellite は後で使用できるようにファクトを保存します。ファクト およびその他の定義に基づいて、Satellite は Puppet サーバーへの ENC 応答を構築します。Puppet サーバーは、ENC 応答に基づいて カタログ をコンパイルし、カタログ を Puppet エージェントに送信します。
Puppet エージェントは、ホストのシステム状態を評価します。Puppet エージェントが、カタログ で定義されている あるべき状態 と実際の状態の間に ドリフト と呼ばれる違いを検出すると、ホストの状態の修正を適用します。Puppet エージェントは、修正結果を Puppet サーバーに報告し、Puppet サーバーはそれらを Satellite に報告します。
Puppet モジュール
ホストの あるべき状態 が カタログ で定義されます。カタログ は、ホストに割り当てられた 1 つまたは複数の Puppet モジュールの Puppet マニフェストからコンパイルされます。Puppet モジュールは、クラス、マニフェスト、リソース、ファイル、およびテンプレートのコレクションです。Puppet モジュールは、ホスト設定定義のコンポーネントとして機能します。
スマートクラスパラメーター
モジュールがパラメーターの使用をサポートしている場合は、スマートクラスパラメーターを使用して Puppet モジュールのパラメーターをオーバーライドできます。Satellite でパラメーターを キー/値 ペアとして定義できます。これは、ホストパラメーターや Ansible 変数と同様に動作します。
Puppet 環境
複数の Puppet 環境を作成して、設定定義のバージョンを制御したり定義のバリアントを管理したりすることや、実稼働環境にデプロイする前に定義をテストすることもできます。
統合手順の概要
Satellite と Puppet の統合手順の概要は以下のとおりです。
- Puppet 統合を有効にします。
- Puppet エージェントパッケージを Satellite にインポートします。Puppet エージェントパッケージは、Red Hat リポジトリーを有効化 し、アクティベーションキー と コンテンツビュー を使用して、Satellite の他のコンテンツと同様に管理できます。
- プロビジョニング 時、登録 時、そして 手動 またはリモートジョブの実行により、ホストに Puppet エージェントをインストールします。
関連情報
- コンテンツの管理
- ホストの管理 ガイドの ホストの登録
- ホストの管理 ガイドの リモートジョブの設定およびセットアップ
次の手順では、Puppet モジュールを使用して ntp サービスをインストール、設定、および管理する方法を概説し、その例を示します。