第6章 レポートテンプレートを使用したホストの監視

レポートテンプレートを使用して Satellite データをクエリーし、ホストのステータス、登録済みのホスト、適用可能なエラータ、適用済みのエラータ、サブスクリプションの詳細、ユーザーアクティビティーなどの情報を取得できます。Satellite に同梱されるレポートテンプレートを使用するか、または要件に合わせて独自のカスタムレポートテンプレートを作成することができます。レポートエンジンは、Embedded Ruby (ERB) 構文を使用します。テンプレートの作成と ERB 構文の詳細は、付録A テンプレート作成の参照 を参照してください。

テンプレートを作成するか、テンプレートのクローンを作成して、クローンを編集します。テンプレートの構文に関するヘルプは、テンプレートをクリックして、ヘルプ タブをクリックします。

6.1. ホスト監視レポートの生成

Satellite Web UI でレポートテンプレートを表示するには、監視 > レポートテンプレート に移動します。

レポートをスケジュールするには、cron ジョブを設定するか、Satellite Web UI を使用します。

手順

  1. Satellite Web UI で、監視 > レポートテンプレート に移動します。
  2. 使用するレポートテンプレートの右にある、生成 をクリックします。
  3. オプション: レポートをスケジュールするには、the 生成日時 フィールドの右側のアイコンをクリックして、レポートを生成する日時を選択します。
  4. オプション: メールアドレスにレポートを送信するには、メールでレポートを送信する チェックボックスを選択して、配信先のメールアドレス フィールドで、必要なメールアドレスを入力します。
  5. オプション: 検索クエリーフィルターを適用します。利用可能な結果すべてを表示するには、フィルターフィールドに何も値を投入しないでください。
  6. 送信 をクリックします。レポートが含まれれる CSV ファイルをダウンロードします。メールでレポートを送信する チェックボックスを選択した場合には、ホストの監視レポートがメールアドレスに送信されます。

CLI をご利用の場合

レポートを生成するには、次の手順を実行します。

  1. 利用可能なレポートテンプレートすべてをリストします。

    # hammer report-template list
  2. レポートを生成します。

    # hammer report-template generate --id template ID

    このコマンドは、レポートが完全に生成されるまで待機してから完了します。レポートをバックグラウンドタスクとして生成する場合は、hammer report-template schedule コマンドを使用できます。

6.2. レポートテンプレートの作成

Satellite では、レポートテンプレートを作成し、要件に合わせてテンプレートをカスタマイズできます。既存のレポートテンプレートをインポートして、スニペットとテンプレートマクロでさらにカスタマイズできます。

レポートテンプレートは Embedded Ruby (ERB) 構文を使用します。ERB 構文とマクロの使用に関する情報を表示するには、Satellite Web UI で、監視 > レポートテンプレート に移動し、テンプレートの作成 をクリックしてから ヘルプ をクリックします。

Satellite でレポートテンプレートを作成すると、セーフモードがデフォルトで有効化されます。セーフモードの詳細は、「レポートテンプレートのセーフモード」 を参照してください。

テンプレートの作成に関する詳細は、付録A テンプレート作成の参照 を参照してください。

レポートテンプレートで使用できるマクロの詳細は、「テンプレートマクロ」 を参照してください。

手順

  1. Satellite Web UI で、監視 > レポートテンプレート に移動して、テンプレートの作成 をクリックします。
  2. 名前 フィールドに、レポートテンプレートの一意名を入力します。
  3. デフォルト を選択して、テンプレートをすべてのロケーションおよび組織で利用できるようにします。
  4. テンプレートエディターで直接テンプレートを作成するか、インポート をクリックしてテキストファイルからテンプレートをインポートします。テンプレートのインポートに関する詳細は、「レポートテンプレートのインポート」 を参照してください。
  5. オプション: 監査コメント フィールドで、このテンプレートに関する有用な情報を追加できます。
  6. 入力 タブをクリックし、名前 フィールドに、テンプレートで参照できる入力の名前を input('name') 形式で入力します。テンプレート本文でこの入力値を参照する前に、テンプレートを保存する必要がある点にご留意ください。
  7. 入力値が必須かどうかを選択します。入力値が必須の場合は、必須 チェックボックスをクリックします。
  8. 値のタイプ リストから、ユーザーが入力しなければならない入力値のタイプを選択します。
  9. オプション: テンプレートの入力にファクトを使用する場合は、詳細 チェックボックスをクリックします。
  10. オプション: オプション フィールドで、ユーザーが選択できるオプションを定義します。このフィールドが未定義のままである場合、ユーザーは必要な値を入力できるフリーテキストフィールドを受け取ります。
  11. オプション: デフォルト フィールドに、デフォルトのテンプレート入力として設定する値 (ホスト名など) を入力します。
  12. オプション: 説明 フィールドに、レポートの生成時に入力に関するインラインヘルプとして表示する情報を入力できます。
  13. オプション: タイプ タブをクリックして、このテンプレートが他のテンプレートに追加されるスニペットかどうかを選択します。
  14. ロケーション タブをクリックして、テンプレートを使用するロケーションを追加します。
  15. 組織 タブをクリックして、テンプレートを使用する組織を追加します。
  16. 送信 をクリックして変更を保存します。

6.3. レポートテンプレートのエクスポート

Satellite で作成するレポートテンプレートをエクスポートできます。

手順

  1. Satellite Web UI で、監視 > レポートテンプレート に移動します。
  2. エクスポートするテンプレートを特定し、アクション コラムの一覧から エクスポート を選択します。
  3. ダウンロードするすべてのレポートテンプレートに対して、この操作を繰り返します。

テンプレートのダウンロードを含む .erb ファイルです。

CLI をご利用の場合

  1. エクスポートで利用可能なレポートテンプレートを表示するには、以下のコマンドを入力します。

    # hammer report-template list

    このコマンドの出力で、エクスポートするテンプレートのテンプレート ID をメモします。

  2. レポートテンプレートをエクスポートするには、以下のコマンドを実行します。

    # hammer report-template dump --id template_ID > example_export.erb

6.4. Satellite API を使用したレポートテンプレートのエクスポート

Satellite report_templates API を使用して、Satellite からレポートテンプレートをエクスポートできます。Satellite API の使用に関する詳細は、『API Guide』を参照してください。

手順

  1. 以下のリクエストを使用して、使用可能なレポートテンプレートの一覧を取得します。

    Example request:

    $ curl --insecure --user admin:redhat \
    --request GET \
    --config https://satellite.example.com/api/report_templates \
    | json_reformat

    この例では、json_reformat ツールを使用して JSON 出力をフォーマットしています。

    Example response:

    {
        "total": 6,
        "subtotal": 6,
        "page": 1,
        "per_page": 20,
        "search": null,
        "sort": {
            "by": null,
            "order": null
        },
        "results": [
            {
                "created_at": "2019-11-20 17:49:52 UTC",
                "updated_at": "2019-11-20 17:49:52 UTC",
                "name": "Applicable errata",
                "id": 112
            },
            {
                "created_at": "2019-11-20 17:49:52 UTC",
                "updated_at": "2019-11-20 17:49:52 UTC",
                "name": "Applied Errata",
                "id": 113
            },
            {
                "created_at": "2019-11-30 16:15:24 UTC",
                "updated_at": "2019-11-30 16:15:24 UTC",
                "name": "Hosts - complete list",
                "id": 158
            },
            {
                "created_at": "2019-11-20 17:49:52 UTC",
                "updated_at": "2019-11-20 17:49:52 UTC",
                "name": "Host statuses",
                "id": 114
            },
            {
                "created_at": "2019-11-20 17:49:52 UTC",
                "updated_at": "2019-11-20 17:49:52 UTC",
                "name": "Registered hosts",
                "id": 115
            },
            {
                "created_at": "2019-11-20 17:49:52 UTC",
                "updated_at": "2019-11-20 17:49:52 UTC",
                "name": "Subscriptions",
                "id": 116
            }
        ]
    }

  2. エクスポートするテンプレートの id をメモし、以下のリクエストを使用してテンプレートをエクスポートします。

    Example request:

    $ curl --insecure --output /tmp/_Example_Export_Template.erb_ \
    --user admin:password --request GET --config \
    https://satellite.example.com/api/report_templates/158/export

    158 は、エクスポートするテンプレートの ID の例である点にご留意ください。

    この例では、エクスポートされたテンプレートは、host_complete_list.erb にリダイレクトされます。

6.5. レポートテンプレートのインポート

作成する新しいテンプレートの本文にレポートテンプレートをインポートできます。Web UI を使用すると、テンプレートのインポートは個別でしかできない点にご留意ください。一括操作には、Satellite API を使用します。詳細は、「Satellite API を使用したレポートテンプレートのインポート」 を参照してください。

前提条件

  • 新しいテンプレートで使用するためにテンプレートをインポートするには、Satellite からテンプレートをエクスポートしておく必要がある。詳細は、「レポートテンプレートのエクスポート」 を参照してください。

手順

  1. Satellite Web UI で、監視 > レポートテンプレート に移動し、「レポートテンプレート」ウィンドウの右上で テンプレートの作成 をクリックします。
  2. Template エリアで、Import をクリックしてインポートする .erb ファイルを選択します。
  3. 要件に合わせてテンプレートを編集し、送信 をクリックします。

新しいテンプレートのカスタマイズに関する詳細は、付録A テンプレート作成の参照 を参照してください。

6.6. Satellite API を使用したレポートテンプレートのインポート

Satellite API を使用して、レポートテンプレートを Satellite にインポートできます。Satellite API を使用してレポートテンプレートをインポートすると、レポートテンプレートのメタデータが自動的に解析され、組織とロケーションが割り当てられます。Satellite API の使用に関する詳細は、『API Guide』を参照してください。

前提条件

手順

  1. 以下の例を使用して、.json ファイルにインポートするテンプレートをフォーマットします。

    # cat Example_Template.json
    {
        "name": "Example Template Name",
        "template": "
        Enter ERB Code Here
    "
    }

    Example JSON File with ERB Template:

    {
        "name": "Hosts - complete list",
        "template": "
    <%#
    name: Hosts - complete list
    snippet: false
    template_inputs:
    - name: host
      required: false
      input_type: user
      advanced: false
      value_type: plain
      resource_type: Katello::ActivationKey
    model: ReportTemplate
    -%>
    <% load_hosts(search: input('host')).each_record do |host| -%>
    <%
          report_row(
              'Server FQND': host.name
          )
    -%>
    <%  end -%>
    <%= report_render %>
    "
    }

  2. 以下のリクエストを使用して、テンプレートをインポートします。

    $ curl --insecure --user admin:redhat \
    --data @Example_Template.json --header "Content-Type:application/json" \
    --request POST --config https://satellite.example.com/api/report_templates/import
  3. 以下のリクエストを使用して、レポートテンプレートの一覧を取得し、Satellite でテンプレートを表示できることを確認します。

    $ curl --insecure --user admin:redhat \
     --request GET --config https://satellite.example.com/api/report_templates | json_reformat

6.7. レポートテンプレートのセーフモード

Satellite でレポートテンプレートを作成すると、セーフモードがデフォルトで有効化されます。セーフモードでは、レポートテンプレートで使用できるマクロと変数が制限されます。セーフモードは、レンダリングの問題を防ぎ、レポートテンプレートのベストプラクティスを実施します。サポートされているマクロと変数の一覧は、Satellite Web UI で利用可能です。

利用可能なマクロと変数を表示するには、Satellite Web UI で、監視 > レポートテンプレート に移動し、テンプレートの作成 をクリックします。「テンプレートの作成」ウィンドウで、ヘルプ タブをクリックし、セーフモードメソッド を展開します。

セーフモードが有効な間に、セーフモードメソッド に一覧表示されていないマクロまたは変数を使用しようとすると、テンプレートエディターにエラーメッセージが表示されます。

Satellite のセーフモードのステータスを表示するには、Satellite Web UI で、管理 > 設定 and click the プロビジョニング タブに移動します。セーフモードレンダリング 行を特定し、値を確認します。