Red Hat Training

A Red Hat training course is available for Red Hat Satellite

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 マスターはこれらのファクトに基づいてカタログをコンパイルし、このカタログをクライアントに送信します。クライアントはすべての変更についてのレポート、または --noop パラメーターが使用されていた場合に加えられていた可能性のある変更についてのレポートを Puppet マスターに送信します。次に Puppet マスターはその結果を Foreman に送信します。このカタログは 1 つの特定のホストのあるべき状態について記述します。また、リソース間の依存関係を含むホストで管理するリソースを一覧表示します。エージェントはカタログをホストに適用します。
マスターとエージェント間のこの通信は、デフォルトで 30 分ごとに行われます。runinterval パラメーターを使用して、/etc/puppet/puppet.conf ファイルに異なる値を指定することができます。また、puppet agent apply を実行して通信を手動で開始することもできます。

9.4.2. Facter およびファクトの使用

Facter は Puppet のシステムインベントリーツールで、これには多数のビルトインファクトが組み込まれています。Facter はローカルホストのコマンドラインで実行し、ファクト名と値を表示できます。Facter はカスタムファクトを使って拡張し、それらを使用してホストのサイト固有の詳細情報を Puppet マニフェストに公開できます。また、Facter が提供するファクトを使用して Puppet マニフェストの 条件式を作成することができます。
Puppet はリソースに基づいてシステムの状態を判別します。たとえば、Puppet に対して httpd サービスは常に実行状態にする必要があると指示することができます。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'
   }
 }

注記

この例では、式 "versioncmp($::operatingsystemmajrelease, '7') >= 0" を使用してバージョン 7 以降の Red Hat Enterprise Linux のテストを実行します。式 "$::operatingsystemmajrelease >= '7'" を使用してこのテストを実行しないでください。この詳細および他の Puppet 機能については、https://docs.puppetlabs.com/references/latest/function.html#versioncmp を参照してください。
Puppet は動作がファクトに非常に似ている他の特殊な変数も設定します。詳細は、Special Variables Added by Puppet[3] および Core Facts[4] を参照してください。

9.4.2.1. 特定ホストのファクトの表示

Puppet は、Facter の組み込まれたコアファクトと、Puppet モジュールにあるカスタムまたは外部のファクトにアクセスできます。利用可能なファクトは、コマンドライン (facter -p) で、また Web UI (モニターファクト) でも表示できます。ファクトの一覧を閲覧したり、検索 ボックスを使用して特定ファクトを検索したりできます。たとえば、「facts.」と入力して利用可能なファクトの一覧を表示します。

注記

利用可能なファクトの一覧の長さは非常に長くなります。UI は一度に 20 ファクトのみを表示します。ファクトの一覧は、詳細を入力すると徐々にフィルターされます。たとえば、「facts.e」と入力すると、「e」文字で始まるすべてのファクトが表示されます。

手順9.19 特定ホストのファクトを表示するには、以下を実行します。

  1. メインメニューで、ホストすべてのホスト をクリックしてから検査する必要のあるホストの名前をクリックします。
  2. 詳細 ペインで、ファクト をクリックし、ホストについての既知のファクトすべてを表示します。

注記

  • このページに一覧表示されているファクトについて、Chart (チャート) をクリックし、このファクト名のすべての管理対象ホストにおけるディストリビューションチャートを表示します。
  • 検索をブックマークすると、今後の検索を容易にできます。検索を絞る場合は 検索 ボタンの横のドロップダウン矢印をクリックして この検索をブックマーク をクリックします。ブックマークされた検索が 検索 ドロップダウンリストに表示され、またメインメニューの 管理ブックマーク にも表示されます。

9.4.2.2. ファクトに基づくホストの検索

Facter 情報を使用して特定のホストを検索できます。これは、facts.architecture = x86_64 などの特定のファクト条件に一致するすべてのホストを検索できることを意味します。

手順9.20 ファクトに基づいてホストを検索するには、以下を実行します。

  1. メインメニューで、モニターファクト をクリックし、ファクト値 ページを表示します。
  2. 検索 フィールドで、フィルターをかけるファクトの名前を入力します。特定の名前、名前/値のペアなどで検索を実行できます。
  3. 検索 をクリックして、一致するホストの一覧を検索します。

9.4.2.3. カスタムファクトのレポート

管理対象ホストからのカスタム情報の取得は Red Hat Satellite 6 で完全にサポートされています。このセクションでは、Puppet Forge から取得される Puppet モジュールの使用について説明しますが、この原則は Puppet モジュールの他のソースにも同様に適用されます。
標準の Facter インターフェースでレポートされるファクト数は拡張することができます。たとえば、ファクトをモジュールの変数として使用するために収集できます。インストールされたパケージを記述するファクトが利用可能な場合、このデータを検索し、情報に基づく設定管理の決定を行うことができます。
ホストにインストールされたパッケージについてのレポートを取得するプロセスは以下のようになります。
  • マニフェスト pkginventory は Puppet Forge から取得され、ベースシステムに保存されます。
  • Puppet モジュールはコンテンツビューに追加され、これはシステムにプロモートされてからそのシステムにデプロイされます。
  • その後、システムのファクトのクエリーがパッケージ名を使用して実行されます。この例では、ホスト hostname および Satellite ユーザーが認証情報の username および password と共に使用されます。以下の 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"}}
    この検索はパッケージのバージョンを返します。これは外部データベースにデータを設定するために使用される可能性があります。

pkginventory Puppet モジュールの追加

pkginventory Puppet モジュールを Red Hat Satellite Server アプリケーションに追加するには、モジュールを https://forge.puppetlabs.com/ody/pkginventory から Satellite Server アプリケーションがインストールされているベースシステムにダウンロードし、以下の手順に従います。
Puppet モジュールは、通常 Puppet モジュールというカスタムリポジトリーに保存されます。以下の手順では、カスタムリポジトリーがこの名前で作成されていることを想定します。Puppet モジュールのカスタムリポジトリーをまだ作成していない場合は、『Red Hat Satellite クイックスタートガイド』 の Creating Custom Products and Enabling Repositories (カスタム製品の作成およびリポジトリーの有効化) を参照してください。

手順9.21 Puppet モジュールをリポジトリーにアップロードするには、以下を実行します。

  1. Puppet モジュールをベースシステムにダウンロードします。ダウンロードされているモジュールには、.tar.gz 拡張子が使用されます。
  2. コンテンツ製品 をクリックしてから、Puppet モジュールリポジトリーに関連付けられた 名前 フィールドの製品名をクリックします (例: Custom Products (カスタム製品))。
  3. リポジトリー タブで、変更する Puppet モジュールリポジトリーを選択します (例: Puppet Modules)。
  4. Puppet モジュールのアップロード セクションで、参照 をクリックし、ダウンロードしたモジュールに移動します。
  5. アップロード をクリックします。
Puppet モジュールをクライアントやコンテンツホストに配信するには、モジュールはコンテンツビューに適用し、公開される必要があります。以下の手順に従ってモジュールをコンテンツビューに追加します。

手順9.22 モジュールをコンテンツビューに追加するには、以下を実行します。

  1. コンテンツコンテンツビュー をクリックして、名前 メニューからコンテンツビューを選択します。
  2. Puppet モジュール タブで、新規モジュールの追加 をクリックします。インストールされたモジュールの一覧が表示されます。
  3. アクション 列で、バージョンの選択 をクリックして追加するモジュールを選択します。利用可能なバージョンの一覧が表示されます。
  4. 追加するモジュールのバージョンの横にある バージョンの選択 をクリックします。
  5. 新規バージョンの公開 をクリックして新規コンテンツビューを作成します。
  6. オプションで説明を追加し、保存 をクリックします。


[3] https://docs.puppetlabs.com/puppet/3.7/reference/lang_facts_and_builtin_vars.html#special-variables-added-by-puppet
[4] https://docs.puppetlabs.com/facter/latest/core_facts.html