ホストの管理

Red Hat Satellite 6.8

Red Hat Satellite 6 環境におけるホストの管理ガイド

概要

本書は、Red Hat Satellite 環境でホストを設定して使用する方法を説明します。この作業を続行する前に、Red Hat Satellite 6 Server と必要なすべての Capsule Server を正常にインストールしておく必要があります。

第1章 Red Hat Satellite 6 ホストの概要

ホストは、Red Hat Satellite が管理する Linux クライアントを指します。ホストは物理サーバーでも仮想サーバーでもかまいません。KVM、VMware vSphere、OpenStack、Amazon EC2、Rackspace Cloud Services、Google Compute Engine などの仮想ホストは、Red Hat Satellite がサポートするプラットフォームにデプロイできます。

Red Hat Satellite は、監視、プロビジョニング、リモート実行、設定管理、ソフトウェア管理、およびサブスクリプション管理など、大規模なホスト管理が可能です。ホストの管理は、Red Hat Satellite Web UI またはコマンドラインから行えます。

Satellite Web UI では、Satellite Server が認識する全ホストをタイプ別に分類して参照できます。

  • すべてのホスト: Satellite Server が認識するすべてのホストの一覧です。
  • 検出されたホスト: Discovery プラグインによってプロビジョニングネットワークで検出されたベアメタルホストの一覧です。
  • コンテンツホスト: コンテンツおよびサブスクリプションに関連するタスクを管理するホストの一覧です。
  • ホストコレクション: エラータのインストールなどの一括操作に使用するユーザー定義のホストコレクションの一覧です。

ホストを検索する場合は、検索 フィールドに、検索するホストを入力し、部分一致検索には、アスタリスク (*) を使用できます。たとえば dev-node.example.com という名前のコンテンツホストを検索する場合は、コンテンツホスト ページをクリックし、検索 フィールドに dev-node* と入力します。または、*node* と入力しても、コンテンツホスト dev-node.example.com が見つかります。

警告

Satellite Server は、自己登録されていない場合でも、ホストとして一覧に追加されます。ホストの一覧から Satellite Server を削除しないでください。

第2章 ホストの管理

本章では、ホストの作成、登録、管理、および削除について説明します。

2.1. Red Hat Satellite でのホストの作成

以下の手順を使用して Red Hat Satellite でホストを作成します。

手順

  1. Satellite Web UI で、ホスト > ホストの作成 の順にクリックします。
  2. ホスト タブで、必要な詳細を入力します。
  3. Ansible ロール タブをクリックして、Ansible ロール リストから、ホストに追加するロールを 1 つまたは複数選択します。矢印 アイコンを使用して、追加または削除するロールを管理します。
  4. Puppet クラス タブで、追加する Puppet クラスを選択します。
  5. インターフェース タブで、以下を行います。

    1. 各インターフェースに対して、アクション コラムで 編集 をクリックし、必要に応じて以下を設定します。

      • タイプ: ボンドまたは BMC インターフェースに対して、タイプ リストで、インターフェースタイプを選択します。
      • MAC アドレス: MAC アドレスを入力します。
      • DNS 名: DNS サーバーに認識させる DNS 名を入力します。これは、完全修飾ドメイン名 (FQDN) のホスト部分に使用されます。
      • ドメイン: プロビジョニングネットワークのドメイン名を選択します。これにより、サブネット リストが自動的に更新され、適切なサブネットの選択肢が表示されます。
      • IPv4 サブネット: 一覧から、ホストの IPv4 サブネットを選択します。
      • IPv6 サブネット: 一覧から、ホストの IPv6 サブネットを選択します。
      • IPv4 アドレス: サブネットに対して IP アドレス管理 (IPAM) が有効な場合は、IP アドレスが自動的に提案されます。または、アドレスを入力することもできます。トークンのプロビジョニングが有効な場合、ドメインが DNS を管理しない場合、サブネットが逆引き DNS を管理しない場合、またはサブネットが DHCP 予約を管理しない場合は、このアドレスを省略できます。
      • IPv6 アドレス: サブネットに対して IP アドレス管理 (IPAM) を有効にした場合は、IP アドレスが自動的に提案されます。または、アドレスを入力することもできます。
      • 管理: このチェックボックスを選択すると、Capsule が提供する DHCP サービスおよび DNS サービスを使用してプロビジョニングを行う際にインターフェースを設定します。
      • プライマリー: このチェックボックスを選択すると、このインターフェースの DNS 名を、FQDN のホスト部分に使用します。
      • プロビジョニング: このチェックボックスを選択すると、プロビジョニングにこのインターフェースを使用します。つまり、このインターフェースを使用して TFTP ブートが行われ、そしてイメージをベースにしたプロビジョニングでは、プロビジョニングを実行するスクリプトにこのインターフェースが使用されます。anaconda による RPM のダウンロードや、%post スクリプトの Puppet 設定などの多くのプロビジョニングタスクは、プライマリーインターフェースを使用する点にご留意ください。
      • 仮想 NIC: このインターフェースが物理デバイスではない場合は、このチェックボックスを選択します。この設定にはオプションが 2 つあります。

        • タグ: 任意で VLAN タグを設定します。設定していない場合はサブネットの VLAN ID となります。
        • 割り当て先: この仮想インターフェースが割り当てられるインターフェースのデバイス名を入力します。
    2. OK をクリックして、インターフェース設定を保存します。
    3. オプションとして、インターフェースの追加 をクリックし、追加ネットワークインターフェースを組み込みます。詳細は4章ネットワークインターフェースの追加を参照してください。
    4. 送信 をクリックし、変更を適用して終了します。
  6. オペレーティングシステム タブで、必要な情報を入力します。Red Hat オペレーティングシステムの場合は、メディアの選択同期したコンテンツ を選択します。Red Hat 以外のオペレーティングシステムを使用する場合には、すべてのメディア を選択してから、メディアの選択 リストからインストールメディアを選択します。このリストからパーティションテーブルを選択するか、カスタムパーティションテーブル フィールドでカスタムのパーティションテーブルを入力します。両方は指定できません。
  7. パラメーター タブで パラメーターの追加 をクリックして、ランタイム時にジョブテンプレートにわたすパラメーター変数を追加します。これには、ホストに関連付ける 全 Puppet クラス、Ansible Playbook パラメーター、ホストパラメーターが含まれます。Ansible のジョブテンプレートでパラメーター変数を使用するには、ホストパラメーター を追加する必要があります。

    Red Hat Enterprise Linux 8 ホストの作成時には、ホストのシステム目的属性を設定できます。システム目的属性は、ホストの作成時に、どのサブスクリプションを自動的にアタッチするかを定義します。ホストパラメーター エリアで、適切な値を指定し、以下のパラメーターを入力します。値の一覧については、『標準的な RHEL インストールの実行』ガイドの「syspurpose コマンドラインツールを使用したシステムの目的の設定」を参照してください。

    • syspurpose_role
    • syspurpose_sla
    • syspurpose_usage
    • syspurpose_addons
  8. 追加情報 タブに、ホストに関する追加情報を入力します。
  9. 送信 をクリックして、プロビジョニングリクエストを完了します。

CLI をご利用の場合

ホストをホストグループに関連付けて作成するには、次のコマンドを入力します。

# hammer host create \
--name "host_name" \
--hostgroup "hostgroup_name" \
--interface="primary=true, \
            provision=true, \
            mac=mac_address, \
            ip=ip_address" \
--organization "Your_Organization" \
--location "Your_Location" \
--ask-root-password yes

上記のコマンドを実行すると、root パスワードを指定するように求められます。ホストの IP および MAC アドレスを指定する必要があります。プライマリーのネットワークインターフェースの他のプロパティーはホストグループから継承するか、--subnet および --domain パラメーターを使用して設定することができます。--interface オプションを使用して追加のインターフェースを設定できます。このオプションはキーと値のペアの一覧を受け取ります。利用可能なインターフェース設定の一覧については hammer host create --help コマンドを入力します。

2.2. ホストのシステム目的の編集

Red Hat Enterprise Linux 8 ホストのシステム目的属性を編集できます。システム目的属性は、どのサブスクリプションを自動的にホストにアタッチするかを定義します。システム目的の詳細は、『標準的な RHEL インストールの実行』ガイドの「syspurpose コマンドラインツールを使用したシステム目的の設定」を参照してください。

手順

  1. Satellite Web UI で、ホスト > コンテンツホスト に移動し、編集する Red Hat Enterprise Linux 8 ホスト名を選択します。
  2. システムの目的 のエリアで、編集または削除するシステムの目的の属性の 編集 または 削除 アイコンをクリックします。
  3. 保存 をクリックします。
  4. サブスクリプション タブをクリックして、サブスクリプション を選択します。
  5. 自動アタッチの実行 をクリックして、選択した全ホストに自動的にサブスクリプションをアタッチします。
  6. ページを更新して、サブスクリプションリストに正しいサブスクリプションが含まれていることを確認します。

CLI をご利用の場合

  1. ホストにログインして、必要なシステム目的属性を編集します。たとえば、使用タイプを Production、ロールを Red Hat Enterprise Linux Server に設定し、addon アドオンを追加します。値の一覧については、『標準的な RHEL インストールの実行』ガイドの「Configuring system purpose」を参照してください。

    # syspurpose set-usage Production
    # syspurpose set-role Red Hat Enterprise Linux Server
    # syspurpose add-addons 'your_addon'
  2. このホストのシステム目的属性を検証します。

    # syspurpose show
  3. このホストに自動的にサブスクリプションをアタッチします。

    # subscription-manager attach --auto
  4. このホストのシステム目的のステータスを検証します。

    # subscription-manager status

2.3. ホストのモジュールストリームの変更

Red Hat Enterprise Linux 8 ホストがある場合は、インストールするリポジトリーのモジュールストリームを変更できます。

ホストを作成したら、Satellite Web UI でホストからモジュールストリームを有効化、無効化、インストール、更新、および削除できます。

手順

  1. Satellite Web UI で、ホスト > コンテンツホスト に移動し、変更するモジュールを含むホストの名前をクリックします。
  2. モジュールストリーム タブをクリックします。
  3. 利用可能なモジュールストリーム リストから、変更するモジュールの場所を特定します。フィルター フィールドを使用して、リストエントリーを絞り込みます。または、フィルターステータス リストを使用して、特定のステータスのモジュールを検索できます。
  4. アクション リストから、モジュールに加える変更を選択します。
  5. ジョブ呼び出し ウィンドウで、ジョブの情報が適切であることを確認します。必要に応じて詳細を変更し、送信 をクリックします。

2.4. ホストグループの作成

多数のホストを作成する場合には、ホストの多くに、共通の設定と属性を指定できます。新規ホストすべてにこれらの設定および属性を追加するのは時間がかかります。ホストグループを使用する場合には、作成するホストに対して、共通の属性を適用できます。

ホストグループは、共通するホスト設定のテンプレートとして機能し、ホストに指定する同じ情報が多数含まれます。ホストグループを指定して、ホストを作成する場合には、このホストは、ホストグループで定義した設定を継承します。その後に、追加の情報を指定して、ホストを個別化できます。

ホストグループの階層

ホストグループには、階層を作成できます。組織内の全ホストを表すベースレベルのホストグループを設定し、汎用的な設定を行い、その中のネストされたグループを指定して、固有の設定を指定するようにします。たとえば、以下のように、オペレーティングシステムを定義する Base レベルのホストグループ 1 つおよび、Base レベルのホストグループを継承するネスト化されたホストグループ 2 つを設定できます。

  • hostgroup:ベース (Red Hat Enterprise Linux 7.6)

    • hostgroup:Web サーバー( httpd Puppet クラスを適用)

      • Host: webserver1.example.com (Web サーバー)
      • Host: webserver2.example.com (Web サーバー)
    • hostgroup:ストレージ (nfs Puppet クラスを適用)

      • Host: storage1.example.com (ストレージサーバー)
      • Host: storage2.example.com (ストレージサーバー)
    • Host: custom.example.com (カスタムホスト)

この例では、すべてのホストは Base ホストグループの継承により、Red Hat Enterprise Linux 7.6 をオペレーティングシステムとして使用します。2 つの Web サーバーホストは Webserver ホストグループからの設定を継承します。これには、httpd Puppet クラスおよび Base ホストグループの設定が含まれます。2 つのストレージサーバーは、Storage ホストグループからの設定を継承します。これには、nfs Puppet クラスおよび Base ホストグループからの設定が含まれます。カスタムホストは Base ホストグループからの設定のみを継承します。

手順

  1. Satellite Web UI で 設定 > ホストグループ に移動して、ホストグループの作成 をクリックします。
  2. 属性を継承する既存のホストグループがある場合には、 リストからホストグループを選択します。継承する属性がない場合には、このフィールドは空白のままにします。
  3. 新規ホストグループの 名前 を入力します。
  4. 新たに作成するホストに継承させる情報をさらに入力します。
  5. Ansible ロール タブをクリックして、Ansible ロール リストから、ホストに追加するロールを 1 つまたは複数選択します。矢印 アイコンを使用して、追加または削除するロールを管理します。
  6. 追加タブをクリックして、ホストグループに属性として指定する情報を追加します。

    注記

    Puppet は、Production 環境内に作成した Puppet 環境に関連付けられているホストグループにホストを登録すると、Puppet CA 証明書の取得に失敗します。

    ホストグループに関連付けて、適切な Puppet 環境を作成するには、ディレクトリーを手動で作成して、所有者を変更します。

    # mkdir /etc/puppetlabs/code/environments/example_environment
    # chown apache /etc/puppetlabs/code/environments/example_environment
  7. 送信 をクリックしてホストグループを保存します。

CLI をご利用の場合

hammer hostgroup create コマンドでホストグループを作成します。以下は例になります。

# hammer hostgroup create --name "Base" \
--lifecycle-environment "Production" --content-view "Base" \
--puppet-environment "production" --content-source-id 1 \
--puppet-ca-proxy-id 1 --puppet-proxy-id 1 --domain "example.com" \
--subnet `ACME's Internal Network` --architecture "x86_64" \
--operatingsystem "RedHat 7.2" --medium-id 9 \
--partition-table "Kickstart default" --root-pass "p@55w0rd!" \
--locations "New York" --organizations "ACME"

2.5. ライフサイクル環境ごとのホストグループの作成

以下の手順を使用して、ライブラリーライフサイクル環境のホストグループを作成し、他のライフサイクル環境向けに、ネストされたホストグループを追加します。

手順

ライフサイクル環境ごとにホストグループを作成するには、以下の Bash スクリプトを実行します。

MAJOR="7"
ARCH="x86_64"
ORG="Your Organization"
LOCATIONS="Your Location"
PTABLE_NAME="Kickstart default"
DOMAIN="example.com"

hammer --output csv --no-headers lifecycle-environment list --organization "${ORG}" | cut -d ',' -f 2 | while read LC_ENV; do
  [[ ${LC_ENV} == "Library" ]] && continue

  hammer hostgroup create --name "rhel-${MAJOR}server-${ARCH}-${LC_ENV}" \
    --architecture "${ARCH}" \
    --partition-table "${PTABLE_NAME}" \
    --domain "${DOMAIN}" \
    --organizations "${ORG}" \
    --query-organization "${ORG}" \
    --locations "${LOCATIONS}" \
    --lifecycle-environment "${LC_ENV}"
done

2.6. ホストのグループの変更

以下の手順を使用して、ホストのグループを変更します。

手順

  1. Satellite Web UI で、ホスト > すべてのホスト に移動します。
  2. 変更する必要のあるホストのチェックボックスを選択します。
  3. アクションの選択 リストから グループの変更 を選択します。新しいオプションウィンドウが開きます。
  4. ホストグループ リストから、ホストに必要なグループを選択します。
  5. 送信 をクリックします。

2.7. ホストの環境の変更

以下の手順を使用して、ホストの環境を変更します。

手順

  1. Satellite Web UI で、ホスト > すべてのホスト に移動します。
  2. 変更する必要のあるホストのチェックボックスを選択します。
  3. アクションの選択 リストから 環境の変更 を選択すると、新しいオプションウィンドウが開きます。
  4. 環境 リストから、ホストの新しい環境を選択します。
  5. 送信 をクリックします。

2.8. ホストの管理ステータスの変更

デフォルトでは、Satellite がプロビジョニングするホストは管理対象となっています。ホストを管理対象に設定した場合には、Satellite Server からホストパラメーターを追加で設定できます。このように追加したパラメーターは、オペレーティングシステム タブに表示されます。オペレーティングシステム タブで設定を変更した場合には、ホストをビルドして再起動するように設定しない限り、これらの変更は適用されません。

Satellite のサポート対象外のオペレーティングシステムを使用するシステムの設定管理レポートを取得する必要がある場合は、ホストを非管理対象に設定します。

以下の手順を使用して、ホストの管理対象および非管理対象のステータスを切り替えます。

手順

  1. Satellite Web UI で、ホスト > すべてのホスト に移動します。
  2. ホストを選択します。
  3. 編集 をクリックします。
  4. ホストの管理 または ホストの管理解除 をクリックして、ホストのステータスを変更します。
  5. 送信 をクリックします。

2.9. ホストの特定組織への割り当て

以下の手順を使用して、ホストを特定の組織に割り当てます。組織に関する一般的な情報および設定方法は、『コンテンツ管理ガイド』の「組織の管理」を参照してください。

手順

  1. Satellite Web UI で、ホスト > すべてのホスト に移動します。
  2. 変更する必要のあるホストのチェックボックスを選択します。
  3. アクションの選択 一覧から 組織の割り当て を選択すると、新しいオプションウィンドウが開きます。
  4. 組織の選択 リストから、ホストを割り当てる組織を選択します。Fix Organization on Mismatch (組織の不一致についての修正) チェックボックスを選択します。

    注記

    ドメインまたはサブネットなど、ホストに関連付けるリソースがあるにもかかわらず、これらのリソースがホストの割り当て先の組織に割り当てられていない場合に、不一致が生じます。Fix Organization on Mismatch (組織の不一致についての修正) オプションを使用すると、このようなリソースが組織に追加されるので、このオプションは推奨の選択肢になります。Fail on Mismatch (不一致により失敗) オプションを選択すると、常にエラーメッセージが生成されます。たとえば、実際には設定に不一致がない場合でも、別の組織にホストを再割り当てすると失敗します。

  5. 送信 をクリックします。

2.10. ホストの特定ロケーションへの割り当て

以下の手順を使用して、ホストを特定のロケーションに割り当てます。ロケーションに関する一般的な情報および設定方法は、『コンテンツ管理ガイド』の「ロケーションの作成」を参照してください。

手順

  1. Satellite Web UI で、ホスト > すべてのホスト に移動します。
  2. 変更する必要のあるホストのチェックボックスを選択します。
  3. アクションの選択 リストから ロケーションの割り当て を選択すると、新しいオプションウィンドウが開きます。
  4. ロケーションの選択 リストに移動して、ホストに割り当てるロケーションを選択します。Fix Location on Mismatch (ロケーションの不一致についての修正) チェックボックスを選択します。

    注記

    ドメインまたはサブネットなど、ホストに関連付けるリソースがあるにもかかわらず、これらのリソースがホストの割り当て先のロケーションに割り当てられていない場合に、不一致が生じます。Fix Location on Mismatch (ロケーションの不一致についての修正) オプションを使用すると、このようなリソースがロケーションに追加されるので、このオプションは推奨の選択肢になります。Fail on Mismatch (不一致により失敗) オプションを選択すると、常にエラーメッセージが生成されます。たとえば、実際には設定に不一致がない場合でも、別のロケーションにホストを再割り当てすると失敗します。

  5. 送信 をクリックします。

2.11. Red Hat Satellite からのホストの削除

以下の手順を使用して Red Hat Satellite からホストを削除します。

手順

  1. Satellite Web UI で、ホスト > すべてのホスト または ホスト > コンテンツホスト へ移動します。すべてのホスト または コンテンツホスト のどちらのページからホストを削除しても相違はないので注意してください。どちらの場合も、Satellite はホストを完全に削除します。
  2. 削除するホストを選択します。
  3. アクションの選択 リストから ホストの削除 を選択します。
  4. 送信 をクリックして、Red Hat Satellite からホストを完全に削除します。
警告

仮想マシンに関連付けられているホストのレコードが削除されている場合、仮想マシンも削除されます。このような状況で仮想マシンが削除されないようにするには、ハイパーバーザーから仮想マシンを削除せずに Satellite との関連付けを解除します。

仮想マシンをハイパーバイザーから削除せずに Satellite との関連付けを解除する方法

  1. Satellite Web UI で、ホスト > すべてのホスト に移動し、関連付けが解除されたホストの左側にあるチェックボックスを選択します。
  2. アクションの選択 リストから ホストの関連付けを解除 ボタンを選択します。
  3. オプションで、チェックボックスを選択して、今後のためにホストを保存します。
  4. 送信 をクリックします。

第3章 ホストの登録

Satellite Server または Capsule Server にホストを登録する方法は、主に 2 つあります。

  • コンシューマー RPM (server.example.com/pub/katello-ca-consumer-latest.noarch.rpm) をダウンロードしてインストールしてから、Subscription Manager を実行します。この方法は、新規インストールしたホストに適しています。
  • ブートストラップスクリプト (server.example.com/pub/bootstrap.py) をダウンロードして実行します。この方法は、新規インストールしたホストにも、Satellite 5 や別の Satellite 6 に登録済みのホストなどにも適しています。

Atomic Host を Satellite Server または Capsule Server に登録することもできます。

次のいずれかの手順を使用して、ホストを登録します。

以下の手順を使用して、ホストツールをインストールして設定します。

ホストでサポート対象のオペレーティングシステム

ホストは、以下の Red Hat Enterprise Linux バージョンのいずれかを使用している必要があります。

  • 5.7 以降
  • 6.1 以降*
  • 7.0 以上
  • 8.0 以降
注記

Red Hat Enterprise Linux バージョン 6.1、6.2 および 6.3 では、subscription-manager と関連のパッケージを手動で更新する必要があります。詳細は、「https://access.redhat.com/solutions/1256763」を参照してください。

サポートされるアーキテクチャー

Red Hat Enterprise Linux のすべてのアーキテクチャーがサポートされます。

  • i386
  • x86_64
  • s390x
  • ppc_64

3.1. Red Hat Satellite へのホストの登録

以下の手順を使用して、ホストを Red Hat Satellite 6 に登録します。

前提条件

  • Satellite Server、Capsule Server、およびすべてのホストを同じ NTP サーバーと同期し、時間同期ツールを有効にして実行しておく。
  • rhsmcertd デーモンをホストで実行しておく。
  • ホストのアクティベーションキーがある。詳細は、『コンテンツ管理ガイド』の「アクティベーションキーの管理」を参照してください。
  • バージョンが 1.10 以降の Subscription Manager を使用している。パッケージは標準の Red Hat Enterprise Linux リポジトリーで入手可能です。

手順

Red Hat Enterprise Linux ホストは、デフォルトで Red Hat コンテンツ配信ネットワーク (CDN) に登録されます。

各ホスト設定を更新して、適切な Satellite Server または Capsule Server から更新を受け取るようにします。

  1. Satellite Server または Capsule Server の完全修飾ドメイン名 (FQDN) をメモしておきます (例: server.example.com)。
  2. root ユーザーとしてホストにログインして、ホストを登録する Satellite Server または Capsule Server から katello-ca-consumer-latest.noarch.rpm パッケージをダウンロードします。コンシューマー RPM はホストを設定して、Red Hat Satellite で指定されたコンテンツソースからコンテンツをダウンロードします。

    # curl --insecure --output katello-ca-consumer-latest.noarch.rpm https://satellite.example.com/pub/katello-ca-consumer-latest.noarch.rpm
  3. katello-ca-consumer-latest.noarch.rpm パッケージをインストールします。

    # yum localinstall katello-ca-consumer-latest.noarch.rpm
    注記

    RPM パッケージは署名されていません。必要に応じて、--nosignature オプションを使用してパッケージをインストールします。katello-ca-consumer-hostname-1.0-1.noarch.rpm パッケージは、追加の katello-ca-consumer RPM で、この中にサーバーのホスト名が含まれます。katello-ca-consumer-latest.noarch.rpm パッケージは常に最新のバージョンを反映します。どちらを使用しても達成できる目的は同じです。

  4. Red Hat Subscription Manager (RHSM) に関連するすべての以前のホストデータを消去します。

    # subscription-manager clean
  5. RHSM を使用してホストを登録します。

    # subscription-manager register --org=your_org_name \
    --activationkey=your_activation_key

    例3.1 登録後のコマンド出力:

    # subscription-manager register --org=MyOrg --activationkey=TestKey-1
    The system has been registered with id: 62edc0f8-855b-4184-b1b8-72a9dc793b96
注記

アクティベーションキーで定義したコンテンツビューとライフサイクル環境を上書きするには、--environment オプションを使用します。たとえば、「開発」ライフサイクル環境のコンテンツビュー「MyView」にホストを登録するには、以下を実行します。

 # subscription-manager register --org=your_org_name \
 --environment=Development/MyView \
 --activationkey=your_activation_key
注記

Red Hat Enterprise Linux 6.3 ホストの場合には、リリースバージョンが Red Hat Enterprise Linux 6 Server にデフォルト設定されており、6.3 リポジトリーを指定する必要があります。

  1. Satellite Web UI で、ホスト > コンテンツホスト に移動します。
  2. 変更が必要なホストの横にあるチェックボックスを選択します。
  3. アクションの選択 リストから リリースバージョンの設定 を選択します。
  4. リリースバージョン リストから 6.3 を選択します。
  5. 完了 をクリックします。

3.2. Red Hat Satellite への Atomic Host の登録

以下の手順を使用して、Atomic Host を Red Hat Satellite 6 に登録します。

手順

  1. root ユーザーで、Atomic Host にログインします。
  2. Satellite Server から katello-rhsm-consumer を取得します。

    # wget http://satellite.example.com/pub/katello-rhsm-consumer
  3. katello-rhsm-consumer のモードを実行可能に変更します。

    # chmod +x katello-rhsm-consumer
  4. katello-rhsm-consumer を実行します。

    # ./katello-rhsm-consumer

    Red Hat Subscription Manager に登録します。

    # subscription-manager register
注記

Katello エージェントは、Atomic Host ではサポートされません。

3.3. ブートストラップスクリプトを使ったホストの Red Hat Satellite への登録

ブートストラップスクリプトを使用して、コンテンツの登録と Puppet の設定を自動化します。新しいホストの登録や、既存のホストの Satellite 5、RHN、SAM または RHSM から Red Hat Satellite 6 への移行には、ブートストラップスクリプトを使用できます。

Satellite Server のベースオペレーティングシステムに、デフォルトで katello-client-bootstrap パッケージがインストールされています。bootstrap.py スクリプトは、/var/www/html/pub/ ディレクトリーにインストールされており、satellite.example.com/pub/bootstrap.py でホストに公開されます。このスクリプトでは、/usr/share/doc/katello-client-bootstrap-version/README.md ファイルにドキュメントが含まれます。

ブートストラップスクリプトを使用するには、ホストにスクリプトをインストールする必要があります。スクリプトは 1 度しか必要ではなく、また、root ユーザー専用であるため、/root または /usr/local/sbin に配置して、使用後に削除できます。この手順では、/root を使用します。

前提条件

  • Satellite ユーザーに、ブートストラップスクリプト実行に必要なパーミッションを割り当て済みである。この手順の例では、admin ユーザーを指定します。セキュリティーポリシーの関係上、この要件を満たせない場合には、新しいロールを作成して最小限必要なパーミッションを割り当てて、スクリプトを実行するユーザーにこのロールを追加してください。詳細は、「ブートストラップスクリプトのパーミッションの設定」 を参照してください。
  • Satellite Tools 6.8 リポジトリーを有効にしたホストのアクティベーションキーを用意する。アクティベーションキーの設定方法は『コンテンツ管理ガイド』の「アクティベーションキーの管理」を参照してください。
  • ホストグループを作成済みである。ホストグループの作成方法は 「ホストグループの作成」 を参照してください。

Puppet の考慮事項

ホストグループを Production 環境内に作成した Puppet 環境に関連付けると、Puppet はホストグループからホストを登録する時に Puppet CA 証明書の取得に失敗します。

ホストグループに関連付けて、適切な Puppet 環境を作成するには、以下の手順を実行します。

  1. 手動でディレクトリーを作成して、所有者を変更します。

    # mkdir /etc/puppetlabs/code/environments/example_environment
    # chown apache /etc/puppetlabs/code/environments/example_environment
  2. 設定 > 環境 へと移動し、環境をインポート をクリックします。ボタン名には、内部または外部の Capsule の FQDN が含まれます。
  3. 作成したディレクトリーを選択し、更新 をクリックします。

手順

  1. root ユーザーで、ホストにログインします。
  2. スクリプトをダウンロードします。

    # curl -O http://satellite.example.com/pub/bootstrap.py
  3. スクリプトを実行可能にします。

    # chmod +x bootstrap.py
  4. ヘルプテキストを表示して、スクリプトが実行可能であることを確認します。

    • Red Hat Enterprise Linux 8 の場合:

      # /usr/libexec/platform-python bootstrap.py -h
    • 他の Red Hat Enterprise Linux バージョンの場合:

      # ./bootstrap.py -h
  5. ご使用の環境に適した値を使用して、ブートストラップコマンドを入力します。

    --server オプションの場合は、Satellite Server または Capsule Server の FQDN を指定します。オプションが --location--organization、および --hostgroup の場合は、オプションへの引数として、ラベルではなく引用符で囲まれた名前を使用します。詳細なユースケースは 「詳細なブートストラップスクリプトの設定」 を参照してください。

    • Red Hat Enterprise Linux 8 の場合は、以下のコマンドを入力します。

      # /usr/libexec/platform-python bootstrap.py \
      --login=admin \
      --server satellite.example.com \
      --location="Example Location" \
      --organization="Example Organization" \
      --hostgroup="Example Host Group" \
      --activationkey=activation_key
    • Red Hat Enterprise Linux 5、6、7 の場合は、以下のコマンドを入力します。

      # ./bootstrap.py --login=admin \
      --server satellite.example.com \
      --location="Example Location" \
      --organization="Example Organization" \
      --hostgroup="Example Host Group" \
      --activationkey=activation_key
  6. --login オプションで指定した Satellite ユーザーのパスワードを入力します。

    スクリプトは、進捗の通知を stdout に送信します。

  7. スクリプトでプロンプトが表示されたら、ホストの Puppet 証明書を承認します。Satellite Web UI で インフラストラクチャー > Capsules に移動して、--server オプションで指定した Satellite または Capsule Server を検出します。
  8. アクション コラムの一覧から、証明書 を選択します。
  9. アクション コラムで、署名 をクリックして、ホストの Puppet 証明書を承認します。
  10. ホストに戻り、残りのブートストラップ処理が完了するのを確認します。
  11. Satellite Web UI で ホスト > すべてのホスト に移動して、そのホストが、適切なホストグループに接続していることを確認します。
  12. オプション:ホストの登録が完了したら、スクリプトを削除します。

    # rm bootstrap.py

3.3.1. ブートストラップスクリプトのパーミッションの設定

以下の手順を使用して、Satellite ユーザーにブートストラップスクリプトの実行に必要なパーミッションを指定します。

手順

  1. Satellite Web UI で、管理 > ユーザー に移動します。
  2. 必要な ユーザー名 をクリックして既存のユーザーを選択すると、選択したユーザーの情報を変更するタブが含まれる、新しいペインが表示されます。または、このスクリプトの実行専用に新規ユーザーを作成します。
  3. ロール タブをクリックします。
  4. ロール リストから ホストの編集 および ビューワー を選択します。

    重要

    ホストの編集 ロールを割り当てると、ユーザーは、ホストの編集や削除、ホストの追加が可能です。セキュリティーポリシーの関係上、この方法を使用できない場合は、以下のパーミッションを割り当てた新しいロールを作成して、このロールをユーザーに割り当ててください。

    • view_organizations
    • view_locations
    • view_domains
    • view_hostgroups
    • view_hosts
    • view_architectures
    • view_ptables
    • view_operatingsystems
    • create_hosts
  5. 送信 をクリックします。

CLI をご利用の場合

  1. ブートストラップスクリプトで最低限必要なパーミッションを持つロールを作成します。この例は、Bootstrap という名前のロールを作成します。

    # ROLE='Bootstrap'
    hammer role create --name "$ROLE"
    hammer filter create --role "$ROLE" --permissions view_organizations
    hammer filter create --role "$ROLE" --permissions view_locations
    hammer filter create --role "$ROLE" --permissions view_domains
    hammer filter create --role "$ROLE" --permissions view_hostgroups
    hammer filter create --role "$ROLE" --permissions view_hosts
    hammer filter create --role "$ROLE" --permissions view_architectures
    hammer filter create --role "$ROLE" --permissions view_ptables
    hammer filter create --role "$ROLE" --permissions view_operatingsystems
    hammer filter create --role "$ROLE" --permissions create_hosts
  2. 既存のユーザーに新しいロールを割り当てます。

    # hammer user add-role --id user_id --role Bootstrap

    または、新規ユーザーを作成して、新しいロールを新規ユーザーに割り当てることもできます。Hammer を使用したユーザーの作成方法は、『Red Hat Satellite の管理』ガイドの「ユーザーとロールの管理」を参照してください。

3.3.2. 詳細なブートストラップスクリプトの設定

以下のセクションでは、ブートストラップスクリプトを使用してホストを登録したり、移行したりする例をさらに紹介します。

警告

以下の例では、admin Satellite ユーザーを指定します。セキュリティーポリシーの関係上、この要件を満たせない場合には、新しいロールを作成してブートストラップスクリプトで最小限必要なパーミッションを割り当ててください。詳細は、「ブートストラップスクリプトのパーミッションの設定」 を参照してください。

Satellite 6 から別の Satellite 6 へのホストの移行

--force を指定してこのスクリプトを使用し、以前の Satellite から katello-ca-consumer-* パッケージを削除し、新しい Satellite でkatello-ca-consumer-* パッケージをインストールします。

  • Red Hat Enterprise Linux 8 の場合は、以下のコマンドを入力します。

    # /usr/libexec/platform-python bootstrap.py \
    --login=admin \
    --server satellite.example.com \
    --location="Example Location" \
    --organization="Example Organization" \
    --hostgroup="Example Host Group" \
    --activationkey=activation_key \
    --force
  • Red Hat Enterprise Linux 5、6、7 の場合は、以下のコマンドを入力します。

    # bootstrap.py --login=admin \
    --server satellite.example.com \
    --location="Example Location" \
    --organization="Example Organization" \
    --hostgroup="Example Host Group" \
    --activationkey=activation_key \
    --force

Red Hat Network (RHN) または Satellite 5 から Satellite 6 へのホストの移行

ブートストラップスクリプトは、システムがレガシープラットフォームに登録済みであることの指標として、/etc/syconfig/rhn/systemid が存在し、RHN の接続が有効であることを検出します。次にこのスクリプトは、rhn-classic-migrate-to-rhsm を呼び出して RHN からシステムを移行します。このスクリプトでは監査上の理由で、システムのレガシープロファイルはデフォルトで削除されません。レガシープロファイルを削除するには、--legacy-purge を使用してから、--legacy-login を使用して適切なパーミッションのあるユーザーアカウントを指定し、プロファイルを削除します。プロンプトが表示されたらユーザーアカウントのパスワードを入力します。

  • Red Hat Enterprise Linux 8 の場合は、以下のコマンドを入力します。

    # /usr/libexec/platform-python bootstrap.py \
    --login=admin \
    --server satellite.example.com \
    --location="Example Location" \
    --organization="Example Organization" \
    --hostgroup="Example Host Group" \
    --activationkey=activation_key \
    --legacy-purge \
    --legacy-login rhn-user
  • Red Hat Enterprise Linux 5、6、7 の場合は、以下のコマンドを入力します。

    # bootstrap.py --login=admin \
    --server satellite.example.com \
    --location="Example Location" \
    --organization="Example Organization" \
    --hostgroup="Example Host Group" \
    --activationkey=activation_key \
    --legacy-purge \
    --legacy-login rhn-user

Satellite 6 にホストを登録して Puppet 設定を省略する手順

デフォルトでは、ブートストラップスクリプトを使用して、コンテンツ管理および設定管理に対してホストを設定します。既存の設定管理システムがあり、ホストに Puppet をインストールしない場合は --skip-puppet を使用します。

  • Red Hat Enterprise Linux 8 の場合は、以下のコマンドを入力します。

    # /usr/libexec/platform-python bootstrap.py \
    --login=admin \
    --server satellite.example.com \
    --location="Example Location" \
    --organization="Example Organization" \
    --hostgroup="Example Host Group" \
    --activationkey=activation_key \
    --skip-puppet
  • Red Hat Enterprise Linux 5、6、7 の場合は、以下のコマンドを入力します。

    # bootstrap.py --login=admin \
    --server satellite.example.com \
    --location="Example Location" \
    --organization="Example Organization" \
    --hostgroup="Example Host Group" \
    --activationkey=activation_key \
    --skip-puppet

コンテンツ管理専用としてホストを Satellite 6 に登録する手順

システムをコンテンツホストとして登録し、プロビジョニングおよび設定管理機能を除外するには、--skip-foreman を使用します。

  • Red Hat Enterprise Linux 8 の場合は、以下のコマンドを入力します。

    # /usr/libexec/platform-python bootstrap.py \
    --server satellite.example.com \
    --organization="Example Organization" \
    --activationkey=activation_key \
    --skip-foreman
  • Red Hat Enterprise Linux 5、6、7 の場合は、以下のコマンドを入力します。

    # bootstrap.py --server satellite.example.com \
    --organization="Example Organization" \
    --activationkey=activation_key \
    --skip-foreman

ブートストラップスクリプトがコンシューマー RPM のダウンロードに使用する方法の変更

デフォルトでは、ブートストラップスクリプトは HTTP を使用してコンシューマー RPM (server.example.com/pub/katello-ca-consumer-latest.noarch.rpm) をダウンロードします。環境によっては、ホストと Satellite との間のみ HTTPS を許可する場合があります。--download-method を使用して、ダウンロードメソッドを HTTP から HTTPS へ変更します。

  • Red Hat Enterprise Linux 8 の場合は、以下のコマンドを入力します。

    # /usr/libexec/platform-python bootstrap.py \
    --login=admin \
    --server satellite.example.com \
    --location="Example Location" \
    --organization="Example Organization" \
    --hostgroup="Example Host Group" \
    --activationkey=activation_key \
    --download-method https
  • Red Hat Enterprise Linux 5、6、7 の場合は、以下のコマンドを入力します。

    # bootstrap.py --login=admin \
    --server satellite.example.com \
    --location="Example Location" \
    --organization="Example Organization" \
    --hostgroup="Example Host Group" \
    --activationkey=activation_key \
    --download-method https

ホストの IP アドレスの Satellite への指定

インターフェースが複数あるホスト、または 1 つのインターフェースに IP アドレスが複数あるホストでは、IP アドレスの自動検出設定を無効にして、特定の IP アドレスを Satellite に指定する必要がでてくる場合があります。--ip を使用してください。

  • Red Hat Enterprise Linux 8 の場合は、以下のコマンドを入力します。

    # /usr/libexec/platform-python bootstrap.py \
    --login=admin \
    --server satellite.example.com \
    --location="Example Location" \
    --organization="Example Organization" \
    --hostgroup="Example Host Group" \
    --activationkey=activation_key \
    --ip 192.x.x.x
  • Red Hat Enterprise Linux 5、6、7 の場合は、以下のコマンドを入力します。

    # bootstrap.py --login=admin \
    --server satellite.example.com \
    --location="Example Location" \
    --organization="Example Organization" \
    --hostgroup="Example Host Group" \
    --activationkey=activation_key \
    --ip 192.x.x.x

ホストでのリモート実行の有効化

--rex および --rex-user を使用して、リモート実行を有効にし、指定したユーザーに必要な SSH 鍵を追加します。

  • Red Hat Enterprise Linux 8 の場合は、以下のコマンドを入力します。

    # /usr/libexec/platform-python bootstrap.py \
    --login=admin \
    --server satellite.example.com \
    --location="Example Location" \
    --organization="Example Organization" \
    --hostgroup="Example Host Group" \
    --activationkey=activation_key \
    --rex \
    --rex-user root
  • Red Hat Enterprise Linux 5、6、7 の場合は、以下のコマンドを入力します。

    # bootstrap.py --login=admin \
    --server satellite.example.com \
    --location="Example Location" \
    --organization="Example Organization" \
    --hostgroup="Example Host Group" \
    --activationkey=activation_key \
    --rex \
    --rex-user root

登録時のホストのドメイン作成

ホストレコードを作成するには、スクリプトを実行する前に、ホストの DNS ドメインが Satellite に存在している必要があります。ドメインが存在しない場合は、--add-domain を使用して追加します。

  • Red Hat Enterprise Linux 8 の場合は、以下のコマンドを入力します。

    # /usr/libexec/platform-python bootstrap.py \
    --login=admin \
    --server satellite.example.com \
    --location="Example Location" \
    --organization="Example Organization" \
    --hostgroup="Example Host Group" \
    --activationkey=activation_key \
    --add-domain
  • Red Hat Enterprise Linux 5、6、7 の場合は、以下のコマンドを入力します。

    # bootstrap.py --login=admin \
    --server satellite.example.com \
    --location="Example Location" \
    --organization="Example Organization" \
    --hostgroup="Example Host Group" \
    --activationkey=activation_key \
    --add-domain

ホストへの別の FQDN の指定

ホストのホスト名が FQDN でない場合や、RFC に準拠していない場合 (アンダースコアなどの文字が含まれている) には、ホスト名の検証の段階で、スクリプトが失敗します。Satellite で使用可能な FQDN を使用するようにホストを更新できない場合は、ブートストラップスクリプトを使用して別の FQDN を指定してください。

  1. Hammer を使用して create_new_host_when_facts_are_uploadedcreate_new_host_when_report_is_uploaded を false に設定します。

    # hammer settings set \
    --name  create_new_host_when_facts_are_uploaded \
    --value false
    # hammer settings set \
    --name  create_new_host_when_report_is_uploaded \
    --value false
  2. --fqdn を使用して、Satellite にレポートする FQDN を指定します。

    • Red Hat Enterprise Linux 8 の場合は、以下のコマンドを入力します。

      # /usr/libexec/platform-python bootstrap.py --login=admin \
      --server satellite.example.com \
      --location="Example Location" \
      --organization="Example Organization" \
      --hostgroup="Example Host Group" \
      --activationkey=activation_key \
      --fqdn node100.example.com
    • Red Hat Enterprise Linux 5、6、7 の場合は、以下のコマンドを入力します。

      # bootstrap.py --login=admin \
      --server satellite.example.com \
      --location="Example Location" \
      --organization="Example Organization" \
      --hostgroup="Example Host Group" \
      --activationkey=activation_key \
      --fqdn node100.example.com

3.4. Katello エージェントのインストール

Satellite クライアントをリモートで更新するには、Katello エージェントをインストールしてください。

注記

Katello エージェントは非推奨で、今後の Satellite のバージョンで削除されます。プロセスを移行して、リモート実行機能を使用してクライアントをリモートで更新します。詳細は、『ホストの管理』ガイドの「Goferd および Katello エージェントを使用しないホスト管理」を参照してください。

katello-agent パッケージは、goferd service を提供する gofer パッケージによって異なります。Satellite Server または Capsule Server が、コンテンツホストに適用可能なエラータの情報を提供できるようにするには、このサービスを有効化する必要があります。

前提条件

Katello エージェントのインストール前に、以下の条件が満たされていることを確認してください。

  • Satellite Server で、Satellite Tools 6.8 リポジトリーを有効化しておく。詳細は、『オンラインネットワークからの Satellite Server のインストール』の「Satellite Tools 6.8 リポジトリーの有効化」を参照してください。
  • Satellite Server で、Satellite Tools 6.8 リポジトリーを同期しておく。詳細は、『オンラインネットワークからの Satellite Server のインストール』の「Satellite Tools 6.8 リポジトリーの同期」を参照してください。
  • クライアントで Satellite Tools 6.8 リポジトリーを有効化しておく。

手順

Katello エージェントをインストールするには、以下の手順を実行します。

  1. katello-agent パッケージをインストールします。

    # yum install katello-agent
  2. goferd サービスを開始します。

    # systemctl start goferd

3.5. トレーサーのインストール

以下の手順を使用して、Red Hat Satellite 6.8 にトレーサーをインストールし、トレースにアクセスします。トレーサーは、内容が古くなり、再起動が必要なサービスやアプリケーションの一覧を表示します。トレースは、Satellite Web UI でトレーサーが生成する出力です。

前提条件

  • ホストが Red Hat Satellite に登録されている。
  • Red Hat Satellite Tools 6.8 リポジトリーを Satellite Server で有効化して同期し、ホストで有効化しておく。

手順

  1. コンテンツホストで katello-host-tools-tracer RPM パッケージをインストールします。

    # yum install katello-host-tools-tracer
  2. 以下のコマンドを実行します。

    # katello-tracer-upload
  3. Satellite Web UI で ホスト > すべてのホスト に移動して、必要なホスト名をクリックします。
  4. プロパティー タブの プロパティー のテーブルで、トレースの項目を確認します。プロパティー のテーブルでトレース項目が見つからない場合は、トレースがインストールされていません。
  5. ホスト > コンテンツホスト に移動してから、必要なホスト名をクリックします。
  6. トレース タブをクリックして、トレースを表示します。

3.6. Puppet エージェントのインストールおよび設定

以下の手順を使用して、ホストに Puppet エージェントをインストールして設定します。Puppet の詳細は、『Puppet ガイド』を参照してください。

前提条件

  • ホストが Red Hat Satellite に登録されている。
  • ホストに Puppet 環境が割り当てられている。
  • Red Hat Satellite Tools 6.8 リポジトリーを Satellite Server で有効化して同期し、ホストで有効化しておく。

手順

  1. root ユーザーで、ホストにログインします。
  2. Puppet エージェントパッケージをインストールします。

    # yum install puppet-agent
  3. 起動時に Puppet エージェントが起動するように設定します。

    • Red Hat Enterprise Linux 6 の場合:

      # chkconfig puppet on
    • Red Hat Enterprise Linux 7 の場合:

      # systemctl enable puppet
  4. 以下のサーバーと環境の設定を /etc/puppetlabs/puppet/puppet.conf ファイルに追加します。ホストの所属先の Puppet 環境名にenvironment パラメーターを設定します。

    environment = My_Example_Org_Library
    server = satellite.example.com
    ca_server = satellite.example.com
  5. ホスト上で Puppet エージェントを実行します。

    # puppet agent -t
  6. Satellite Web UI で、インフラストラクチャー > Capsules に移動します。
  7. 必要な Capsule Server の アクション コラムの一覧から、証明書 を選択します。
  8. 必要なホストの右にある 署名 をクリックして、Puppet クライアントの SSL 証明書に署名します。
  9. puppet agent コマンドを再入力します。

    # puppet agent -t

第4章 ネットワークインターフェースの追加

Red Hat Satellite は、1 台のホストに対して複数のネットワークインターフェースを指定することをサポートします。「Red Hat Satellite でのホストの作成」 で説明されているように新規ホストを作成する場合や、既存ホストを編集する場合に、これらのインターフェースを設定することができます。

ホストに割り当てることのできるネットワークインターフェースにはいくつかのタイプがあります。新規インターフェースを追加する場合は、以下のいずれかを選択してください。

  • インターフェース:物理インターフェースまたは仮想インターフェースを追加で指定できます。作成できる仮想インターフェースのタイプは 2 つあります。ホストが 1 つのインターフェースを使用して複数の (仮想) ネットワークと通信する必要がある場合は VLAN を使用します。これらのネットワークは互いにアクセスできません。既存のインターフェースに別の IP アドレスを追加するには、エイリアス を使用します。

    物理インターフェースの追加に関する情報は、「物理インターフェースの追加」 を参照してください。

    仮想インターフェースの追加に関する情報は、「仮想インターフェースの追加」 を参照してください。

  • 母ディング:ボンディングインターフェースを作成します。NIC ボンディングは、複数のネットワークインターフェースを 1 つのインターフェースにバインディングして 1 つのデバイスと表示し、MAC アドレスを 1 つ持つ方法です。これにより、複数のネットワークインターフェースが 1 つのネットワークインターフェースとして機能し、帯域幅の拡大と冗長性を提供します。詳細は、「ボンディングインターフェースの追加」 を参照してください。
  • BMC:ベースボード管理コントローラー(BMC)により、マシンの物理的な状態をリモートで監視および管理できます。BMC の詳細は、『オンラインネットワークからの Satellite Server のインストール』の「管理対象ホスト上での電源管理の有効化」を参照してください。BMC インターフェースの設定に関する詳細は、「ベースボード管理コントローラー (BMC) インターフェースの追加」 を参照してください。
注記

追加のインターフェースには、デフォルトで 管理対象 フラグが有効になっています。これは、新規インターフェースが、選択したサブネットに関連付けられた DNS および DHCP Capsule Server によるプロビジョニング時に自動的に設定されることを意味します。これには、DNS および DHCP Capsule Server が適切に設定されたサブネットが必要です。ホストのプロビジョニングにキックスタートメソッドを使用する場合には、管理対象インターフェースの設定ファイルはインストール後のフェーズで、/etc/sysconfig/network-scripts/ifcfg-interface_id に自動的に作成されます。

注記

現在、仮想およびボンディングインターフェースには物理デバイスの MAC アドレスが必要です。そのため、これらのインターフェースの設定はベアメタルホストでのみ機能します。

4.1. 物理インターフェースの追加

この手順を使用して、別の物理インターフェースをホストに追加します。

手順

  1. Satellite Web UI で、ホスト > すべてのホスト に移動します。
  2. 編集するホストの横の 編集 をクリックします。
  3. インターフェース タブで、インターフェースの追加 をクリックします。
  4. タイプ リストで、インターフェース オプションが選択されている状態にします。
  5. MAC アドレス を指定します。この設定は必須です。
  6. eth0 などの デバイス ID を指定します。ボンディングインターフェース、VLAN、エイリアスの作成時に、この ID を使用してこの物理インターフェースを指定します。
  7. ホストの IP アドレスに関連付けられた DNS 名 を指定します。Satellite は、選択したドメイン (「DNS A」フィールド) に関連付けられた Capsule Server、および選択したサブネット (「DNS PTR」フィールド) に関連付けられた Capsule Server にこの名前を保存します。そのため、1 台のホストに複数の DNS エントリーを持たせることができます。
  8. ドメイン リストからドメインを選択します。ドメインを作成して管理するには、インフラストラクチャー > ドメイン に移動します。
  9. サブネット リストからサブネットを選択します。サブネットを作成して管理するには、インフラストラクチャー > サブネット に移動します。
  10. IP アドレス を指定します。DHCP Capsule Server が割り当てられた管理対象インターフェースでは、DHCP リースを作成するためにこの設定が必要です。DHCP が有効になっている管理対象インターフェースでは、IP アドレスが自動補完されます。
  11. インターフェースが 管理対象 かどうかを選択します。インターフェースが管理対象の場合は、プロビジョニング時に関連付けられた Capsule Server から設定がプルされ、DNS エントリーおよび DHCP エントリーが作成されます。キックスタートのプロビジョニングを使用している場合には、設定ファイルはインターフェース用に自動的に作成されます。
  12. ホストの プライマリー インターフェースかどうかを選択します。プライマリーインターフェースからの DNS 名を、FQDN のホストの部分として使用します。
  13. ホストの プロビジョニング インターフェースかどうかを選択します。TFTP ブートは、プロビジョニングインターフェースを使用します。イメージベースのプロビジョニングの場合は、プロビジョニングを完了するスクリプトは、プロビジョニングインターフェースを使用してプロビジョニングを完了します。
  14. リモート実行 のインターフェースを使用するかどうかを選択します。
  15. 仮想 NIC チェックボックスのチェックを解除したままにします。
  16. OK をクリックして、インターフェース設定を保存します。
  17. 送信 をクリックして、ホストへの変更を適用します。

4.2. 仮想インターフェースの追加

以下の手順を使用して、ホストの仮想インターフェースを設定します。仮想インターフェースには、VLAN またはエイリアスインターフェースのいずれかを使用することができます。

エイリアスインターフェースとは、既存のインターフェースにアタッチされた追加の IP アドレスのことです。エイリアスインターフェースは、自動的にアタッチ先のインターフェースから MAC アドレスを継承するので、MAC アドレスを指定せずにエイリアスを作成できます。インターフェースは、ブートモードを static に設定したサブネットに指定する必要があります。

手順

  1. Satellite Web UI で、ホスト > すべてのホスト に移動します。
  2. 編集するホストの横の 編集 をクリックします。
  3. インターフェース タブで、インターフェースの追加 をクリックします。
  4. タイプ リストで、インターフェース オプションが選択されている状態にします。
  5. 一般的なインターフェース設定を指定します。適用できる設定オプションは、物理インターフェースのオプションと同じです (「物理インターフェースの追加」を参照)。

    管理対象の仮想インターフェースの MAC アドレス を指定し、プロビジョニング用の設定ファイルが適切に生成されるようにします。ただし、MAC アドレス は、管理対象外の仮想インターフェースには不要です。

    VLAN を作成する場合、デバイス ID フィールドに eth1.10 の形式で ID を指定します。エイリアスを作成する場合は、eth1:10 の形式で ID を使用します。

  6. 仮想 NIC チェックボックスを選択します。仮想インターフェースに固有の追加設定オプションがその形式に追加されます。

    • タグ:オプションで VLAN タグを設定して、物理ネットワークから仮想インターフェースにネットワークセグメントをトランク接続します。タグを指定しない場合は、管理インターフェースは、関連のあるサブネットの VLAN タグを継承します。このフィールドでユーザーが指定したエントリーは、エイリアスインターフェースには適用されません。
    • にアタッチ済み:eth1 など、仮想インターフェースが属する物理インターフェースの識別子を指定します。この設定は必須です。
  7. OK をクリックして、インターフェース設定を保存します。
  8. 送信 をクリックして、ホストへの変更を適用します。

4.3. ボンディングインターフェースの追加

以下の手順を使用して、ホストのボンディングインターフェースを設定します。

手順

  1. Satellite Web UI で、ホスト > すべてのホスト に移動します。
  2. 編集するホストの横の 編集 をクリックします。
  3. インターフェース タブで、インターフェースの追加 をクリックします。
  4. タイプ リストから ボンディング を選択します。タイプ固有の設定オプションがフォームに追加されます。
  5. 一般的なインターフェース設定を指定します。適用できる設定オプションは、物理インターフェースのオプションと同じです (「物理インターフェースの追加」を参照)。

    ボンディングインターフェースは、デバイス ID フィールドにある bond0 形式の ID を使用します。

    MAC アドレス 1 つで十分です。

  6. ボンディングインターフェースに固有の設定オプションを指定します。

    • モード:フォールトトレランスおよび負荷分散のポリシーを定義するボンドモードを選択します。各ボンドモードの簡単な説明は、表4.1「Red Hat Satellite で利用可能なボンディングモード」を参照してください。
    • 接続されたデバイス:割り当てられたデバイスの識別子のコンマ区切りリストを指定します。物理インターフェースまたは VLAN を指定できます。
    • ボンディングオプション:設定オプションのコンマ区切りの一覧を指定します(例: miimon=100 )。ボンドインターフェースに指定可能な設定オプションの詳細は、Red Hat Enterprise Linux 7 ネットワークガイドを参照してください。
  7. OK をクリックして、インターフェース設定を保存します。
  8. 送信 をクリックして、ホストへの変更を適用します。

CLI をご利用の場合

ボンディングインターフェースでホストを作成するには、以下のコマンドを入力します。

# hammer host create --name bonded_interface \
--hostgroup-id 1 \
--ip=192.168.100.123 \
--mac=52:54:00:14:92:2a \
--subnet-id=1 \
--managed true \
   --interface="identifier=eth1, \
               mac=52:54:00:62:43:06, \
               managed=true, \
               type=Nic::Managed, \
               domain_id=1, \
               subnet_id=1" \
   --interface="identifier=eth2, \
               mac=52:54:00:d3:87:8f, \
               managed=true, \
               type=Nic::Managed, \
               domain_id=1, \
               subnet_id=1" \
   --interface="identifier=bond0, \
               ip=172.25.18.123, \
               type=Nic::Bond, \
               mode=active-backup, \
               attached_devices=[eth1,eth2], \
               managed=true, \
               domain_id=1, \
               subnet_id=1" \
--organization "Your_Organization" \
--location "Your_Location" \
--ask-root-password yes

表4.1 Red Hat Satellite で利用可能なボンディングモード

ボンディングモード説明

balance-rr

送受信は、ボンディングインターフェースで順次行われます。

active-backup

ボンディングインターフェースの中で最初に利用可能になったものから送受信が行われます。アクティブなボンディングインターフェースに障害がある場合に限り別のボンディングインターフェースが使用されます。

balance-xor

送信は選択されたハッシュポリシーに基づいて行われます。このモードでは、特定のピア用に宛先が指定されたトラフィックは常に同じインターフェースで送信されます。

broadcast

すべての送信はすべてのボンディングインターフェースで行われます。

802.a3

同じ設定を共有するアグリゲーショングループを作成します。アクティブなグループのすべてのインターフェースで送受信が行われます。

balance-tlb

送信トラフィックが各ボンディングインターフェースの現在の負荷に応じて配分されます。

balance-alb

受信ロードバランシングは ARP (Address Resolution Protocol) ネゴシエーションにより実現されています。

4.4. ベースボード管理コントローラー (BMC) インターフェースの追加

以下の手順を使用して、ベースボード管理コントローラー (BMC) インターフェースを、この機能をサポートするホストに設定します。

前提条件

  • ipmitool パッケージがインストールされている。
  • ホストの MAC アドレス、IP アドレス、BMC インターフェースのその他の詳細、およびこのインターフェースの適切な認証情報を確認している。

    注記

    BMC インターフェースが管理対象の場合は、BMC インターフェースの MAC アドレスのみが必要になります。これは DHCP 予約を作成するために必要です。

手順

  1. Capsule Server で BMC が有効になっていない場合には、有効にします。

    1. 以下のオプションを指定して satellite-installer スクリプトを実行し、Capsule Server で BMC 電源管理を設定します。

      # satellite-installer --foreman-proxy-bmc=true \
      --foreman-proxy-bmc-default-provider=ipmitool
    2. Satellite Web UI で、インフラストラクチャー > Capsules に移動します。
    3. アクション コラムの一覧から、更新 をクリックします。機能 コラムの一覧に BMC が追加されているはずです。
  2. Satellite Web UI で、ホスト > すべてのホスト に移動します。
  3. 編集するホストの横の 編集 をクリックします。
  4. インターフェース タブで、インターフェースの追加 をクリックします。
  5. タイプ リストから BMC を選択します。タイプ固有の設定オプションがその形式に追加されます。
  6. 一般的なインターフェース設定を指定します。適用できる設定オプションは、物理インターフェースのオプションと同じです (「物理インターフェースの追加」を参照)。
  7. BMC インターフェースに固有の設定オプションを指定する方法:

    • ユーザー名およびパスワード :BMC で必要な認証情報を指定します。
    • Provider: BMC プロバイダーを指定します。
  8. OK をクリックして、インターフェース設定を保存します。
  9. 送信 をクリックして、ホストへの変更を適用します。

第5章 ホストの RHEL7 から RHEL8 へのアップグレード

ジョブテンプレートを使用して Red Hat Enterprise Linux 7 ホストを Red Hat Enterprise Linux 8 にアップグレードできます。

前提条件

手順

  1. Satellite で foreman_plugin_leapp の Puppet モジュールを有効にします。

    # satellite-installer --enable-foreman-plugin-leapp
  2. Satellite Web UI で、ホスト > すべてのホスト に移動します。
  3. Red Hat Enterprise Linux 8 にアップグレードするホストを選択します。
  4. Hosts ウィンドウの右上の Select Action リストから Preupgrade check with Leapp を選択します。
  5. Submit をクリックして、アップグレード前のチェックを開始します。
  6. チェックが完了したら Leapp preupgrade report タブをクリックして、LEAPP が RHEL 7 ホストで問題を検出したかどうかを確認します。Inhibitor フラグの付いた問題は、重大であるとみなされ、アップグレードの手順に失敗する可能性が高くなります。問題によっては、修正方法を記載したドキュメントにリンクされている場合があります。
  7. オプション:関連付けられているコマンドに問題がある場合は、リモートジョブで修正できます。リモートジョブで問題を修正するには Fix Selected ボタンをクリックしてジョブを送信します。
  8. 問題の修正後に Rerun ボタンをクリックしてから Submit をクリックし、アップグレード前のチェックを実行して RHEL 7 ホストに問題がなく、アップグレードの準備ができていることを確認します。
  9. システムのアップグレード準備ができたら、Run Upgrade ボタンをクリックして送信をクリックし、アップグレードを開始します。

第6章 Red Hat Web コンソールを使用したホストの管理と監視

Red Hat Web コンソールは、アクションの実行と Red Hat Enterprise Linux ホストの監視に使用できるインタラクティブな Web インターフェースです。remote-execution 機能を有効化し、Satellite をRed Hat Web コンソールに統合できます。Satellite で管理するホストに Red Hat Web コンソールをインストールすると、そのホストの Red Hat Web コンソールダッシュボードを Satellite Web UI 内から表示できます。Red Hat Web コンソールに統合されている機能 (Red Hat Image Builder など) を使用することもできます。

6.1. Satellite と Red Hat Web コンソールの統合

デフォルトでは、Red Hat Web コンソールの統合は Satellite で無効になっています。Satellite 内からホストの Red Hat Web コンソール機能にアクセスする場合は、最初に Satellite Server で Red Hat Web コンソール統合を有効にする必要があります。

手順

  • Satellite Server で --enable-foreman-plugin-remote-execution-cockpit オプションを指定して satellite-installer を実行します。

    # satellite-installer --enable-foreman-plugin-remote-execution-cockpit

6.2. Red Hat Web コンソールを使用したホストの管理と監視

Satellite Web UI を介して Red Hat Webコンソール Web UI にアクセスし、その機能を使用して Satellite のホストを管理および監視できます。

前提条件

  • Red Hat Web コンソールが Satellite で有効になっている。
  • Red Hat Web コンソールが、表示するホストにインストールされていること。

  • Satellite または Capsule は、SSH 鍵を使用してホストを認証できる。詳細は、「リモート実行のための SSH 鍵の配布」 を参照してください。

手順

  1. Satellite Web UI で、ホスト > すべてのホスト に移動し、Red Hat Web コンソールを使用して管理および監視するホストを選択します。
  2. ホストウィンドウの右上で Web コンソール をクリックします。

これで、Red Hat Web コンソールを介して、ホストの監視と管理に使用できるすべての機能 (Red Hat Image Builder など) にアクセスできるようになりました。

Red Hat Web コンソールを使い始めるための詳細は、『RHEL 8 で Web コンソールを使用したシステムの管理』ガイド、または『RHEL 7 で Web コンソールを使用したシステムの管理』ガイドを参照してください。

Red Hat Web コンソールでの Red Hat Image Builder の使用に関する詳細は、『RHEL 8 Web コンソールで Image Builder GUI へのアクセス』または『RHEL 7 Web コンソールで Image Builder GUI へのアクセス』を参照してください。

第7章 Red Hat Insights を使用したホストの監視

本章では、ホスト監視レポートの作成、Red Hat Insights を使用したホストの監視、および Insights プランの作成について説明しています。

7.1. Satellite のホストでの Red Hat Insights の使用

Red Hat Insights を使用すると、セキュリティー違反、パフォーマンスの低下、および安定性の消失に関連するシステムとダウンタイムを診断できます。ダッシュボードを使用して、安定性、セキュリティー、およびパフォーマンスの主要なリスクを素早く特定できます。また、カテゴリー別に分類したり、影響度および解決方法の詳細を表示したり、影響を受けたシステムを調べたりすることができます。

Red Hat Insights を使用して Satellite で管理するホストを監視するには、Red Hat Insights をホストにインストールしてから、ホストを Red Hat Insights に登録する必要があります。

Puppet を使用して、または手動でホストをインストールおよび登録する方法については、Red Hat Insights を使い始める を参照してください。

Ansible ロールを使用した Red Hat Insights のデプロイ

RedHatInsights.insights-client Ansible ロールを使用して、Red Hat Insights でのホストのインストールと登録を自動化できます。このロールの Satellite への追加に関する詳細は、『Satellite で Ansible を使用するための設定』の「Satellite で Ansible を使い始める」を参照してください。

  1. RedHatInsights.insights-client ロールをホストに追加します。

    新しいホストについては、「Red Hat Satellite でのホストの作成」 を参照してください。

    既存のホストについては、『Satellite で Ansible を使用するための設定』の「Ansible ロールを使用した Satellite ホスト上での反復タスクの自動化」を参照してください。

  2. RedHatInsights.insights-client ロールをホストで実行するには、ホスト > すべてのホスト に移動して、使用するホスト名をクリックします。
  3. Ansible ロールの実行 ボタンをクリックします。

ロール実行が完了したら、Satellite Web UI の Insights > 概要 ページで追加したホストの表示と作業が可能になります。

追加情報

  • Red Hat Insights プラグインにシステム更新を適用するには、更新後に httpd restart を入力します。
  • Red Hat Insights およびすべてのプラグインのログを確認するには、/var/log/foreman/production.log に移動します。
  • Red Hat Insights との接続に問題がある場合は、証明書が最新のものであることを確認してください。サブスクリプションマニフェストをリフレッシュして証明書を更新します。
  • ホスト上に insights-client.timer を設定することで、デフォルトの insights-client 実行スケジュールを変更することができます。詳細は、『Red Hat Insights のクライアント設定ガイド』の「insights-client スケジュールの変更」を参照してください。

7.2. ホストの Insights プランの作成

Satellite 6 で、Red Hat Insights 修復プランを作成し、Satellite ホストでこのプランを実行します。

手順

プランを作成するには、以下の手順を行います。

  1. Satellite Web UI で Insights > インベントリー に移動して、Insights プランに追加するホストを選択します。
  2. アクション リストから 新規プラン/Playbook の作成 を選択します。
  3. プラン/Playbook ビルダーウィンドウから、新規プランの作成 を選択して、プランの名前を入力します。
  4. 特定のシステム、グループまたは全システムに、ルールを適用するかどうかを選択します。
  5. プランに追加するルールを 1 つまたは複数選択します。フィルター フィールドを使用して、特定のキーワードを検索します。
  6. 保存 をクリックします。
  7. プランナーウィンドウで、Playbook の実行 を選択します。

Playbook を実行しながら、ジョブウィンドウでプランの進捗を表示できます。

Insights > プランナー に移動して、Insights プランを表示できます。

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

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

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

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

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

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

手順

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

CLI をご利用の場合

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

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

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

    # hammer report-template generate --id template ID

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

8.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. オプション:テンプレートの入力にファクトを使用する場合は、Advanced チェックボックスを選択します。
  10. オプション:Options フィールドで、ユーザーが選択できるオプションを定義します。このフィールドが未定義のままである場合、ユーザーは必要な値を入力できるフリーテキストフィールドを受け取ります。
  11. オプション:デフォルト フィールドには、デフォルトのテンプレート入力として設定する値(ホスト名など)を入力します。
  12. オプション:説明 フィールドには、レポートの生成時に入力に関するインラインヘルプとして表示する情報を入力できます。
  13. オプション:タイプ タブをクリックして、このテンプレートが他のテンプレートに追加されるスニペットかどうかを選択します。
  14. ロケーション タブをクリックして、テンプレートを使用するロケーションを追加します。
  15. 組織 タブをクリックして、テンプレートを使用する組織を追加します。
  16. 送信 をクリックして変更を保存します。

8.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

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

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

手順

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

    要求例:

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

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

    応答例:

    {
        "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 をメモし、以下のリクエストを使用してテンプレートをエクスポートします。

    要求例:

    $ 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 にリダイレクトされます。

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

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

前提条件

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

手順

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

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

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

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

前提条件

手順

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

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

    ERB テンプレートを含む JSON ファイルの例:

    {
        "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

8.7. エンタイトルメントを監視するレポートテンプレートの作成

レポートテンプレートを使用して、特定のサブスクリプションを持つホストの一覧を返し、それらのホストのコア数を表示できます。

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

手順

  1. Satellite Web UI で、監視 > レポートテンプレート に移動して、テンプレートの作成 をクリックします。
  2. オプション:Editor フィールドで <%# > タグを使用して、後の参照に役立つ可能性のある情報を含むコメントを追加します。以下は例になります。

    <%#
    name: Entitlements
    snippet: false
    model: ReportTemplate
    require:
    - plugin: katello
      version: 3.14.0
    -%>
  3. load_hosts() マクロを使用して行を追加し、以下のメソッドと変数をマクロに入力します。

    <%- load_hosts(includes: [:lifecycle_environment, :operatingsystem, :architecture, :content_view, :organization, :reported_data, :subscription_facet, :pools => [:subscription]]).each_record do |host| -%>

    使用できる変数の一覧を表示するには、ヘルプ タブをクリックし、セーフモードのメソッドと変数 の表で、Host::Managed 行 を探します。

  4. each メソッドを使用して、host.pools 変数で行を追加します。以下に例を示します。

    <%- host.pools.each do |pool| -%>
  5. report_row() メソッドで行を追加してレポートを作成し、レポートの一部としてターゲットにする変数を追加します。

    <%-     report_row(
              'Name': host.name,
              'Organization': host.organization,
              'Lifecycle Environment': host.lifecycle_environment,
              'Content View': host.content_view,
              'Host Collections': host.host_collections,
              'Virtual': host.virtual,
              'Guest of Host': host.hypervisor_host,
              'OS': host.operatingsystem,
              'Arch': host.architecture,
              'Sockets': host.sockets,
              'RAM': host.ram,
              'Cores': host.cores,
              'SLA': host_sla(host),
              'Products': host_products(host),
              'Subscription Name': sub_name(pool),
              'Subscription Type': pool.type,
              'Subscription Quantity': pool.quantity,
              'Subscription SKU': sub_sku(pool),
              'Subscription Contract': pool.contract_number,
              'Subscription Account': pool.account_number,
              'Subscription Start': pool.start_date,
              'Subscription End': pool.end_date,
              'Subscription Guest': registered_through(host)
              ) -%>
  6. テンプレートに終了ステートメントを追加します。

    <%-   end -%>
    <%- end -%>
  7. レポートを生成するには、<%= report_render -%> マクロを追加する必要があります。

    <%= report_render -%>
  8. 送信 をクリックしてテンプレートを保存します。

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

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

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

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

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

第9章 ホストコレクションの設定

ホストコレクションは、複数のコンテンツホストのグループです。この機能により、一度に複数のホストで同じアクションを実行できます。この アクションにはパッケージおよびエラータのインストール、削除、更新や、割り当てているライフサイクル環境の変更、コンテンツビューの変更が含まれます。お客様の要件を満たすためにホストコレクションを作成できます。たとえば、職務、部署、事業単位でホストコレクションのホストを 1 つにまとめます。

9.1. ホストコレクションの作成

以下の手順では、ホストコレクションから作成する方法を示します。

ホストコレクションの作成方法:

  1. ホスト > ホストコレクション をクリックします。
  2. 新規ホストコレクション をクリックします。
  3. ホストコレクションの名前を追加します。
  4. 無制限のコンテンツホスト を削除して、制限 フィールドにホストの最大数を入力します。
  5. ホストコレクションの説明を追加します。
  6. 保存 をクリックします。

CLI をご利用の場合

ホストコレクションを作成するには、以下のコマンドを実行します。

# hammer host-collection create \
--organization "Your_Organization" \
--name hc_name

9.2. ホストコレクションのクローン作成

以下の手順では、ホストコレクションのクローンを作成する方法を示します。

ホストコレクションのクローン作成方法:

  1. ホスト > ホストコレクション をクリックします。
  2. 左側のパネルで、クローンを作成するホストコレクションをクリックします。
  3. コレクションのコピー をクリックします。
  4. クローン作成されたコレクションの名前を指定します。
  5. 作成 をクリックします。

9.3. ホストコレクションの削除

以下の手順では、ホストコレクションを削除する方法を示します。

ホストコレクションの削除方法:

  1. ホスト > ホストコレクション をクリックします。
  2. 削除するホストコレクションを選択します。
  3. 削除 をクリックします。警告ボックスが表示されます。

    Are you sure you want to remove host collection Host Collection Name?
  4. 削除 をクリックします。

9.4. ホストコレクションへのホストの追加

以下の手順では、ホストをホストコレクションに追加する方法を示します。

前提条件

ホストコレクションに追加するために、ホストを Red Hat Satellite に登録しておく。ホストの登録に関する情報は、「3章ホストの登録」を参照してください。

ホストをホストコレクションに追加すると、Satellite 監査システムでは変更がログに記録されないので注意してください。

ホストコレクションへのホストの追加方法:

  1. ホスト > ホストコレクション をクリックします。
  2. ホストの追加先となるホストコレクションをクリックします。
  3. ホスト タブで、追加 サブタブを選択します。
  4. テーブルから追加するホストを選択してから、選択項目の追加 をクリックします。

CLI をご利用の場合

ホストコレクションにホストを追加するには、以下のコマンドを実行します。

# hammer host-collection add-host \
--id hc_ID \
--host-ids host_ID1,host_ID2...

9.5. ホストコレクションからのホストの削除

以下の手順では、ホストをホストコレクションから削除する方法を示します。

ホストコレクションからホストを削除すると、データベースのホストコレクションのレコードは変更されないため、Satellite 監査システムでは変更はログに記録されないので注意してください。

ホストコレクションからのホストの削除方法:

  1. ホスト > ホストコレクション をクリックします。
  2. 必要なホストコレクションを選択します。
  3. ホスト タブで、一覧表示/削除 サブタブを選択します。
  4. ホストコレクションから削除するホストを選択し、選択項目の削除 をクリックします。

9.6. ホストコレクションへのコンテンツの追加

以下の手順は、Red Hat Satellite でコンテンツをホストコレクションに追加する方法を示しています。

9.6.1. パッケージのホストコレクションへの追加

以下の手順では、パッケージをホストコレクションに追加する方法を示します。

前提条件

  • この手順を実行する前に、追加予定のコンテンツを既存のリポジトリーの 1 つで利用できるようにしておく。または追加しておく。
  • ホストの割り当て先の環境にコンテンツをプロモートしておく。

ホストコレクションへのパッケージの追加方法:

  1. ホスト > ホストコレクション をクリックします。
  2. パッケージの追加先となるホストコレクションをクリックします。
  3. コレクションの各種アクション タブで、パッケージのインストール、削除、および更新 をクリックします。
  4. すべてのパッケージを更新するには、すべてのパッケージの更新 ボタンをクリックして、デフォルトメソッドを使用します。または、ボタン右側のドロップダウンアイコンを選択して、使用するメソッドを選択します。リモート実行 - 最初にカスタマイズ メニューエントリーを選択すると、ジョブ呼び出し ページに移動します。ここでアクションをカスタマイズすることができます。
  5. 必要に応じて、ラジオボタン パッケージ または パッケージグループ を選択します。
  6. パッケージまたはパッケージグループの名前をフィールドに指定します。次に、以下をクリックします。

    • インストール: デフォルトメソッドを使用して、新規パッケージをインストールします。または、ボタンの右側にあるドロップダウンアイコンを選択して、使用するメソッドを選択します。リモート実行 - 最初にカスタマイズ メニューエントリーを選択すると、ジョブ呼び出し ページに移動します。ここでアクションをカスタマイズすることができます。
    • 更新: デフォルトメソッドを使用して、ホストコレクションの既存のパッケージを更新します。または、ボタンの右側にあるドロップダウンアイコンを選択して、使用するメソッドを選択します。リモート実行 - 最初にカスタマイズ メニューエントリーを選択すると、ジョブ呼び出し ページに移動します。ここでアクションをカスタマイズすることができます。

9.6.2. エラータのホストコレクションへの追加

以下の手順では、エラータをホストコレクションに追加する方法を示します。

前提条件

  • 追加するエラータは既存リポジトリーのいずれかで利用可能であるか、またはリポジトリーにない場合は、この手順を開始する前にリポジトリーに追加しておく必要がある。
  • エラータはホストの割り当てられる環境にプロモートする必要がある。

ホストコレクションへのエラータの追加方法:

  1. ホスト > ホストコレクション をクリックします。
  2. エラータの追加先となるホストコレクションを選択します。
  3. コレクションの各種アクション タブで、エラータのインストール をクリックします。
  4. ホストコレクションに追加するエラータを選択し、選択をインストール ボタンをクリックして、デフォルトメソッドを使用します。または、ボタン右側のドロップダウンアイコンを選択して、使用するメソッドを選択します。リモート実行 - 最初にカスタマイズ メニューエントリーを選択すると、ジョブ呼び出し ページに移動します。ここでアクションをカスタマイズすることができます。

9.7. ホストコレクションからのコンテンツの削除

以下の手順では、パッケージをホストコレクションから削除する方法を示します。

ホストコレクションからのコンテンツの削除方法:

  1. ホスト > ホストコレクション をクリックします。
  2. パッケージを削除するホストコレクションをクリックします。
  3. コレクションの各種アクション タブで、パッケージのインストール、削除、および更新 をクリックします。
  4. 必要に応じて、ラジオボタン パッケージ または パッケージグループ を選択します。
  5. パッケージまたはパッケージグループの名前をフィールドに指定します。
  6. 削除 ボタンをクリックし、デフォルトメソッドを使用するパッケージまたはパッケージグループを選択します。または、ボタンの右側にあるドロップダウンアイコンを選択して、使用するメソッドを選択します。リモート実行 - 最初にカスタマイズ メニューエントリーを選択すると、ジョブ呼び出し ページに移動します。ここでアクションをカスタマイズすることができます。

9.8. ホストコレクションのライフサイクル環境またはコンテンツビューの変更

以下の手順では、ホストコレクションの割り当てられたライフサイクル環境またはコンテンツビューを変更する方法を示します。

ホストコレクションのライフサイクル環境またはコンテンツビューを変更する方法:

  1. ホスト > ホストコレクション をクリックします。
  2. ライフサイクル環境またはコンテンツビューを変更するホストコレクションを選択します。
  3. コレクションの各種アクション タブで、割り当て済みのライフサイクル環境またはコンテンツビューの変更 をクリックします。
  4. ホストコレクションに割り当てるライフサイクル環境を選択します。
  5. 一覧から必要なコンテンツビューを選択します。
  6. 割り当て をクリックします。

    注記

    変更が反映するには約 4 時間かかります。ホストで変更を直ちに反映させるには、以下のコマンドを実行します。

    # subscription-manager refresh

    リモート実行を使用すれば、複数のホストで同時にこのコマンドを実行できます。

第10章 リモートジョブの設定およびセットアップ

このセクションでは、リモートホストでジョブを実行するように Satellite を設定する方法を説明します。

リモートホストで適用するコマンドはジョブテンプレートとして定義する必要があります。ジョブテンプレートを定義した後はこれを複数回使用することができます。

10.1. ホストでのジョブの実行について

シェルスクリプトまたは Ansible タスクと Playbook を使用して、Capsules からリモートでホスト上でジョブを実行できます。これはリモート実行と呼ばれます。

作成したカスタムの Ansible ロール、またはダウンロードしたロールの場合、ロールを含むパッケージを Capsule のベースオペレーティングシステムにインストールする必要があります。Ansible ロールを使用する前に、ロールがインストールされている Capsule から Satellite にロールをインポートする必要があります。

通信は Capsule Server 経由で行われるので、Satellite Server にはターゲットホストへの直接のアクセスが不要で、スケーリングして多数のホストを管理できます。リモート実行は、SSH サービスを使用します。SSH サービスは、ターゲットホストで有効化され、実行されている必要があります。リモート実行 Capsule が、ターゲットホストのポート 22 にアクセスできることを確認してください。

Satellite は、Embedded Ruby (ERB) 構文ジョブテンプレートを使用します。詳細は、『ホストの管理』ガイドの「テンプレート作成の参照」を参照してください。

シェルスクリプトおよび Ansible のジョブテンプレートが複数、デフォルトで含まれています。詳細は、「ジョブテンプレートのセットアップ」 を参照してください。

デフォルトでは、Satellite Server はリモート実行ではなく Katello エージェントを使用するように設定されています。この設定を変更するには、管理 > 設定 に移動し、コンテンツ をクリックして、Use remote execution by default の設定を変更します。

注記

Capsule Server のベースオペレーティングシステムは、Satellite Server の内部 Capsule のクライアントであるため、このセクションは Capsule Server を含む Satellite Server に接続されるホストのすべてのタイプに適用されます。

複数のホストでジョブを一度に実行でき、コマンドで変数を使用すると、実行するジョブをより詳細に制御できます。ホストファクトとパラメーターを使用して、変数の値を設定できます。

さらに、コマンドの実行時にテンプレートのカスタム値を指定できます。

詳細は、「リモートジョブの実行」 を参照してください。

10.2. リモート実行のワークフロー

ホストでリモートジョブを実行すると、すべてのホストについて、Satellite は以下のアクションを実行して、使用するリモート実行 Capsule を検出します。

Satellite は、リモート実行機能が有効になっている Capsules のみを検索します。

  1. Satellite は、リモート実行 のチェックボックスが選択されているホストのインターフェースを検出します。
  2. Satellite はこれらのインターフェースのサブネットを検出します。
  3. Satellite は、これらのサブネットに割り当てられたリモート実行 Capsule を検出します。
  4. この Capsule のセットから、Satellite は実行中のジョブの数が最も少ない Capsule を選択します。こうすることで、Satellite はリモート実行 Capsule 間でのジョブの負荷を確実に分散させます。
  5. この段階で Satellite がリモート実行 Capsule を検出できず、任意の Capsule へのフォールバック 設定が有効になっている場合、Satellite は別の Capsule のセットを追加して、そこからリモート実行 Capsule を選択します。Satellite は、ホストに割り当てられている以下のタイプの Capsule の中から最も負荷の少ない Capsule を選択します。

    • ホストのサブネットに割り当てられた DHCP Capsule、DNS Capsule、および TFTP Capsule
    • ホストのドメインに割り当てられた DNS Capsule
    • ホストのレルムに割り当てられた Realm Capsule
    • Puppet Master Capsule
    • Puppet CA Capsule
    • OpenSCAP Capsule
  6. この段階で Satellite がリモート実行 Capsule を検出せず、グローバル Capsule の有効化 設定が有効になっている場合、Satellite は、ホストの組織およびロケーションにあるすべての Capsule のセットから最も負荷の少ないリモート実行 Capsule を選択し、リモートジョブを実行します。

10.3. リモート実行用のパーミッションの委任

ターゲットにするホストを含め、インフラストラクチャー内で実行するジョブとそれを実行するユーザーを制御できます。リモート実行機能は 2 つの組み込みロールを提供します。

  • Remote Execution Manager:このロールは、すべてのリモート実行機能および機能へのアクセスを許可します。
  • Remote Execution User:このロールは実行中のジョブのみを許可します。ジョブテンプレートを変更するパーミッションは提供されません。

Remote Execution User (リモート実行ユーザー) ロールのクローンを作成し、そのフィルターをカスタマイズして詳細度を高めることができます。view_job_templates パーミッションでフィルターを調整する場合、ユーザーは一致するジョブテンプレートに基づくジョブのみを確認し、トリガーすることが可能です。view_hosts パーミッションおよび view_smart_proxies パーミッションを使用すると、ロールに表示されるホストまたは Capsule を制限できます。

execute_template_invocation パーミッションは、ジョブの実行が開始する直前に確認される特殊なパーミッションです。このパーミッションは、特定のホストで実行できるジョブテンプレートを定義します。これにより、パーミッションの指定時に詳細度をさらに高めることができます。ロールおよびパーミッションの使用については、『Administering Red Hat Satellite』の「Creating and Managing Roles」を参照してください。

以下の例は、execute_template_invocation パーミッションのフィルターを示しています。

name = Reboot and host.name = staging.example.com
name = Reboot and host.name ~ *.staging.example.com
name = "Restart service" and host_group.name = webservers

上記の例の最初の行により、ユーザーは選択した 1 つのホストで Reboot テンプレートを適用できます。2 番目の行は、.staging.example.com で終わる名前を持つホストのプールを定義します。3 番目の行はテンプレートをホストグループにバインドします。

注記

ユーザーに割り当てるパーミッションは時間の経過と共に変更されます。ユーザーに将来実行するスケジュールされたジョブがあり、パーミッションが変更された場合、パーミッションはジョブ実行の直前にチェックされるため、実行が失敗する可能性があります。

10.4. ジョブテンプレートの作成

  1. ホスト > ジョブテンプレート に移動します。
  2. 新規ジョブテンプレート をクリックします。
  3. テンプレート タブをクリックして、名前 フィールドにジョブテンプレートの一意名を入力します。
  4. デフォルト を選択して、テンプレートをすべての組織およびロケーションで利用できるようにします。
  5. テンプレートエディターで直接テンプレートを作成するか、インポート をクリックしてテキストファイルからテンプレートをアップロードします。
  6. オプション:監査コメント フィールドに、変更に関する情報を追加します。
  7. ジョブ タブをクリックして、ジョブカテゴリー フィールドに独自のカテゴリーを入力するか、「デフォルトのジョブテンプレートカテゴリー」 に記載のデフォルトカテゴリーから選択します。
  8. オプション:説明形式 フィールドには、説明テンプレートを入力します。(例: Install package %{package_name})。また、テンプレートでは %{template_name} および %{job_category} も使用できます。
  9. プロバイダータイプ リストから、Shell スクリプトに SSH を、Ansible タスクまたは Playbook に Ansible を選択します。
  10. オプション:Timeout to kill フィールドに、ジョブが完了しない場合にジョブを終了するタイムアウト値を入力します。
  11. オプション:入力を追加 をクリックして入力パラメーターを定義します。ジョブの実行時にパラメーターを要求し、テンプレートに定義する必要はありません。各種サンプルについては、ヘルプ タブを参照してください。
  12. オプション:Foreign input set をクリックして、このジョブに他のテンプレートを追加します。
  13. オプション:実効ユーザーエリアで、コマンドがデフォルトの remote_execution_effective_user 設定を使用できない場合は、ユーザーを設定します。
  14. オプション:このテンプレートをスニペットとして他のテンプレートに追加する場合は、タイプ タブをクリックして、スニペット を選択します。
  15. ロケーション タブをクリックして、テンプレートを使用するロケーションを追加します。
  16. 組織 タブをクリックして、テンプレートを使用する組織を追加します。
  17. 送信 をクリックして変更を保存します。

テンプレート構文に他のテンプレートを追加して、ジョブテンプレートを拡張およびカスタマイズできます。詳細は、『ホストの管理』ガイドの付録を参照してください。

CLI をご利用の場合

テンプレート定義ファイルを使用してジョブテンプレートを作成するには、以下のコマンドを使用します。

# hammer job-template create \
--file "path_to_template_file" \
--name "template_name" \
--provider-type SSH \
--job-category "category_name"

10.5. Satellite での任意の Capsule へのフォールバックリモート実行の設定

任意の Capsule へのフォールバック 設定を有効にして、ホストに割り当てられている Capsule の一覧からリモート実行 Capsule を検索するように Satellite を設定できます。これは、サブネットが設定されていないホストでリモートジョブを実行する必要がある場合、またはリモート実行機能が有効になっていない Capsule にホストのサブネットが割り当てられている場合に役立ちます。

任意の Capsule へのフォールバック 設定が有効になっている場合、Satellite は別の Capsule のセットを追加して、そこからリモート実行 Capsule を選択します。また、以下のように Satellite は、ホストに割り当てられたすべての Capsule のセットから最も負荷の少ない Capsule を選択します。

  • ホストのサブネットに割り当てられた DHCP Capsule、DNS Capsule、および TFTP Capsule
  • ホストのドメインに割り当てられた DNS Capsule
  • ホストのレルムに割り当てられた Realm Capsule
  • Puppet Master Capsule
  • Puppet CA Capsule
  • OpenSCAP Capsule

手順

  1. Satellite Web UI で、管理 > 設定に移動します。
  2. リモート実行 をクリックします。
  3. 任意の Capsule へのフォールバック を設定します。

CLI をご利用の場合

Satellite で hammer settings set コマンドを入力して、任意の Capsule へのフォールバック を設定します。たとえば、値を true に設定するには、以下のコマンドを入力します。

# hammer settings set --name=remote_execution_fallback_proxy --value=true

10.6. Satellite でのグローバル Capsule リモート実行の設定

デフォルトで Satellite は、Capsule がホストのサブネットに割り当てられているかどうかに関係なく、ホストの組織とロケーションでリモート実行 Capsule を検索します。ホストのサブネットに割り当てられている Capsule に検索を限定する場合は、グローバル Capsule の有効化 設定を無効化することができます。

グローバル Capsule の有効化 設定が有効になっている場合、Satellite は別の Capsule のセットを追加して、そこからリモート実行 Capsule を選択します。また、Satellite は、ホストの組織およびロケーションにあるすべての Capsule のセットから最も負荷の少ないリモート実行 Capsule を選択し、リモートジョブを実行します。

手順

  1. Satellite Web UI で、管理 > 設定に移動します。
  2. リモート実行 をクリックします。
  3. グローバル Capsule の有効化 を設定します。

CLI をご利用の場合

Satelliteで hammer settings set コマンドを入力して、Enable Global Capsule を設定します。たとえば、値を true に設定するには、以下のコマンドを入力します。

# hammer settings set --name=remote_execution_global_proxy --value=true

10.7. 代替ディレクトリーを使用してホストでリモートジョブを実行するための Satellite の設定

デフォルトで Satellite は、クライアントシステムの /var/tmp ディレクトリーを使用して、リモート実行ジョブを実行します。クライアントシステムの /var/ ボリュームまたはファイルシステムに noexec が設定されている場合は、代替ディレクトリーを使用するように Satellite を設定する必要があります。設定されない場合はスクリプトを実行できないので、リモート実行ジョブは失敗します。

手順

代替ディレクトリーを使用するには、この手順を実行します。

  1. 新しいディレクトリーを作成します (例: new_place )。

    # mkdir /remote_working_dir
  2. デフォルトの var ディレクトリーから SELinux コンテキストをコピーします。

    # chcon --reference=/var /remote_working_dir
  3. /etc/foreman-proxy/settings.d/remote_execution_ssh.yml ファイルの remote_working_dir 設定を編集して、必要なディレクトリーにポイントさせます。以下に例を示します。

    :remote_working_dir: /remote_working_dir

10.8. リモート実行のための SSH 鍵の配布

リモート実行接続の認証に SSH 鍵を使用するには、Capsule から管理するアタッチ済みのホストに、公開 SSH 鍵を配布する必要があります。ホストで SSH サービスが有効化され、実行していることを確認します。ポート 22 にアクセスできるように、ネットワークまたはホストベースのファイアウォールを設定し、ポート 22 へのアクセスを有効化します。

Capsule からターゲットホストに公開 SSH 鍵を配布するには、以下のいずれか 1 つの方法を使用します。

Satellite は、リモート実行機能の SSH 鍵を、デフォルトで Satellite からプロビジョニングされたホストに配布します。

ホストが Amazon Web Services で実行されている場合は、パスワード認証を有効にします。詳細は、https://aws.amazon.com/premiumsupport/knowledge-center/new-user-accounts-linux-instance を参照してください。

10.9. リモート実行用の SSH 鍵の手動での配布

SSH 鍵を手動で配布するには、以下の手順を実行します。

手順

  1. Capsule で以下のコマンドを入力します。管理するターゲットホストごとに繰り返します。

    # ssh-copy-id -i ~foreman-proxy/.ssh/id_rsa_foreman_proxy.pub root@target.example.com
  2. ターゲットホストに鍵が正常にコピーされたことを確認するには、Capsule で以下のコマンドを入力します。

    # ssh -i ~foreman-proxy/.ssh/id_rsa_foreman_proxy root@target.example.com

10.10. Satellite API を使用したリモート実行用の SSH 鍵の取得

Satellite API を使用して Capsule から公開鍵をダウンロードするには、各ターゲットホストでこの手順を実行します。

手順

  1. ターゲットホストで /.ssh ディレクトリーを作成し、SSH 鍵を保存します。

    # mkdir ~/.ssh
  2. Capsule から SSH 鍵をダウンロードします。

    # curl https://capsule.example.com:9090/ssh/pubkey >> ~/.ssh/authorized_keys
  3. ~/.ssh ディレクトリーのパーミッションを設定します。

    # chmod 700 ~/.ssh
  4. authorized_keys ファイルのパーミッションを設定します。

    # chmod 600 ~/.ssh/authorized_keys

10.11. プロビジョニング中に SSH 鍵を配布するキックスタートテンプレートの設定

remote_execution_ssh_keys スニペットをカスタムキックスタートテンプレートに追加して、プロビジョニング中に SSH 鍵をホストにデプロイできます。Satellite に同梱されるキックスタートテンプレートには、デフォルトでこのスニペットが含まれています。したがって、Satellite はプロビジョニング中にリモート実行用の SSH 鍵をシステムにコピーします。

手順

  • 新しくプロビジョニングされたホストに公開鍵を含めるには、使用するキックスタートテンプレートに以下のスニペットを追加します。

    <%= snippet 'remote_execution_ssh_keys' %>

10.12. Kerberos チケットを付与するための Keytab の設定

以下の手順を使用して、Satellite が Keytab を使用して Kerberos 付与チケットを取得するように設定します。Keytab が設定されていないと、手動でチケットを取得する必要があります。

手順

以下の手順を実行して、Satellite の foreman-proxy ユーザーが Kerberos 付与チケットを取得できるようにします。

  1. foreman-proxy ユーザーの ID を特定します。

    # id -u foreman-proxy
  2. 新しいファイルのパーミッションが 600 になるように、umask の値を変更します。

    # umask 077
  3. Keytab のディレクトリーを作成します。

    # mkdir -p "/var/kerberos/krb5/user/USER_ID"
  4. Keytab を作成するか、既存の Keytab をディレクトリーにコピーします。

    # cp your_client.keytab /var/kerberos/krb5/user/USER_ID/client.keytab
  5. ディレクトリーの所有者を foreman-proxy ユーザーに変更します。

    # chown -R foreman-proxy:foreman-proxy "/var/kerberos/krb5/user/USER_ID"
  6. keytab ファイルが読み取り専用であることを確認します。

    # chmod -wx "/var/kerberos/krb5/user/USER_ID/client.keytab"
  7. SELinux コンテキストを復元します。

    # restorecon -RvF /var/kerberos/krb5

10.13. リモート実行用の Kerberos 認証の設定

Kerberos 認証を使用して、Satellite ホストでのリモート実行に SSH 接続を確立できます。

前提条件

Red Hat Satellite でリモート実行に Kerberos 認証を使用する前に、ID 管理に Kerberos サーバーを設定し、以下の前提条件が完了していることを確認します。

  • Kerberos サーバーに Satellite Server を登録する。
  • Kerberos サーバーに Satellite ターゲットホストを登録する。
  • リモート実行用に Kerberos ユーザーアカウントを設定して初期化する。
  • Satellite の foreman-proxy ユーザーに、チケットを付与する有効な Kerberos チケットがあることを確認する。

手順

ホストでリモート実行に Kerberos 認証を使用するように Satellite を設定するには、以下の手順を完了します。

  1. リモート実行に Kerberos 認証をインストールおよび有効にするには、以下のコマンドを入力します。

    # satellite-installer --scenario satellite \
     --foreman-proxy-plugin-remote-execution-ssh-ssh-kerberos-auth true
  2. リモート実行のデフォルトユーザーを編集するには、Satellite Web UI で 管理 > 設定 に移動して、リモート実行 タブをクリックします。SSH User 行で 2 番目のコラムを編集し、Kerberos アカウントのユーザー名を追加します。
  3. remote_execution_effective_user に移動し、2 番目のコラムを編集して、Kerberos アカウントのユーザー名を追加します。

Kerberos 認証が使用できることを確認するには、ホストでリモートジョブを実行します。

10.14. ジョブテンプレートのセットアップ

Satellite は、ジョブ実行に使用可能なデフォルトのジョブテンプレートを提供します。ジョブテンプレートの一覧を表示するには、ホスト > ジョブテンプレート に移動します。変更せずにテンプレートを使用する場合は、「リモートジョブの実行」 に進みます。

デフォルトテンプレートは独自のテンプレートを作成するためのベースとして使用することができます。デフォルトのジョブテンプレートは、編集できないようにロックされています。テンプレートのクローンを作成して、作成したクローンを編集します。

  1. テンプレートのクローンを作成するには、アクション コラムで、クローン を選択します。
  2. クローンに一意名を指定して、送信 をクリックして変更を保存します。

ジョブテンプレートは、Embedded Ruby (ERB) 構文を使用します。テンプレートの作成に関する詳細は、『ホストの管理』ガイドの「テンプレート作成の参照」を参照してください。

Ansible の考慮事項

Ansible ジョブテンプレートを作成するには、以下の手順を使用し、ERB 構文ではなく YAML 構文を使用します。テンプレートは --- で開始します。Ansible playbook YAML ファイルをジョブテンプレートの本文に埋め込みます。また、ERB 構文を追加して、YAML Ansible テンプレートをカスタマイズすることも可能です。Satellite に Ansible Playbook をインポートすることも可能です。詳細情報は、『ホストの管理』ガイドの「テンプレートリポジトリーの同期」を参照してください。

パラメーター変数

ランタイム時に、ジョブテンプレートはホストに定義するパラメーター変数を受け取ることができます。ホストの編集ページの パラメーター タブで表示されるパラメーターのみが、ジョブテンプレートの入力パラメーターとして使用できる点にご留意ください。ランタイム時に Ansible ジョブテンプレートがパラメーター変数を受け取らない場合には、Satellite Web UI で 管理 > 設定 に移動して、Ansible タブをクリックします。トップレベルの Ansible 変数 の行で、Value パラメーターを No に変更します。

10.15. リモートジョブの実行

1 つ以上のホストに対してジョブテンプレートに基づくジョブを実行することができます。

手順

  1. ホスト > すべてのホスト に移動し、リモートジョブを実行するターゲットホストを選択します。検索フィールドを使用してホストの一覧を絞り込むことができます。
  2. アクションの選択 リストから リモートジョブのスケジュール を選択します。
  3. ジョブ呼び出し ページで、主なジョブ設定を定義します。
  4. 使用する ジョブカテゴリー および ジョブテンプレートを選択します。
  5. オプション:ブックマーク リストに保存された検索文字列を選択し、ターゲットホストを指定します。
  6. オプション:検索クエリーを入力してターゲットホストをさらに制限します解決 行には、クエリーの影響を受けるホストの数が表示されます。更新ボタンを押して、クエリー変更後の数を再計算します。プレビューアイコンにはターゲットホストが一覧表示されます。
  7. 残りの設定は、選択したジョブテンプレートによって異なります。カスタムパラメーターをテンプレートに追加する方法は、「ジョブテンプレートの作成」 を参照してください。
  8. オプション:ジョブの詳細設定を設定するには、詳細フィールドの表示 をクリックします。一部の詳細設定はジョブテンプレートによって異なります。以下は一般的な設定です。

    • 実効ユーザー: ジョブを実行するためにユーザーを定義します。デフォルトは SSH ユーザーです。
    • 同時実行レベル は一度に実行するジョブの最大数を定義します。この定義で、多数のホストでジョブを実行する時に、システムのリソースに負荷が過剰にかかるのを防ぐことができます。
    • Timeout to kill は、ジョブが終了しない場合に、ジョブの強制終了までの間隔 (秒単位) を定義します。以前のタスクが終了するまで時間がかかりすぎているなど、定義した間隔で起動できなかったタスクはキャンセルされます。
    • クエリーのタイプ: 検索クエリーが評価されるタイミングを定義します。これは、スケジュールされているタスクに対してクエリーが常に最新の状態に保つのに役立ちます。
    • 実行順序 は、ジョブがホストで実行される順序を決定します (アルファベット順またはランダム)。

      同時実行レベル および Timeout to kill 設定により、お使いのインフラストラクチャーハードウェアおよびニーズに合わせてジョブ実行を調整することができます。

  9. ジョブをすぐに実行する場合は、スケジュール今すぐ実行 に設定されていることを確認します。さらに、1 回限りのジョブを未来の日付で定義したり、再帰的に実行するジョブを設定することもできます。再帰的に実行するジョブについては、開始日と終了日、実行回数と頻度を定義できます。また cron 構文を使用して繰り返しを定義することもできます。cron の詳細は、Red Hat Enterprise Linux 7 の『システム管理者のガイド』の「システムタスクの自動化」セクションを参照してください。
  10. 送信 をクリックします。これにより ジョブの概要 ページが表示され、ジョブの完了時にはジョブのステータスも表示されます。

CLI をご利用の場合

Satellite で以下のコマンドを入力します。

# hammer settings set --name=remote_execution_global_proxy --value=false

カスタムパラメーターを使用してリモートジョブを実行するには、以下の手順を実行します。

  1. 使用するジョブテンプレートの ID を検出します。

    # hammer job-template list
  2. テンプレートの詳細を表示して、テンプレートに必要なパラメーターを確認します。

    # hammer job-template info --id template_ID
  3. カスタムパラメーターでリモートジョブを実行します。

    # hammer job-invocation create \
    --job-template "template_name" \
    --inputs key1="value",key2="value",... \
    --search-query "query"

    query は、ホストを定義するフィルター式に置き換えます ("name ~ rex01" など)。hammer を使用したリモートコマンド実行に関する詳細については、hammer job-template --help および hammer job-invocation --help を入力します。

10.16. ジョブの監視

実行中のジョブの進捗を監視できます。これは、トラブルシューティングが必要になる場合に役立ちます。

Ansible ジョブは、ホスト 100 台で一括して実行するので、特定のホストで実行するジョブをキャンセルできません。Ansible Playbook を全ホスト上で一括して実行してからでないと、ジョブは完了しません。

手順

  1. ジョブのページに移動します。このページは、Execute now が設定されているジョブをトリガーすると自動的に表示されます。スケジュールされたジョブを監視するには、監視 > ジョブ に移動して、検査するジョブ実行を選択します。
  2. ジョブページで、ホスト タブをクリックします。これにより、ジョブが実行しているホストの一覧が表示されます。
  3. ホスト コラムで、検査するホストの名前をクリックします。これにより、ジョブの実行をリアルタイムで監視できる コマンドの詳細 ページが表示されます。
  4. いつでも ジョブに戻る をクリックして、ジョブの詳細 ページに戻ることができます。

CLI をご利用の場合

実行中のジョブの進捗を監視するには、次の手順を実行します。

  1. ジョブの ID を検出します。

    # hammer job-invocation list
  2. ジョブの出力を監視します。

    # hammer job-invocation output \
    --id job_ID \
    --host host_name
  3. オプション: ジョブをキャンセルするには、次のコマンドを入力します。

    # hammer job-invocation cancel \
    --id job_ID

第11章 Goferd および Katello エージェントを使用しないホスト管理

Katello エージェントがコンテンツホスト上のパッケージを管理するために使用する goferd サービスは、大量のリソースを消費します。リモート実行を通じてパッケージを管理することで、コンテンツホストのメモリーと CPU の負荷を減らすことができます。

Katello エージェントは非推奨で、今後の Satellite のバージョンでは削除される点にご留意ください。したがって、リモート実行を使用することが、ホスト上のパッケージを管理する唯一の方法になります。

前提条件

  • Satellite Server で、Satellite Tools 6.8 リポジトリーを有効化しておく。詳細は、『オンラインネットワークからの Satellite Server のインストール』の「Satellite Tools 6.8 リポジトリーの有効化」を参照してください。
  • Satellite Server で、Satellite Tools 6.8 リポジトリーを同期しておく。詳細は、『オンラインネットワークからの Satellite Server のインストール』の「Satellite Tools 6.8 リポジトリーの同期」を参照してください。
  • コンテンツホストで Satellite Tools 6.8 リポジトリーを有効化しておく。

手順

  1. コンテンツホストで katello-host-tools パッケージをインストールします。

    # yum install katello-host-tools
  2. コンテンツホストの goferd サービスを停止します。

    # systemctl stop goferd.service
  3. コンテンツホストの goferd サービスを無効化します。

    # systemctl disable goferd.service
  4. コンテンツホスト上の Katello エージェントを削除します。

    警告

    お使いのホストが Red Hat Virtualization のバージョン 4.4 以下にインストールされている場合は、削除された依存関係によりホストが破損するので、katello-agent パッケージを削除しないでください。

    # yum remove katello-agent
  5. コンテンツホストに SSH 鍵を配布します。詳細は、「リモート実行のための SSH 鍵の配布」 を参照してください。
  6. Satellite Web UI で、管理 > 設定に移動します。
  7. コンテンツ タブを選択します。
  8. Use remote execution by default パラメーターを Yes に設定します。

Satellite Server は、goferd の代わりにリモート実行によるホスト管理を使用するようになりました。

Hammer の制限事項

以下は、エラータのプッシュに hammer コマンドを使用している場合に適用されます。hammer コマンドは、goferd を使用してコンテンツホストのエラータを管理しています。回避策としては、Satellite のリモート実行機能を使用して、エラータを適用します。

たとえば、以下のコマンドを入力し、host123.example.orgyum -y update を実行します。

# hammer job-invocation create \
--job-template "Run Command - SSH Default" \
--inputs command="yum -y update" \
--search-query "name ~ host123"
Job invocation 24 created
[.........................................] [100%]
1 task(s), 1 success, 0 fail

第12章 テンプレートリポジトリーの同期

Satellite では、Satellite Server とバージョン管理システムまたはローカルディレクトリー間で、ジョブテンプレート、プロビジョニングテンプレート、レポートテンプレート、およびパーティションテーブルテンプレートのリポジトリーを同期できます。本章では、Git リポジトリーをデモ目的で使用します。

このセクションでは、以下のワークフローを説明します。

  • TemplateSync プラグインのインストールおよび設定
  • タスクのエクスポートおよびインポートの実行

12.1. TemplateSync プラグインの有効化

  1. Satellite Server でプラグインを有効化するには、以下のコマンドを入力します。

    # satellite-installer --enable-foreman-plugin-templates
  2. プラグインが適切にインストールされていることを確認するには、管理 > 設定TemplateSync メニューがあることを確認します。

12.2. TemplateSync プラグインの設定

Satellite Web UI で、管理 > 設定 > TemplateSync に移動して、プラグインを設定します。以下の表は、属性の動作を説明しています。一部の属性は、タスクのインポートまたはエクスポートにのみ使用される点にご留意ください。

表12.1 テンプレートのプラグイン設定の同期

パラメーターAPI パラメーター名インポートの意味エクスポートの意味

関連付け

associate

許可される値: alwaysnewnever

OS、組織、およびロケーションベースのメタデータへのテンプレートの関連付け

該当なし

ブランチ

branch

Git リポジトリーで、読み取るデフォルトブランチを指定します。

Git リポジトリーで、書き込むデフォルトブランチを指定します。

ディレクトリー名

dirname

リポジトリー下で、読み込むサブディレクトリーを指定します。

リポジトリー下で、書き込むサブディレクトリーを指定します。

フィルター

filter

正規表現に一致する名前を持つテンプレートだけをインポートします。

正規表現に一致する名前を持つテンプレートだけをエクスポートします。

強制インポート

force

インポートしたテンプレートで、ロックされている同じ名前のテンプレートを上書きします。

該当なし

テンプレートのロック

lock

強制インポート が有効になっていない限り、同じ名前の新しいテンプレートをインポートするときに既存のテンプレートを上書きしないでください。

該当なし

メタデータエクスポートモード

metadata_export_mode

許可される値: refreshkeepremove

該当なし

エクスポートする際にメタデータが処理される方法を定義します。

  • リフレッシュ — テンプレートコンテンツから既存のメタデータを削除して、現在の割り当ておよび属性をベースにしたメタデータを新たに生成します。
  • 維持: 既存のメタデータを持続します。
  • 削除: メタデータがないテンプレートをエクスポートします。メタデータを手動で追加する場合は便利です。

否定

negate

許可される値: truefalse

フィルター属性を無視するテンプレートをインポートします。

フィルター属性を無視するテンプレートをエクスポートします。

接頭辞

prefix

テンプレート名は接頭辞で開始しないため、指定した文字列をテンプレートの頭に追加します。

該当なし

リポジトリー

repo

同期するリポジトリーへのパスを定義します。

エクスポートするリポジトリーへのパスを定義します。

詳細

verbose

許可される値: truefalse

このアクションについて、詳細なメッセージをログに記録します。

該当なし

12.3. テンプレートのインポートおよびエクスポート

Satellite Web UI、Hammer CLI、または Satellite API を使用して、テンプレートをインポートおよびエクスポートできます。Satellite API 呼び出しは、ロールベースのアクセス管理システムを使用して、任意のユーザーでタスクの実行が可能になります。Git などのバージョン管理システム、またはローカルディレクトリーとテンプレートを同期できます。

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

任意のリポジトリーからテンプレートをインポートできます。/tmp/dirgit://example.comhttps://example.com、および ssh://example.com などの異なるプロトコルを使ってリポジトリーにポイントさせることもできます。

前提条件

  • 各テンプレートに、テンプレートが属するロケーションおよび組織が含まれている必要がある。これは、すべてのタイプのテンプレートタイプに適用されます。テンプレートをインポートする前に、以下のセクションをテンプレートに追加します。

    <%#
    kind: provision
    name: My Kickstart File
    oses:
    - RedHat 7
    - RedHat 6
    locations:
    - First Location
    - Second Location
    organizations:
    - Default Organization
    - Extra Organization
    %>

手順

  1. Satellite Web UI で、ホスト > テンプレートの同期 に移動します。
  2. インポート をクリックします。
  3. 各フィールドには、管理 > 設定 > TemplateSync で設定された値が入力されます。インポートするテンプレートに従って値を変更します。各フィールドの詳細は、「TemplateSync プラグインの設定」 を参照してください。
  4. 送信 をクリックします。

Satellite Web UI はインポートのステータスを表示します。ステータスは永続的ではありません。ステータスページを離れると、ページに戻ることはできません。

CLI をご利用の場合

  • リポジトリーからテンプレートをインポートするには、以下のコマンドを実行します。

    $ hammer import-templates \
        --prefix '[Custom Index] ' \
        --filter '.*Template Name$' \
        --repo https://github.com/examplerepo/exampledirectory \
        --branch my_branch \
        --organization 'Default Organization'

    テンプレートのインデックス化と管理には、--prefix を使ってテンプレートにカテゴリーを設定することができます。大型リポジトリーから特定のテンプレートを選択するには、--filter を使ってインポートするテンプレートのタイトルを定義します。たとえば、--filter '.*Ansible Default$' とすると、各種 Ansible Default テンプレートをインポートします。

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

テンプレートは、Git リポジトリーなどのバージョン管理サーバーにエクスポートできます。

手順

  1. Satellite Web UI で、ホスト > テンプレートの同期 に移動します。
  2. エクスポート をクリックします。
  3. 各フィールドには、管理 > 設定 > TemplateSync で設定された値が入力されます。エクスポートするテンプレートに従って値を変更します。各フィールドの詳細は、「TemplateSync プラグインの設定」 を参照してください。
  4. 送信 をクリックします。

Satellite Web UI はエクスポートのステータスを表示します。ステータスは永続的ではありません。ステータスページを離れると、ページに戻ることはできません。

CLI をご利用の場合

  1. Git リポジトリーのローカルコピーのクローンを作成します。

    $ git clone https://github.com/theforeman/community-templates /custom/templates
  2. 以下のコマンドで、ローカルディレクトリーの所有者を foreman ユーザーに変更し、SELinux コンテキストを変更します。

    # chown -R foreman:foreman /custom/templates
    # chcon -R -t httpd_sys_rw_content_t /custom/templates
  3. テンプレートをローカルリポジトリーにエクスポートするには、以下のコマンドを実行します。

    hammer export-templates --organization 'Default Organization' --repo /custom/templates

12.3.3. Satellite API を使用したテンプレートの同期

前提条件

  • 各テンプレートに、テンプレートが属するロケーションおよび組織が含まれている必要がある。これは、すべてのタイプのテンプレートタイプに適用されます。テンプレートをインポートする前に、以下のセクションをテンプレートに追加します。

    <%#
    kind: provision
    name: My Kickstart File
    oses:
    - RedHat 7
    - RedHat 6
    locations:
    - First Location
    - Second Location
    organizations:
    - Default Organization
    - Extra Organization
    %>

手順

  1. SSH 認証を使用するバージョン管理システムを設定します (gitosis、gitolite、git デーモンなど)。
  2. TemplateSync タブで TemplateSync プラグイン設定を設定します。

    1. Branch 設定を変更して、Git サーバーへのターゲットブランチに一致します。
    2. Git リポジトリーに一致するように、Repo 設定を変更します。たとえば、git@git.example.com/templates.git に置いたリポジトリーに対して、設定を ssh://git@git.example.com/templates.git に設定します。
  3. Git SSH ホストキーを foreman ユーザーとして受け取ります。

    # sudo -u foreman ssh git.example.com

    SSH 接続が成功していないため、出力に Permission denied, please try again. メッセージが表示されることが想定されます。

  4. SSH 鍵ペアがない場合は作成します。パスフレーズは指定しないでください。

    # sudo -u foreman ssh-keygen
  5. Satellite の公開鍵を使用してバージョン管理サーバーを設定します。公開鍵は、/usr/share/foreman/.ssh/id_rsa.pub にあります。
  6. Satellite Server から、TemplateSync メニューに指定したバージョン管理リポジトリーにテンプレートをエクスポートします。

    $ curl -H "Accept:application/json,version=2" \
    -H "Content-Type:application/json" \
    -u login:password \
    -k https://_satellite.example.com/api/v2/templates/export \
    -X POST
    
    {"message":"Success"}
  7. コンテンツを変更したら、テンプレートを Satellite Server にインポートします。

    $ curl -H "Accept:application/json,version=2" \
    -H "Content-Type:application/json" \
    -u login:password \
    -k https://_satellite.example.com/api/v2/templates/import \
    -X POST
    
    {“message”:”Success”}

    Satellite が提供するテンプレートがロックされ、デフォルトではインポートできない点にご留意ください。この動作を上書きするには、TemplateSync メニューの Force import 設定を yes に変更するか、force パラメーター -d '{ "force": "true" }’ を import コマンドに追加します。

12.3.4. Satellite API を使用したローカルディレクトリーとテンプレートの同期

ローカルディレクトリーで、バージョン管理リポジトリーを設定した場合は、テンプレートをローカルディレクトリーと同期すると便利です。これにより、テンプレートを編集し、ディレクトリーで編集履歴を追跡できます。テンプレートの編集後に変更を Satellite Server に同期することも可能です。

前提条件

  • 各テンプレートに、テンプレートが属するロケーションおよび組織が含まれている必要がある。これは、すべてのタイプのテンプレートタイプに適用されます。テンプレートをインポートする前に、以下のセクションをテンプレートに追加します。

    <%#
    kind: provision
    name: My Kickstart File
    oses:
    - RedHat 7
    - RedHat 6
    locations:
    - First Location
    - Second Location
    organizations:
    - Default Organization
    - Extra Organization
    %>

手順

  1. テンプレートを保存するディレクトリーを作成し、適切なパーミッションおよび SELinux コンテキストを適用します。

    # mkdir -p /usr/share/templates_dir/
    # chown foreman /usr/share/templates_dir/
    # chcon -t httpd_sys_rw_content_t /usr/share/templates_dir/ -R
  2. TemplateSync タブで Repo 設定を変更し、エクスポートディレクトリー /usr/share/templates_dir/ に一致させます。
  3. Satellite Server からローカルディレクトリーにテンプレートをエクスポートします。

    $ curl -H "Accept:application/json,version=2" \
    -H "Content-Type:application/json" \
    -u login:password \
    -k https://_satellite.example.com/api/v2/templates/export \
    -X POST \
    
    {"message":"Success"}
  4. コンテンツを変更したら、テンプレートを Satellite Server にインポートします。

    $ curl -H "Accept:application/json,version=2" \
    -H "Content-Type:application/json" \
    -u login:password \
    -k https://_satellite.example.com/api/v2/templates/import \
    -X POST
    
    {“message”:”Success”}

    Satellite が提供するテンプレートがロックされ、デフォルトではインポートできない点にご留意ください。この動作を上書きするには、TemplateSync メニューの Force import 設定を yes に変更するか、force パラメーター -d '{ "force": "true" }’ を import コマンドに追加します。

注記

-d パラメーターを使用して、リクエストでデフォルトの API 設定を上書きします。以下の例では、git.example.com/templates リポジトリーにテンプレートをエクスポートします。

$ curl -H "Accept:application/json,version=2" \
-H "Content-Type:application/json" \
-u login:password \
-k https://satellite.example.com/api/v2/templates/export \
-X POST \
-d "{\"repo\":\"git.example.com/templates\"}"

12.4. 高度な Git 設定

コマンドラインで、または .gitconfig ファイルを編集して、TemplateSync プラグインに追加の Git 設定を実行できます。

自己署名の Git 証明書の同意

Git サーバーで自己署名証明書の認証を使用している場合は、git config http.sslCAPath コマンドでその証明書を検証します。

たとえば、以下のコマンドを実行して/cert/cert.pem に保存されている自己署名証明書を確認します。

# sudo -u foreman git config --global http.sslCAPath cert/cert.pem

詳細なオプションの一覧は、git-config の man ページを参照します。

12.5. プラグインのアンインストール

foreman_templates プラグインを削除した後のエラーを回避するには、以下を実行します。

  1. Satellite インストーラーを使用するプラグインを無効にします。

    # satellite-installer --no-enable-foreman-plugin-templates
  2. プラグインのカスタムデータを削除します。このコマンドは、作成したテンプレートには影響しません。

    # foreman-rake templates:cleanup
  3. プラグインをアンインストールします。

    # satellite-maintain packages remove foreman-plugin-templates

付録A テンプレート作成の参照

Embedded Ruby (ERB) は、Ruby コードとプレーンテキストを統合するテンプレートをもとに、テキストファイルを生成するためのツールです。Red Hat Satellite は、以下の場合に ERB 構文を使用します。

プロビジョニングテンプレート
詳細は、『プロビジョニングガイド』の「プロビジョニングテンプレートの作成」を参照してください。
リモート実行ジョブのテンプレート
詳細は、10章リモートジョブの設定およびセットアップ を参照してください。
レポートテンプレート
詳細は、8章レポートテンプレートを使用したホストの監視 を参照してください。
パーティションテーブルのテンプレート
詳細は、『プロビジョニングガイド』の「パーティションテーブルの作成」を参照してください。
スマート変数
詳細は、『Puppet ガイド』の「スマート変数の設定」を参照してください。
スマートクラスパラメーター
詳細は、『Puppet ガイド』の「スマートクラスパラメーターの設定」を参照してください。

このセクションでは、ERB テンプレートで使用可能な Satellite 固有のマクロと変数を使用例と併せて概説します。Red Hat Satellite が提供するデフォルトのテンプレート (ホスト > プロビジョニングテンプレートホスト > ジョブテンプレート監視 > レポートテンプレート) には、ERB 構文の適切な例も含まれている点にご留意ください。

ホストのプロビジョニング時またはリモートジョブの実行時に、ERB のコードが実行し、変数がホスト固有の値に置き換えられます。このプロセスは、レンダリング と呼ばれています。Satellite Server ではセーフモードのレンダリングオプションがデフォルトで有効になっており、これにより、有害なコードがテンプレートから実行されないようにすることができます。

A.1. ERB テンプレートの作成

以下のタグは最も重要であり、ERB テンプレートで一般的に使用されています。

<% %>

すべての Ruby コードは、ERB テンプレートの <% %> 内に囲まれています。コードはテンプレートのレンダリング時に実行されます。これには Ruby の制御フロー構造と、Satellite 固有のマクロおよび変数を含めることができます。以下は例になります。

<% if @host.operatingsystem.family == "Redhat" && @host.operatingsystem.major.to_i > 6 -%>
systemctl <%= input("action") %> <%= input("service") %>
<% else -%>
service <%= input("service") %> <%= input("action") %>
<% end -%>

このテンプレートは、サービスを使用して警告なしにアクションを実行し、出力には何も返さないことに注意してください。

<%= %>

これは、<% %> と同じ機能を提供しますが、テンプレートが実行されると、コード出力はテンプレートに挿入されます。これは変数の置き換えに便利です。以下に例を示します。

入力例:

echo <%= @host.name %>

レンダリング例:

host.example.com

入力例:

<% server_name = @host.fqdn %>
<%= server_name %>

レンダリング例:

host.example.com

誤った変数を入力した場合、出力は返されない点にご留意ください。ただし、誤った変数でメソッドを呼び出そうとすると、以下のエラーメッセージが返されます。

入力例:

<%= @example_incorrect_variable.fqdn -%>

レンダリング例:

undefined method `fqdn' for nil:NilClass

<% -%>, <%= -%>

デフォルトでは、行末で閉じられている場合に、改行文字が Ruby ブロックの後に挿入されます。

入力例:

<%= "line1" %>
<%= "line2" %>

レンダリング例:

line1
line2

デフォルトの動作を変更するには、-%> で囲みマークを変更します。

入力例:

<%= "line1" -%>
<%= "line2" %>

レンダリング例:

line1line2

これはレンダリングされるテンプレートの行数を減らすために使用されます (Ruby 構文で許可される場合)。ERB タグの空白は無視されます。

これをレポートテンプレートで使用して、FQDN と IP アドレス間の不要な改行を削除する方法の例を以下に示します。

入力例:

<%= @host.fqdn -%>
<%= @host.ip -%>

レンダリング例:

host.example.com10.10.181.216

<%# %>

テンプレートのレンダリング時に無視されるコメントを囲みます。

入力例:

<%# A comment %>

これは出力を生成しません。

ERB テンプレートのインデント

ERB タグの長さが異なるため、ERB 構文にインデントを入れると見にくい場合があります。ERB 構文は空白を無視します。インデントを処理する方法の 1 つは、新しい行の各行頭に ERB タグを宣言し、ERB タグ内の空白を使用して構文内の関係を説明することです。以下に例を示します。

<%- load_hosts.each do |host| -%>
<%-   if host.build? %>
<%=     host.name %> build is in progress
<%-   end %>
<%- end %>

A.2. ERB テンプレートのトラブルシューティング

Satellite Web UI では、特定ホストについてのテンプレートのレンダリングを検証するための 2 つの方法を提供しています。

  • テンプレートエディターによる直接的な方法 – (ホスト > パーティションテーブルホスト > プロビジョニングテンプレート、または ホスト > ジョブテンプレート 配下の) テンプレートの編集時に、テンプレート タブで プレビュー をクリックしてから、一覧でホストを選択します。次に、選択したホストのパラメーターを使用して、テキストフィールドでテンプレートをレンダリングします。プレビューが失敗した場合は、ここでテンプレートの問題を特定できます。
  • ホストの詳細ページを使用する方法: ホスト > すべてのホスト でホストを選択し、テンプレート タブをクリックして、ホストに関連付けらえたテンプレートを一覧表示します。選択したテンプレートの横にある一覧から 確認 を選択して、そのテンプレートをレンダリングします。

A.3. 一般的な Satellite 固有のマクロ

このセクションでは、ERB テンプレート用の Satellite 固有のマクロを一覧表示します。

以下の表に記載されているマクロは、すべての種類のテンプレートで使用することができます。

表A.1 一般的なマクロ

名前説明

indent(n)

コードブロックを n スペース分インデントします。インデントされていないスニペットテンプレートの使用時に便利です。

foreman_url(kind)

完全な URL を、ホストでレンダリングされた指定タイプのテンプレートに返します。たとえば、「provision」タイプのテンプレートは通常 http://HOST/unattended/provision にあります。

snippet(name)

指定されたスニペットテンプレートをレンダリングします。プロビジョニングテンプレートをネスト化するのに便利です。

snippets(file)

Foreman データベースで、指定したスニペットをレンダリングします。データベースにない場合は unattended/snippets/ ディレクトリーからこれをロードします。

snippet_if_exists(name)

指定されたスニペットをレンダリングし、指定された名前を持つスニペットが見つからない場合は省略します。

A.4. テンプレートマクロ

カスタムテンプレートを作成する場合は、以下のマクロをいくつか使用できます。

テンプレートのタイプに応じて、以下のマクロの一部には異なる要件があります。

レポートテンプレートで利用可能なマクロに関する詳細は、Satellite Web UI で、監視 > レポートテンプレート に移動し、テンプレートの作成 をクリックします。「テンプレートの作成」ウィンドウで、ヘルプ タブをクリックします。

ジョブテンプレートで使用可能なマクロに関する詳細は、Satellite Web UIで、ホスト > ジョブテンプレート に移動し、新しいジョブテンプレート をクリックします。「新しいジョブテンプレート」ウィンドウで、ヘルプ タブをクリックします。

input

input マクロを使用すると、テンプレートで使用できる入力データをカスタマイズできます。ユーザーが使用できる入力名、タイプ、およびオプションを定義できます。レポートテンプレートの場合、ユーザー入力のみを使用できます。新しい入力を定義してテンプレートを保存すると、テンプレート本文の ERB 構文で入力を参照できます。

<%= input('cpus') %>

これは、ユーザー入力 cpus から値をロードします。

load_hosts

load_hosts マクロを使用すると、ホストの完全なリストを生成できます。

<%- load_hosts().each_record do |host| -%>
<%=     host.name %>

load_hosts マクロを each_record マクロと共に使用して、1000 件のレコードを一括でロードし、メモリー消費を減らします。

レポートのホスト一覧をフィルタリングする場合は、オプション search: input(‘Example_Host’) を追加できます。

<% load_hosts(search: input('Example_Host')).each_record do |host| -%>
<%=  host.name %>
<% end -%>

この例では、最初に入力を作成し、次にそれを使用して、load_hosts マクロが取得する検索条件を絞り込みます。

report_row

report_row マクロを使用すると、分析を容易にするためにフォーマットされたレポートを作成できます。report_row マクロは、出力を生成するために report_render マクロを必要とします。

入力例:

<%- load_hosts(search: input('Example_Host')).each_record do |host| -%>
<%-   report_row(
        'Server FQDN': host.name
      ) -%>
<%- end -%>
<%= report_render -%>

レンダリング例:

Server FQDN
host1.example.com
host2.example.com
host3.example.com
host4.example.com
host5.example.com
host6.example.com

別のヘッダーを追加することで、レポートにコラムを追加できます。以下の例では、レポートに IP アドレスを追加します。

入力例:

<%- load_hosts(search: input('host')).each_record do |host| -%>
<%-   report_row(
      'Server FQDN': host.name,
           'IP': host.ip
      ) -%>
<%- end -%>
<%= report_render -%>

レンダリング例:

Server FQDN,IP
host1.example.com,10.8.30.228
host2.example.com,10.8.30.227
host3.example.com,10.8.30.226
host4.example.com,10.8.30.225
host5.example.com,10.8.30.224
host6.example.com,10.8.30.223

report_render

このマクロは、レポートテンプレートでのみ使用できます。

report_render マクロを使用して、レポートの出力を作成します。テンプレートのレンダリングプロセス中に、レポートに使用する形式を選択できます。YAML、JSON、HTML、および CSV 形式がサポートされています。

<%= report_render -%>
render_template()

このマクロは、ジョブテンプレートでのみ使用できます。

このマクロを使用して、特定のテンプレートをレンダリングできます。また、テンプレートに渡す引数を有効化して定義することもできます。

A.5. ホスト固有の変数

以下の変数により、テンプレート内でホストデータを使用できます。ジョブテンプレートは @host 変数のみを受け入れる点にご留意ください。

表A.2 ホスト固有の変数およびマクロ

名前説明

@host.architecture

ホストのアーキテクチャーです。

@host.bond_interfaces

すべてのボンディングインターフェースのアレイを返します。「アレイの解析」を参照してください。

@host.capabilities

システムプロビジョニングの方法には、ビルド (キックスタートなど) またはイメージのいずれかを使用できます。

@host.certname

ホストの SSL 証明書名です。

@host.diskLayout

ホストのディスクレイアウトです。オペレーティングシステムから継承できます。

@host.domain

ホストのドメインです。

@host.environment

ホストの Puppet 環境です。

@host.facts

Facter からファクトの Ruby ハッシュを返します。たとえば、出力の 'ipaddress' ファクトにアクセスするには、@host.facts['ipaddress'] を指定します。

@host.grub_pass

ホストの GRUB パスワードを返します。

@host.hostgroup

ホストのホストグループです。

host_enc['parameters']

ホストパラメーターの情報が含まれる Ruby ハッシュを返します。たとえば、host_enc['parameters']['lifecycle_environment'] を使用してホストのライフサイクル環境を取得します。

@host.image_build?

ホストがイメージを使用してプロビジョニングされる場合は true を返します。

@host.interfaces

プライマリーインターフェースを含む利用可能なすべてのホストインターフェースのアレイが含まれます。「アレイの解析」を参照してください。

@host.interfaces_with_identifier('IDs')

指定された ID を持つインターフェースのアレイを返します。複数の ID のアレイを入力として渡すことができます (例: @host.interfaces_with_identifier(['eth0', 'eth1']))。「アレイの解析」を参照してください。

@host.ip

ホストの IP アドレスです。

@host.location

ホストの位置です。

@host.mac

ホストの MAC アドレスです。

@host.managed_interfaces

管理対象インターフェースのアレイを返します (BMC およびボンディングインターフェースを除く)。「アレイの解析」を参照してください。

@host.medium

割り当てられたオペレーティングシステムのインストールメディアです。

@host.name

ホストの完全名です。

@host.operatingsystem.family

オペレーティングシステムファミリーです。

@host.operatingsystem.major

割り当てられたオペレーティングシステムのメジャーバージョンの番号です。

@host.operatingsystem.minor

割り当てられたオペレーティングシステムのマイナーバージョンの番号です。

@host.operatingsystem.name

割り当てられたオペレーティングシステムの名前です。

@host.operatingsystem.boot_files_uri(medium_provider)

カーネルおよび initrd への完全パスで、アレイを返します。

@host.os.medium_uri(@host)

プロビジョニングに使用される URI です (インストールメディアに設定されるパス)。

host_param('parameter_name')

指定したホストパラメーターの値を返します。

host_param_false?('parameter_name')

指定したホストパラメーターが false と評価されると、false を返します。

host_param_true?('parameter_name')

指定したホストパラメーターが true と評価されると、true を返します。

@host.primary_interface

ホストのプライマリーインスタンスを返します。

@host.provider

コンピュートリソースプロバイダーです。

@host.provision_interface

ホストのプロビジョニングインターフェースを返します。インターフェースオブジェクトを返します。

@host.ptable

パーティションテーブル名です。

@host.puppet_ca_server

ホストが使用すべき Puppet CA サーバーです。

@host.puppetmaster

ホストが使用すべき Puppet マスターです。

@host.pxe_build?

ホストがネットワークまたは PXE を使用してプロビジョニングされる場合に true を返します。

@host.shortname

ホストの省略名です。

@host.sp_ip

BMC インターフェースの IP アドレスです。

@host.sp_mac

BMC インターフェースの MAC アドレスです。

@host.sp_name

BMC インターフェースの名前です。

@host.sp_subnet

BMC ネットワークのサブネットです。

@host.subnet.dhcp

DHCP プロキシーがこのホストに設定されている場合は true を返します。

@host.subnet.dns_primary

ホストのプライマリー DNS サーバーです。

@host.subnet.dns_secondary

ホストのセカンダリー DNS サーバーです。

@host.subnet.gateway

ホストのゲートウェイです。

@host.subnet.mask

ホストのサブネットマスクです。

@host.url_for_boot(:initrd)

このホストに関連付けられる initrd イメージへの完全パスです。変数を補間しないので推奨されません。

@host.url_for_boot(:kernel)

このホストに関連付けられたカーネルへの完全パスです。変数を補間しないので推奨されません。boot_files_uri が優先されます。

@provisioning_type

プロビジョニングのタイプに応じて「host」または「hostgroup」と等しくなります。

@static

ネットワーク設定が静的な場合、true を返します。

@template_name

レンダリングされるテンプレートの名前です。

grub_pass

md5pass 引数でラップされる GRUB パスワードを返します (例: --md5pass=#{@host.grub_pass})。

ks_console

ポートを使用して組み立てられる文字列、およびカーネル行に追加できるボーレートを返します(例: console=ttyS1,9600)。

root_pass

システムに設定される root パスワードを返します。

一般的な Ruby メソッドのほとんどは、ホスト固有の変数に適用できます。たとえば、ホストの IP アドレスの最後のセグメントを抽出するには、以下を使用できます。

<% @host.ip.split('.').last %>

A.6. キックスタート固有の変数

以下の変数は、キックスタートプロビジョニングテンプレート内で使用されるように設計されています。

表A.3 キックスタート固有の変数

名前説明

@arch

ホストのアーキテクチャー名です。@host.architecture.name と同じです。

@dynamic

使用されているパーティションテーブルが %pre スクリプト (テーブルの最初の行に #Dynamic オプションがある) の場合、true を返します。

@epel

epel-release rpm の正しいバージョンを自動インストールするコマンドです。%post スクリプトで使用されます。

@mediapath

URL コマンドを提供する詳細なキックスタート行です。

@osver

オペレーティングシステムのメジャーバージョンの番号です。@host.operatingsystem.major と同じです。

A.7. 条件付きステートメント

テンプレートでは、存在する値に応じてさまざまなアクションを実行できます。これを実現するには、ERB 構文で条件付きステートメントを使用できます。

以下の例では、ERB 構文は特定のホスト名を検索し、見つかった値に応じて出力を返します。

入力例:

<% load_hosts().each_record do |host| -%>
<% if @host.name == "host1.example.com" -%>
<%      result="positive" -%>
<%  else -%>
<%      result="negative" -%>
<%  end -%>
<%= result -%>

レンダリング例:

host1.example.com
positive

A.8. アレイの解析

テンプレートを作成または変更する際、アレイを返す変数が出てくる場合があります。たとえば、@host.interfaces または @host.bond_interfaces などのネットワークインターフェースに関連するホスト変数は、アレイで分類されるインターフェースデータを返します。特定のインターフェースのパラメーター値を抽出するには、Ruby メソッドを使用してアレイを解析します。

アレイを解析する正しい方法を見つける

以下の手順は、テンプレート内のアレイの解析方法として関連するものを見つけるために使用できる例です。この例では、レポートテンプレートが使用されていますが、この手順は他のテンプレートにも適用できます。

  1. この例では、コンテンツホストの NIC を取得するために @host.interfaces 変数を使用すると、アレイを解析する方法を見つけるために使用できるクラス値が返されます。

    入力例:

    <%= @host.interfaces -%>

    レンダリング例:

    <Nic::Base::ActiveRecord_Associations_CollectionProxy:0x00007f734036fbe0>

  2. 「テンプレートの作成」ウィンドウで、ヘルプ タブをクリックし、ActiveRecord_Associations_CollectionProxy クラスおよび Nic::Base クラスを検索します。
  3. ActiveRecord_Associations_CollectionProxy の場合、許可された方法またはメンバー コラムで、以下のメソッドを表示してアレイを解析できます。

    [] each find_in_batches first map size to_a
  4. Nic::Base の場合、許可された方法またはメンバー コラムで、以下の方法を表示してアレイを解析できます。

    alias? attached_devices attached_devices_identifiers attached_to bond_options children_mac_addresses domain fqdn identifier inheriting_mac ip ip6 link mac managed? mode mtu nic_delay physical? primary provision shortname subnet subnet6 tag virtual? vlanid
  5. インターフェースアレイを繰り返すには、関連する方法を ERB 構文に追加します。

    入力例:

    <% load_hosts().each_record do |host| -%>
    <%    host.interfaces.each do |iface| -%>
      iface.alias?: <%= iface.alias? %>
      iface.attached_to: <%= iface.attached_to %>
      iface.bond_options: <%= iface.bond_options %>
      iface.children_mac_addresses: <%= iface.children_mac_addresses %>
      iface.domain: <%= iface.domain %>
      iface.fqdn: <%= iface.fqdn %>
      iface.identifier: <%= iface.identifier %>
      iface.inheriting_mac: <%= iface.inheriting_mac %>
      iface.ip: <%= iface.ip %>
      iface.ip6: <%= iface.ip6 %>
      iface.link: <%= iface.link %>
      iface.mac: <%= iface.mac %>
      iface.managed?: <%= iface.managed? %>
      iface.mode: <%= iface.mode %>
      iface.mtu: <%= iface.mtu %>
      iface.physical?: <%= iface.physical? %>
      iface.primary: <%= iface.primary %>
      iface.provision: <%= iface.provision %>
      iface.shortname: <%= iface.shortname %>
      iface.subnet: <%= iface.subnet %>
      iface.subnet6: <%= iface.subnet6 %>
      iface.tag: <%= iface.tag %>
      iface.virtual?: <%= iface.virtual? %>
      iface.vlanid: <%= iface.vlanid %>
    <%- end -%>

    レンダリング例:

    host1.example.com
      iface.alias?: false
      iface.attached_to:
      iface.bond_options:
      iface.children_mac_addresses: []
      iface.domain:
      iface.fqdn: host1.example.com
      iface.identifier: ens192
      iface.inheriting_mac: 00:50:56:8d:4c:cf
      iface.ip: 10.10.181.13
      iface.ip6:
      iface.link: true
      iface.mac: 00:50:56:8d:4c:cf
      iface.managed?: true
      iface.mode: balance-rr
      iface.mtu:
      iface.physical?: true
      iface.primary: true
      iface.provision: true
      iface.shortname: host1.example.com
      iface.subnet:
      iface.subnet6:
      iface.tag:
      iface.virtual?: false
      iface.vlanid:

A.9. テンプレートスニペットの例

ホストで Puppet および Puppetlabs が有効化されているかどうかの確認

以下の例では、ホストで Puppet および Puppetlabs リポジトリーが有効化されているかどうかを確認します。

<%
pm_set = @host.puppetmaster.empty? ? false : true
puppet_enabled = pm_set || host_param_true?('force-puppet')
puppetlabs_enabled = host_param_true?('enable-puppetlabs-repo')
%>

ホストのオペレーティングシステムのメジャーバージョンとマイナーバージョンの取得

以下の例では、パッケージ関連の決定に使用できるホストのオペレーティングシステムのマイナーバージョンおよびメジャーバージョンを取得する方法を示します。

<%
os_major = @host.operatingsystem.major.to_i
os_minor = @host.operatingsystem.minor.to_i
%>

<% if ((os_minor < 2) && (os_major < 14)) -%>
...
<% end -%>

テンプレートへのスニペットのインポート

以下の例は、subscription_manager_registration スニペットをテンプレートにインポートし、4 スペース分インデントします。

<%= indent 4 do
snippet 'subscription_manager_registration'
end %>

キックスタートスニペットの条件付きインポート

以下の例では、ホストのサブネットで DHCP ブートモードが有効な場合に kickstart_networking_setup スニペットをインポートします。

<% subnet = @host.subnet %>
<% if subnet.respond_to?(:dhcp_boot_mode?) -%>
<%= snippet 'kickstart_networking_setup' %>
<% end -%>

ホストのカスタムファクトからの値の解析

host.facts 変数を使用して、ホストファクトとカスタムファクトの値を解析できます。

この例では、luks_stat は、ホストファクトである dmi::system::serial_number と同じ方法で解析できるカスタムファクトです。

'Serial': host.facts['dmi::system::serial_number'],
'Encrypted': host.facts['luks_stat'],

この例では、適用可能なエラータレポートテンプレートをカスタマイズして、各ホストのカーネルバージョンに関するカスタム情報を解析できます。

<%-     report_row(
          'Host': host.name,
          'Operating System': host.operatingsystem,
          'Kernel': host.facts['uname::release'],
          'Environment': host.lifecycle_environment,
          'Erratum': erratum.errata_id,
          'Type': erratum.errata_type,
          'Published': erratum.issued,
          'Applicable since': erratum.created_at,
          'Severity': erratum.severity,
          'Packages': erratum.package_names,
          'CVEs': erratum.cves,
          'Reboot suggested': erratum.reboot_suggested,
        ) -%>

付録B ジョブテンプレートの例および拡張

このセクションは、要件に合わせたジョブテンプレートの修正、カスタマイズ、および拡張に役立つ参照情報として使用できます。

B.1. ジョブテンプレートのカスタマイズ

ジョブテンプレートの作成時に、テンプレートエディターフィールドで既存のテンプレートを追加できます。こうすることで、テンプレートを組み合わせたり、一般的なテンプレートからより具体的なテンプレートを作成したりできます。

以下のテンプレートを使用してデフォルトのテンプレートを組み合わせ、Red Hat Enterprise Linux システムに httpd サービスをインストールして起動できます。

<%= render_template 'Package Action - SSH Default', :action => 'install', :package => 'httpd' %>
<%= render_template 'Service Action - SSH Default', :action => 'start', :service_name => 'httpd' %>

上記のテンプレートはレンダリングされるテンプレートのパラメーター値を直接指定します。ユーザーがジョブ実行時にレンダリングされたテンプレートへの入力を定義できるようにする input() メソッドを使用することもできます。たとえば、以下の構文を使用できます。

<%= render_template 'Package Action - SSH Default', :action => 'install', :package => input("package") %>

上記のテンプレートを使用して、レンダリングされたテンプレートからパラメーター定義をインポートする必要があります。これを行うには、ジョブ タブに移動して 外部入力セットを追加 をクリックし、ターゲットテンプレート リストで、レンダリングされたテンプレートを選択します。すべてのパラメーターをインポートするか、コンマ区切りの一覧を指定することができます。

B.2. デフォルトのジョブテンプレートカテゴリー

ジョブテンプレートのカテゴリー説明

Packages

パッケージ関連のアクションを実行するためのテンプレートです。デフォルトで、インストール、更新、および削除アクションが含まれています。

Puppet

ターゲットホストで Puppet ホストを実行するためのテンプレートです。

Power

パワー関連のアクションを実行するためのテンプレートです。デフォルトで、再起動およびシャットダウンアクションが含まれます。

Commands

リモートホストでカスタムコマンドを実行するためのテンプレートです。

Services

サービス関連のアクションを実行するためのテンプレートです。デフォルトで、開始、停止、再起動、およびステータスアクションが含まれます。

Katello

コンテンツ関連のアクションを実行するためのテンプレートです。これらのテンプレートは主として Satellite Web UI の各種の場所 (たとえば、コンテンツホストの一括操作のための UI など) で使用されますが、エラータのインストールなどの各種操作を実行するために個別に使用できます。

B.3. restorecon テンプレートの例

この例は、Run Command - restorecon というテンプレートを作成する方法を示します。これは、ターゲットホストで選択したディレクトリー内の全ファイルに対して、デフォルトの SELinux コンテキストを復元します。

  1. ホスト > ジョブテンプレート に移動します。新規ジョブテンプレート をクリックします。
  2. 名前 フィールドに Run Command - restorecon と入力します。デフォルト を選択して、テンプレートをすべての組織で利用できるようにします。以下のテキストをテンプレートエディターに追加します。

    restorecon -RvF <%= input("directory") %>

    <%= input("directory") %> の文字列は、ジョブの呼び出し時にユーザー定義のディレクトリーに置き換えられます。

  3. ジョブ タブで、ジョブカテゴリーCommands に設定します。
  4. 入力を追加 をクリックして、ジョブのカスタマイズを可能にします。名前 フィールドに directory と入力します。入力する名前は、テンプレートエディターで指定した値と一致している必要があります。
  5. 必須 をクリックし、ユーザーがパラメーターを指定しなければコマンドが実行しないようにします。
  6. 入力タイプ リストから ユーザー入力 を選択します。ジョブの呼び出し中に表示する説明を入力します (例: Target directory for restorecon)。
  7. 送信 をクリックします。

このテンプレートに基づいてジョブを実行する方法は、「複数のホストでの restorecon テンプレートの実行」 を参照してください。

B.4. restorecon テンプレートのレンダリング

この例は、「restorecon テンプレートの例」 で作成された Run command - restorecon テンプレートから派生するテンプレートを作成する方法を示しています。このテンプレートでは、ジョブ実行時にユーザーが入力する必要はなく、ターゲットホストの /home/ ディレクトリー下のすべてのファイルで SELinux コンテキストを復元します。

「ジョブテンプレートのセットアップ」 の説明に従って新規テンプレートを作成し、テンプレートエディターで以下の文字列を指定します。

<%= render_template("Run Command - restorecon", :directory => "/home") %>

B.5. 複数のホストでの restorecon テンプレートの実行

以下の例では、「restorecon テンプレートの例」 で作成されたテンプレートに基づいて、複数のホストでジョブを実行する方法を示します。このジョブは、/home/ ディレクトリー下のすべてのファイルで SELinux コンテキストを復元します。

  1. ホスト > すべてのホスト に移動し、ターゲットホストを選択します。アクションの選択 リストで、リモートジョブのスケジュール を選択します。
  2. ジョブ呼び出し ページで、Commands ジョブカテゴリーを選択し、Run Command - restorecon ジョブテンプレートを選択します。
  3. ディレクトリー フィールドに /home と入力します。
  4. スケジュールExecute now に設定します。
  5. 送信 をクリックします。ジョブ呼び出し ページに移動します。ここでジョブ実行のステータスを監視できます。

B.6. テンプレートにパワー操作を組み込む

以下の例では、再起動などのパワー操作を実行するためのジョブテンプレートをセットアップする方法を示します。この手順は、Satellite が再起動時に切断の例外をエラーとして解釈するのを防ぐため、ジョブのリモート実行が正常に機能します。

「ジョブテンプレートのセットアップ」 の説明に従って新規テンプレートを作成し、テンプレートエディターで以下の文字列を指定します。

<%= render_template("Power Action - SSH Default", :action => "restart") %>