Menu Close

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

facter は Puppet のシステムインベントリーツールで、多くの組み込みファクトが含まれています。ローカルホストのコマンドラインで Facter を実行すると、ファクト名および値を表示できます。カスタムファクトと共に Facter を拡張し、これらを使用してホストのサイト固有の情報を Puppet マニフェストに公開することができます。また、Facter が提供するファクトを使用して、Puppet で条件式に通知することもできます。

Puppet はリソースに基づいてシステムの状態を決定します。たとえば、Puppet に httpd サービスが常に実行中であることを Puppet に指示し、Puppet はその処理方法を認識します。異なるオペレーティングシステムを管理する場合は、osfamily ファクトを使用して、監視するサービスやインストールするパッケージに Puppet に指示する条件式を作成できます。operatingsystemmajrelease および versioncmp パラメーターを使用して、同じオペレーティングシステムの異なるバージョンに基づいて条件式を作成できます。以下の例は、ファクトを使用した条件式の使用方法を示しています。

条件式とファクトの使用

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 は、ファクトのように多くの特別な変数も設定します。詳細は、「 Puppet および Core Facts で追加された特殊変数 」を参照してください。

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

Puppet は、ファクトリーの組み込みコアファクトや、Puppet モジュールに含まれるカスタムまたは外部ファクトにアクセスできます。コマンドライン(facter -p)および Web UI(Monitor > Facts)から利用可能なファクトを表示できます。ファクトのリストを参照したり、Search ボックスを使用して特定のファクトを検索したりできます。たとえば、利用可能なファクトのリストを表示するには、「facts」と入力します。

注記

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

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

  1. メインメニューで、Hosts > All Hosts をクリックし、検査するホストの名前をクリックします。
  2. 詳細 ペインで Facts をクリックし、ホストに関するすべての既知のファクトを表示します。
注記
  • このページに一覧表示されているファクトについて、<guibutton>Chart (チャート)</guibutton> をクリックし、このファクト名のすべての管理対象ホストにおけるディストリビューションチャートを表示します。
  • 今後使いやすくするために検索を行うことができます。検索を絞り込んだら、検索ボタンの横にあるドロップダウン矢印をクリックし、この 検索 の Bookmark をクリックします。検索のドロップダウンリストにも、メインメニューの Administer > Bookmarks の下に 検索 が表示されます。

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

ファクトリー情報を使用して、特定のホストを検索できます。つまり、など、特定のファクト条件に一致するすべてのホストを検索でき facts.architecture = x86_64ます。

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

  1. メインメニューで Monitor > Facts をクリックして Fact Values ページを表示します。
  2. Search フィールドに、でフィルタリングするファクトの名前を入力します。特定の名前、名前と値のペアなどで検索できます。
  3. <guibutton>検索</guibutton> をクリックして、一致するホストの一覧を検索します。

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

管理対象ホストからカスタム情報を取得することは、Red Hat Satellite 6 で完全にサポートされています。本セクションでは、Puppet Forge から取得した Puppet モジュールの使用について説明しますが、原則は、他の Puppet モジュールソースに等価に適用されます。

標準の Facter インターフェースを介して報告されるファクトの数を拡張することができます。たとえば、モジュールの変数として使用するファクトを収集するには、次のコマンドを実行します。インストールされたパッケージを記述するファクトが利用可能な場合は、このデータを検索し、情報に基づいて情報に基づいて設定管理の決定を行うことができます。

ホストにインストールされたパッケージについてのレポートを取得するプロセスは以下のようになります。

  • マニフェスト <literal>pkginventory</literal> は 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"}}

    検索により、パッケージバージョンが返されます。これにより、外部データベースを設定するのに使用できます。

4.2.3.1. pkginventory Puppet モジュールの追加

<literal>pkginventory</literal> Puppet モジュールを Red&nbsp;Hat Satellite Server アプリケーションに追加するには、モジュールを <ulink url="https://forge.puppetlabs.com/ody/pkginventory">https://forge.puppetlabs.com/ody/pkginventory</ulink> から Satellite Server アプリケーションがインストールされているベースシステムにダウンロードし、以下の手順に従います。

Puppet モジュールは通常、Puppet Modules という名前のカスタムリポジトリーに保存されます。以下の手順では、その名前でカスタムリポジトリーを作成していることを前提としています。Puppet モジュール用のカスタムリポジトリーを作成していない場合は、『 クイックスタートガイド』の「カスタム 製品の作成 」を参照してください

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

  1. Puppet モジュールをベースシステムにダウンロードします。ダウンロードしたモジュールには .tar.gz 拡張があります。
  2. コンテンツ > 製品をクリックし、Puppet モジュールリポジトリーに関連付けられた Name フィールドで製品名をクリックします。たとえば、カスタム製品など
  3. リポジトリータブで 変更する Puppet Modules リポジトリーを選択します。たとえば、Puppet モジュールなど
  4. Puppet モジュールのアップロードセクションでBrowse をクリックし、ダウンロードしたモジュールに移動します。
  5. アップロード をクリックします。

Puppet モジュールをクライアントやコンテンツホストに配信するには、モジュールはコンテンツビューに適用し、公開される必要があります。以下の手順に従ってモジュールをコンテンツビューに追加します。モジュールをコンテンツビューに追加するには、以下を実行します。

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

  1. コンテンツ > コンテンツビューをクリックしName メニューから Content View を選択します。
  2. Puppet Modules タブで、Add New Module を クリックします。インストール済みモジュールの一覧が表示されます。
  3. Actions コラム から Select a Version をクリックし、追加するモジュールを選択します。利用可能なバージョンの表が表示されます。
  4. 追加するモジュールのバージョンの横にある <guibutton>バージョンの選択</guibutton> をクリックします。
  5. <guibutton>新規バージョンの公開</guibutton> をクリックして新規コンテンツビューを作成します。
  6. オプションで説明を追加し、<guibutton>保存</guibutton> をクリックします。