9.4. ホスト情報の保存および維持
Red Hat Satellite 6 は、アプリケーションの組み合わせを使用してマネージドホストに関する情報を収集し、それらのホストが望ましい状態で維持されるようにします。これらのアプリケーションには、以下が含まれます。
- Foreman: 物理システムと仮想システムのプロビジョニングおよびライフサイクル管理用です。Foreman は、キックスタートや Puppet モジュールなどの各種の方法を使用して、これらのシステムを自動的に設定します。
- Puppet: ホストを設定するためのクライアント/サーバーアーキテクチャーです。Puppet マスター (サーバー) および Puppet エージェント (クライアント) で設定されます。
- Facter: Puppet のシステムインベントリーツール。Facter は、ハードウェアの詳細、ネットワーク設定、OS の種類およびバージョン、IP アドレス、MAC アドレス、SSH キーなど、ホストに関する基本的な情報 (ファクト) を収集します。その後、これらのファクトは Puppet マニフェストで変数として利用できます。
Puppet、Facter およびファクトの使用については、以下で詳述します。
9.4.1. Puppet アーキテクチャー
Puppet は通常、エージェント/マスター(クライアント/サーバーとしても知られる)アーキテクチャーで実行されます。ここで、Puppet サーバーは重要な設定情報を管理し、マネージドホスト(クライアント)は独自の設定カタログのみを要求します。Puppet は 2 つの手順でホストを設定します。
- カタログのコンパイル
- カタログの該当ホストへの適用
エージェント/マスターの設定では、Puppet クライアントは Facter によって収集されるファクトやその他の情報を Puppet マスターに送信します。Puppet マスターは、これらのファクトに基づいてカタログをコンパイルし、このカタログをクライアントに送信します。クライアントは行ったすべての変更のレポートを送信するか、または the-
noop
パラメーターを使用した場合は Puppet マスターに結果を送信し、その結果を Foreman に送信します。このカタログは、1 つの特定ホストの必要な状態を記述します。リソース間の依存関係を含む、そのホストで管理するリソースをリスト表示します。エージェントはカタログをホストに適用します。
マスターとエージェント間の通信は、デフォルトで 30 分ごとに実行されます。
runinterval
パラメーターを使用して、/etc/puppet/puppet.conf
ファイルに別の値を指定できます。puppet agent apply を実行して、通信を手動で開始することもできます。
9.4.2. Facter およびファクトの使用
Facter は Puppet のシステムインベントリーツールで、多数の組み込みファクトが含まれています。Facter は、ローカルホストのコマンドラインで実行して、ファクト名と値を表示できます。カスタムファクトで Facter を拡張し、これを使用してホストのサイト固有の詳細を Puppet マニフェストに公開することができます。Facter が提供するファクトを使用して、Puppet で条件式に通知することもできます。
Puppet はリソースに基づいてシステム状態を決定します。たとえば、
httpd
サービスは常に実行している必要があり、Puppet はそれを処理する方法を知っていることを Puppet に伝えることができます。異なるオペレーティングシステムを管理する場合は、osfamily
ファクトを使用して条件式を作成し、どのサービスを監視するか、どのパッケージをインストールするかを Puppet に伝えることができます。operatingsystemmajrelease
パラメーターおよび versioncmp
パラメーターを使用して、同じオペレーティングシステムの異なるバージョンに基づいて条件式を作成できます。条件式の使用例は、例9.1「条件式とファクトの使用」 を参照してください。
例9.1 条件式とファクトの使用
if $:: osfamily == 'RedHat' { if $::operatingsystemmajrelease == '6' { $ntp_service_name = 'ntpd' } elseif versioncmp($::operatingsystemmajrelease, '7') >= 0 { $ntp_service_name = 'chrony' } }
if $:: osfamily == 'RedHat' {
if $::operatingsystemmajrelease == '6' {
$ntp_service_name = 'ntpd'
}
elseif versioncmp($::operatingsystemmajrelease, '7') >= 0 {
$ntp_service_name = 'chrony'
}
}
注記
この例では、式 "versioncmp ($::operatingsystemmajrelease, '7')>= 0" を使用して、Red Hat Enterprise Linux のバージョン 7 以降をテストします。このテストを実行するには、式 $::operatingsystemmajrelease >= '7' を使用しないでください。この関数およびその他の Puppet 関数の詳細は、https://docs.puppetlabs.com/references/latest/function.html#versioncmp を参照してください。
また、Puppet は、ファクトが多く動作する他の特別な変数も設定します。Special Variables Added by Puppet を参照してください。 また、Core Facts (詳細情報)
9.4.2.1. 特定ホストのファクトの表示
Puppet は、Facter の組み込まれたコアファクトや、Puppet モジュールに存在するカスタムまたは外部のファクトにアクセスできます。コマンドライン(facter -p)および Web UI ( )から利用可能なファクトを表示できます。ファクトのリストを参照するか、Search ボックスを使用して特定のファクトを検索できます。たとえば、"
facts.
"と入力すると、利用可能なファクトのリストが表示されます。
注記
利用可能なファクトのリストは非常に長くなります。UI は一度に 20 ファクトのみを表示します。詳細の入力時のファクトの段階的フィルターのリストです。たとえば、"facts.e" と入力して、"e" で始まるすべてのファクトを表示します。
手順9.19 特定ホストのファクトを表示するには、以下を実行します。
- メインメニューで
をクリックし、検査するホストの名前をクリックします。 - Details ペインで をクリックし、ホストに関する既知のファクトをすべて表示します。
注記
- このページにリストされているファクトについて、をクリックし、このファクト名のすべてのマネージドホストにおけるディストリビューションチャートを表示します。
- 検索をブックマークすると、今後簡単に使用できるようになります。検索を絞り込みたら、ボタンの横にあるドロップダウン矢印をクリックし、 をクリックします。ブックマークされた検索は ドロップダウンリストに表示され、メインメニューの
の下にも表示されます。
9.4.2.2. ファクトに基づくホストの検索
Facter 情報を使用して、特定のホストを検索できます。これは、facts.
architecture = x86_64 などの特定のファクト
基準に一致するすべてのホストを検索できることを意味します。
手順9.20 ファクトに基づいてホストを検索するには、以下を実行します。
- メインメニューで、
をクリックして Fact Values ページを表示します。 - Search フィールドで、フィルタリングするファクトの名前を入力します。特定の名前、名前と値のペアなどで検索できます。
9.4.2.3. カスタムファクトのレポート
管理ホストからのカスタム情報の取得は、Red Hat Satellite 6 で完全にサポートされています。このセクションでは、Puppet Forge から取得した Puppet モジュールを使用していますが、原則は Puppet モジュールの他のソースに対して同等に適用されます。
標準の Facter インターフェイスを介して報告されるファクトの数は拡張できます。たとえば、モジュールの変数として使用するファクトを収集します。インストールされたパッケージを説明するファクトが利用可能な場合は、このデータを検索し、情報に基づいて設定管理の決定を行うことができるようになります。
ホストにインストールされたパッケージについてのレポートを取得するプロセスは以下のようになります。
- マニフェスト
pkginventory
は Puppet Forge から取得され、ベースシステムに保存されます。 - Puppet モジュールはコンテンツビューに追加され、これはシステムにプロモートされてからそのシステムにデプロイされます。
- システムのファクトは、パッケージ名を使用してクエリーされます。この例では、hostname という名前のホストと、認証情報のユーザー 名 および パスワード を持つ Satellite ユーザーを使用している場合、以下の API クエリーは検索文字列 "bash" に一致するファクトを返します。
curl -u username:password -X GET http://localhost/api/hosts/:hostname/facts?search=bash {"hostname":{"pkg_bash":"4.2.45-5.el7_0.4"}}
curl -u username:password -X GET http://localhost/api/hosts/:hostname/facts?search=bash {"hostname":{"pkg_bash":"4.2.45-5.el7_0.4"}}
Copy to Clipboard Copied! 検索は、パッケージバージョンを返します。その後、外部データベースの設定に使用していました。
pkginventory Puppet モジュールの追加
pkginventory
Puppet モジュールを Red Hat Satellite Server アプリケーションに追加するには、https://forge.puppetlabs.com/ody/pkginventory から Satellite Server アプリケーションがインストールされているベースシステムにモジュールをダウンロードし、以下の手順に従います。
Puppet モジュールは通常、Puppet Modules という名前のカスタムリポジトリーに保存されます。以下の手順は、その名前のカスタムリポジトリーを作成していることを前提としています。Puppet モジュールのカスタムリポジトリーを作成していない場合は、『Red Hat Satellite クイックスタートガイドの カスタム 製品の作成 と リポジトリーの有効化 を参照してください』。
手順9.21 Puppet モジュールをリポジトリーにアップロードするには、以下を実行します。
- ベースシステムに Puppet モジュールをダウンロードします。ダウンロードしたモジュールの拡張子は
.tar.gz
になります。 をクリックしてから、Puppet モジュールリポジトリーに関連付けられた Name フィールドで製品名をクリックします。たとえば、Custom Products です。 - Repositories タブで、変更する Puppet Modules リポジトリーを選択します。たとえば、Puppet Modules です。
- Upload Puppet Module セクションで をクリックし、ダウンロードしたモジュールに移動します。
Puppet モジュールをクライアントに配布するには、モジュールはコンテンツビューに適用して公開する必要があります。以下の手順に従って、コンテンツビューにモジュールを追加します。
手順9.22 モジュールをコンテンツビューに追加するには、以下を実行します。
- Puppet モジュール タブで 新規モジュールの 。インストールされたモジュールのリストが表示されます。
- Actions コラムから をクリックし、追加するモジュールを選択します。利用可能なバージョンの表が表示されます。
- 追加するモジュールのバージョンの横にある バージョンのをクリックします。
- 新規バージョンのして、新しいコンテンツビューを作成します。
- 必要に応じて説明を追加し、をクリックします。