第7章 Discovery サービスの設定

Red Hat Satellite は、Satellite インベントリーに含まれていないネットワーク上に存在するホストを検出できます。これらのホストは、ハードウェアの検出を実行し、この情報を Satellite Server に送り返す検出イメージを起動します。これにより、各ホストの MAC アドレスを入力せずに Satellite Server でプロビジョニング可能なホストのリストが作成されます。

空のベアメタルホストを起動する場合には、起動メニューに localdiscovery の 2 つのオプションが含まれます。discovery を選択して、Discovery イメージを起動すると、数分後に Discovery イメージの起動が完了して、ステータス画面が表示されます。

Satellite Server では、Discovery サービスはデフォルトで有効になっていますが、グローバルテンプレートは、デフォルトで、ローカルハードドライブから起動するように設定されています。このデフォルト設定を変更するには、Satellite Web UI で 管理 > 設定 に移動し、プロビジョニング タブをクリックします。デフォルトの PXE グローバルエントリー の行を見つけ、 のコラムに discovery と入力します。

PXE mode

Discovery イメージの提供に Satellite Server を使用するには、以下の RPM パッケージをインストールします。

  • tfm-rubygem-foreman_discovery
  • foreman-discovery-image
  • rubygem-smart_proxy_discovery

tfm-rubygem-foreman_discovery パッケージには、検出されたノード、接続、必要なデータベース構造、API を処理する Satellite プラグインが含まれます。

foreman-discovery-image パッケージは、Discovery ISO を /usr/share/foreman-discovery-image/ ディレクトリーにインストールし、livecd-iso-to-pxeboot ツールを使用してこの ISO から PXE ブートイメージも作成します。livecd-iso-topxeboot ツールはこの PXE ブートイメージを /var/lib/tftpboot/boot ディレクトリーに保存します。詳細は、「Discovery イメージの構築」を参照してください。

rubygem-smart_proxy_discovery パッケージは、Capsule Server (Satellite Server の統合 Capsule など) が Discovery サービスのプロキシーとして機能するように設定します。

インストールが完了したら、ホスト > 検出されたホスト に移動して、新規メニューのオプションを表示できます。

7.1. Discovery サービスのインストール

以下の手順を実行し、Capsule Server で Discovery サービスを有効にします。

手順

  1. Capsule Server で以下のコマンドを入力します。

    # satellite-maintain packages install foreman-discovery-image rubygem-smart_proxy_discovery
  2. satellite-maintain サービスを再起動します。

    # satellite-maintain service restart
  3. Satellite Web UI にログインし、インフラストラクチャー > Capsule に移動します。
  4. Capsule Server をクリックして、アクション リストから リフレッシュ を選択します。機能リストで Discovery を特定して、Discovery サービスが実行中であることを確認します。

サブネット

検出可能なホストを含むすべてのサブネットには、検出サービスを提供するために適切な Capsule Server が選択されている必要があります。

これを確認するには、インフラストラクチャー > Capsules に移動して、使用する Capsule Server で Discovery 機能が表示されていることを確認します。表示されていない場合には、機能のリフレッシュ をクリックします。

Satellite Web UI で、インフラストラクチャー > サブネット に移動してサブネットを選択します。次に Capsule タブをクリックし、使用する Discovery プロキシー を選択します。使用するサブネットごとにこれを実行します。

7.2. テンプレート PXELinux Discovery スニペットのプロビジョニング

BIOS プロビジョニングの場合は、ホスト > テンプレートのプロビジョニング ウィンドウの PXELinux global default テンプレートには、スニペット pxelinux_discovery が含まれます。このスニペットには、以下のような行が含まれています。

LABEL discovery
  MENU LABEL Foreman Discovery Image
  KERNEL boot/fdi-image/vmlinuz0
  APPEND initrd=boot/fdi-image/initrd0.img rootflags=loop root=live:/fdi.iso rootfstype=auto ro rd.live.image acpi=force rd.luks=0 rd.md=0 rd.dm=0 rd.lvm=0 rd.bootif=0 rd.neednet=0 nomodeset proxy.url=<%= foreman_server_url %> proxy.type=foreman
  IPAPPEND 2

KERNEL および APPEND オプションを指定して、検出イメージおよび ramdisk 起動します。APPEND オプションには、proxy.url パラメーターと、引数として foreman_server_url マクロが含まれます。このマクロは、Satellite Server の完全な URL を解決します。

UEFI プロビジョニングの場合は、ホスト > テンプレートのプロビジョニング ウィンドウの PXEgrub2 global default テンプレートに、スニペット pxegrub2_discovery が含まれます。

menuentry 'Foreman Discovery Image' --id discovery {
  linuxefi boot/fdi-image/vmlinuz0 rootflags=loop root=live:/fdi.iso rootfstype=auto ro rd.live.image acpi=force rd.luks=0 rd.md=0 rd.dm=0 rd.lvm=0 rd.bootif=0 rd.neednet=0 nomodeset proxy.url=<%= foreman_server_url %> proxy.type=foreman BOOTIF=01-$mac
  initrdefi boot/fdi-image/initrd0.img
}

Capsule を使用して検出の手順をプロキシー化するには、/var/lib/tftpboot/pxelinux.cfg/default または /var/lib/tftpboot/grub2/grub.cfg を編集して、使用する Capsule Server の FQDN に URL を変更します。

グローバルテンプレートは、Satellite Server と、TFTP 機能が有効化されている Capsules すべてで利用できます。

7.3. 検出されたホストの自動コンテキスト

Satellite Server は以下のルールの順番に従って、組織とロケーションを検出されたホストに割り当てます。

  1. 検出されたホストが Satellite で定義されたサブネットを使用する場合には、このホストは、サブネットに関連付けられた最初の組織およびロケーションを使用します。
  2. discovery_organization または discovery_location ファクト値が設定されている場合には、検出ホストはこれらのファクト値を組織およびロケーションとして使用します。このファクト値を設定するには、管理 > 設定 > 検出済み に移動して、これらのファクトを デフォルトの組織デフォルトのロケーション フィールドに追加します。検出ホストのサブネットが、ファクトで設定した組織とロケーションに所属しているようにします。所属していない場合には、Satellite はセキュリティー上の理由で設定を拒否します。
  3. 上記の条件に何も該当しない場合には、Satellite は最初の組織とロケーションを名前順に割り当てます。

組織またはロケーションは、検出されたホスト ページの一括処理メニューを使用して変更できます。検出されたホストを選択し、アクションの選択 メニューから 組織の割り当て または ロケーションの割り当て を選択します。

foreman_organization および foreman_location ファクトは、検出ホストにコンテキストを割り当てる値として、有効ではなくなりました。ただし、これらのファクトを使用して、Puppet 実行用のホストはまだ設定できます。設定方法は、管理 > 設定 > Puppet セクションに移動し、foreman_organizationforeman_location ファクトを デフォルトの組織デフォルトのロケーション フィールドに追加します。

7.4. Discovery テンプレートとスニペットの設定

Discovery サービスを使用するには、プロビジョニングオプションを指定して、デフォルトサービスとして Discovery を設定し、使用するテンプレートを設定する必要があります。

Discovery サービスのデフォルト設定

BIOS、UEFI いずれの場合も、現在の Satellite インベントリーに存在しないホスト用に起動するデフォルトのサービスとして Discovery サービスを設定するには、以下の手順を実行します。

  1. Satellite Web UI で、管理 > 設定 に移動して、プロビジョニング タブをクリックします。
  2. デフォルトの PXE グローバルテンプレートエントリー の場合は、 のコラムに discovery と入力します。

テンプレートを使用するには、Satellite Web UI で、管理 > 設定 に移動して、プロビジョニング タブをクリックし、使用するテンプレートを設定します。

テンプレートとスニペットのカスタマイズ

テンプレートとスニペットは変更されないようにロックされています。テンプレートまたはスニペットを編集するには、クローンを作成して、一意の名前で保存してから、作成したクローンを編集してください。

テンプレートまたはテンプレートに含まれるスニペットを変更した場合には、Satellite Server のデフォルトの PXE テンプレートにその変更内容を伝搬する必要があります。

Satellite Web UI で、ホスト > プロビジョニングテンプレート に移動し、PXE のデフォルトのビルド をクリックします。

これで、Satellite Server 上にあるデフォルトの PXE テンプレートが更新されます。

追加の設定

proxy.url の引数
Satellite のインストールプロセス中に、デフォルトオプション --enable-foreman-plugin-discovery を使用する場合には、テンプレートの proxy.url 引数を編集して Discovery サービスを提供する Capsule Server の URL を設定できます。proxy.url の引数を、使用する別のプロビジョニング Capsule の IP アドレスまたは FQDN に変更できますが、9090 などポート番号を追加してください。Satellite のインストール時に --foreman-proxy-ssl-portオプションで別のポート番号を使用した場合には、このポート番号を追加する必要があります。Satellite IP アドレスまたは FQDN を使用するように、proxy.url 引数を編集して、検出されたホストを直接 Satellite Server と通信させることも可能です。
proxy.type の引数

proxy.url の引数に Capsule Server の FQDN を使用する場合は、proxy.type 引数を proxy に設定することを確認します。Satellite の FQDN を使用する場合は、proxy.type の引数を foreman に更新してください。

proxy.url=https://capsule.example.com:9090 proxy.type=proxy

Capsule のホスト名のレンダリング

Satellite 6 は、全 TFTP Capsules に同じテンプレートをデプロイし、Capsule のホスト名をレンダリングする変数やマクロがありません。ハードコードされた proxy.url は、複数の TFTP Capsule を連携できません。回避策として、PXE デフォルトの構築 をクリックするたびに、SSH を使用して TFTP ディレクトリーの設定ファイルを編集するか、適切なサブネットの共通 DNS エイリアスを使用してください。

タグ付けされた VLAN プロビジョニング

タグ付けされた VLAN プロビジョニングを使用して、Discovery サービスにより検出要求が送信されるようにする場合には、以下の情報を、Discovery テンプレートの KERNEL オプションに追加します。

fdi.vlan.primary=example_VLAN_ID

7.5. 検出されたホストからのホストの作成

検出されたホストのプロビジョニングは、PXE のプロビジョニングと同様のプロビジョニングプロセスを踏みます。主な違いは、ホストの MAC アドレスを手動で入力する代わりに、検出されたホストの一覧からプロビジョニングするホストを選択できる点です。

手順

検出されたホストからホストを作成するには、以下の手順を行います。

  1. Satellite Web UI で ホスト > 検出されたホスト に移動します。使用するホストを選択して、リストの右側にある プロビジョニング をクリックします。
  2. 以下の 2 つのオプションから 1 つ選択します。

    • ホストグループからホストをプロビジョニングするには、ホストグループ、組織、場所を選択してから、ホストの作成 をクリックします。
    • さらにカスタマイズしてホストをプロビジョニングするには、ホストのカスタマイズ をクリックして、新規ホストに指定する追加情報を入力します。
  3. フィールドに値が投入されていることを確認します。特に以下に注意してください。

    • ホスト タブの 名前DNS 名 になります。
    • Satellite Server は新規ホストの IP アドレスを自動的に割り当てます。
    • Satellite Server は Discovery の結果をもとに MAC アドレスを自動的に設定します。
  4. Satellite Server が、ホストの最初のインターフェースに Managed (管理)Primary、および Provision オプションを自動選択していることを確認します。選択されていない場合は、選択してください。
  5. オペレーティングシステム タブをクリックして、すべてのフィールドに値が含まれていることを確認します。オペレーティングシステムの各要素を確認してください。
  6. プロビジョニングテンプレート解決 をクリックし、新規ホストが使用する適切なプロビジョニングテンプレートを特定できることを確認します。ホストは、以下のプロビジョニングテンプレートを解決する必要があります。

    • kexec テンプレート: Discovery Red Hat kexec
    • provision テンプレート: Satellite Kickstart Default

      プロビジョニングテンプレートの関連付けについての詳細は、「プロビジョニングテンプレート」を参照してください。

  7. 送信 をクリックしてホストの詳細を保存します。

ホストのプロビジョニングが完了したら、検出されたホストはコンテンツホストになります。このホストを表示するには、ホスト > コンテンツホスト に移動します。

CLI をご利用の場合

  1. プロビジョニング用の検出されたホストを特定します。

    # hammer discovery list
  2. ホストを選択し、ホストグループを使用してプロビジョニングします。新しいホスト名は、--new-name オプションを使用して設定します。

    # hammer discovery provision --name "host_name" \
    --new-name "new_host_name" --organization "My_Organization" \
    --location "My_Location" --hostgroup "My_Host_Group" --build true \
    --enabled true --managed true

    このコマンドで、検出ホストの一覧からホストを削除し、プロビジョニング設定を使用してホストのエントリーを作成します。Discovery イメージは自動的にホストをリセットし、PXE にブートできるようにします。ホストは、Satellite Server の統合 Capsule 上の DHCP サービスを検出して、オペレーティングシステムのインストールを開始します。残りのプロセスは、「無人プロビジョニングによるホストの作成」に記載されている、通常の PXE ワークフローと同じです。

7.6. Discovery ルールの作成

検出されたホストのプロビジョニングプロセスの自動化方法として、Satellite は Discovery ルールを作成する機能を提供します。これらのルールは、検出されたホストが、割り当てられたホストグループをベースに自らを自動的にプロビジョニングする方法を定義します。たとえば、CPU 数の多いホストをハイパーバイザーとして自動的にプロビジョニングすることができます。同様に、ハードディスクが大容量のホストは、ストレージサーバーとしてプロビジョニングすることもできます。

NIC の考慮事項

現在、自動プロビジョニングでは NIC の設定はできません。すべてのシステムは、Discovery 時に検出された NIC 設定でプロビジョニングされていますが、スクリプトを使用するか、後で設定管理を設定して kickstart スクリプトレットで NIC を設定できます。

手順

ルールを作成するには、以下の手順を行います。

  1. Satellite Web UI で 設定 > Discovery ルール に移動し、ルールの作成 を選択します。
  2. 名前 フィールドには、ルールの名前を入力します。
  3. 検索 には、 ホストをプロビジョニングするかどうかを決定するためのルールを入力します。このフィールドには、入力する値についての推奨案が提供され、複数のルールに演算子を使用できます。例: cpu_count > 8
  4. ホストグループ リストから、このホストのテンプレートとして使用するホストグループを選択します。
  5. ホスト名 フィールドには、複数ホストのホスト名を決定するためのパターンを入力します。これはプロビジョニングテンプレートと同じ ERB 構文を使用します。ホスト名には、ホスト固有の値に @host 属性を使用したり、乱数に rand 関数を使用したりできます。プロビジョニングテンプレートの詳細は、「プロビジョニングテンプレート」を参照してください。

    • myhost-<%= rand(99999) %>
    • abc-<%= @host.facts['bios_vendor'] %>-<%= rand(99999) %>
    • xyz-<%= @host.hostgroup.name %>
    • srv-<%= @host.discovery_rule.name %>
    • server-<%= @host.ip.gsub('.','-') + '-' + @host.hostgroup.subnet.name %>

      ホスト名のパターンの作成時には、作成するホスト名が一意の名前であることを確認してください。ホスト名は数字で始めることができず、アンダースコアやドットを含めることができません。適切な方法として、facter で提供される固有の情報 (MAC アドレス、BIOS、またはシリアル ID など) を使用することができます。

  6. ホストの制限 フィールドには、ルールを使ってプロビジョニングできるホストの最大数を入力します。無制限に設定するには 0 を使用します。
  7. 優先度 フィールドには、ルール間の優先度を設定する数値を入力します。値が低いルールほど優先度が高くなります。
  8. 有効化 リストから、ルールを有効化するかどうかを選択します。
  9. ルールに異なるプロビジョニングコンテキストを設定するには、組織 および ロケーション タブをクリックして、使用するコンテキストを選択します。
  10. 送信 をクリックしてルールを保存します。
  11. ホスト > 検出されたホスト に移動して、以下の 2 つのオプションから 1 つ選択します。

    • 右側の 検出されたホスト リストから、自動プロビジョニング を選択して、単一のホストを自動的にプロビジョニングします。
    • ウィンドウの右上の すべてを自動プロビジョニング をクリックして、全ホストを自動的にプロビジョニングします。

CLI をご利用の場合

hammer discovery-rule create コマンドを使用してルールを作成します。

# hammer discovery-rule create --name "Hypervisor" \
--search "cpu_count  > 8" --hostgroup "My_Host_Group" \
--hostname "hypervisor-<%= rand(99999) %>" \
--hosts-limit 5 --priority 5 --enabled true

hammer discovery auto-provision コマンドを使用してホストを自動的にプロビジョニングします。

# hammer discovery auto-provision --name "macabcdef123456"

7.7. PXE を使用しない Discovery の実装

Satellite には PXE なしの Discovery サービスがあり、PXE ベースのサービス (DHCP や TFTP) なしに操作できます。これは、Satellite Server の Discovery イメージを使用することで、実現できます。 切断ノードのインストールをスケジュールしたら、kexec コマンドを使用して、ノードを再起動せずに、OS インストーラーで Linux カーネルを再読み込みします。

重要

Discovery kexec は、テクノロジープレビュー機能のみとなっています。テクノロジープレビュー機能は、Red Hat の実稼働サービスレベルアグリーメント (SLA) でサポートされておらず、機能的に完全でない可能性があります。Red Hat は、実稼働環境での使用は推奨していません。これらの機能は、近日発表予定の製品機能をリリースに先駆けてご提供することで、お客様は開発プロセス時に、機能をテストして、フィードバックをお寄せいただくことができます。Red Hat テクノロジープレビュー機能のサポート範囲に関する情報は、「https://access.redhat.com/ja/support/offerings/techpreview」を参照してください。

既知の問題

コンソールは、プロセス中にフリーズする可能性があり、ハードウェアに一部で、グラフィックハードウェアに関連する問題が発生する可能性があります。

PXEless mode

Discovery サービスまたはイメージをまだインストールしていない場合は、「Discovery イメージの構築」を参照してください。

Discovery サービスの ISO は /usr/share/foreman-discovery-image/ にあり、foreman-discovery-image パッケージを使用してインストールされます。

手動による使用

  1. このメディアを CD、DVD、または USB スティックのいずれかにコピーします。たとえば、/dev/sdb の USB スティックにコピーするには、以下を実行します。

    # dd bs=4M \
    if=/usr/share/foreman-discovery-image/foreman-discovery-image-3.4.4-5.iso \
    of=/dev/sdb
  2. Discovery ブートメディアをベアメタルホストに挿入してホストを開始し、メディアから起動します。Discovery イメージには、Manual network setup または Discovery with DHCP のいずれかのオプションが表示されます。

    Manual network setup を選択する場合には、Discovery イメージはネットワークオプションのセットを要求します。これには、Satellite Server に接続されるプライマリーネットワークインターフェースが含まれます。この Discovery イメージは、IPv4 アドレスIPv4 ゲートウェイ および IPv4 DNS サーバーなどのネットワークインターフェースの設定オプションも要求します。

  3. これらの詳細を入力した後に、次へ を選択します。
  4. Discovery with DHCP を選択する場合には、Discovery イメージは Satellite Server に接続されるプライマリーネットワークインターフェースのみを要求します。このサービスは、Capsule Server が提供するサーバーなどの DHCP サーバーを使用してネットワークインターフェースを自動的に設定しようとします。
  5. プライマリーインターフェースの設定後に、Discovery イメージは、Discovery サービスを提供する Satellite Server または Capsule Server の URL である サーバー URL を要求します。たとえば、Satellite Server で統合 Capsule を使用するには、以下の URL を使用します。

    https://satellite.example.com:9090
  6. Connection typeProxy に設定し、次へ を選択します。
  7. オプション: Discovery イメージは、Facter ツールが Satellite Server に送り戻す Custom facts (カスタムファクト) を入力するための一連のフィールドも提供します。これらは 名前- の形式で入力します。必要なカスタムファクトを指定し、確認 を選択して継続します。

Satellite は Satellite Server の Discovery サービスとの通信が正常であることを報告します。ホスト > 検出されたホスト に移動して、新たに検出されたホストを表示します。

検出されたホストのプロビジョニングに関する詳細情報は、「検出されたホストからのホストの作成」を参照してください。

7.8. Discovery イメージの構築

Discovery イメージは、ホストで PXE ブートして、ハードウェアの情報を取得し、Satellite にチェックインする必要最小限のオペレーティングシステムです。検出されたホストは、Anaconda で再起動されるまで Discovery イメージを実行し続け、プロビジョニングプロセスを開始します。

オペレーティングシステムイメージは Red Hat Enterprise Linux 7 をベースにしています。

foreman-discovery-image パッケージにはこのイメージが含まれており、TFTP サービスを提供する Capsule でこのパッケージをインストールする必要があります。

この手順を使用して、Satellite Discovery イメージを構築するか、設定ファイルを変更した場合にはイメージを再構築します。

この手順は、実稼働の Satellite または Capsule で実行しないでください。専用の環境を使用するか、同期済みのリポジトリーと、キックスタートファイルを別のサーバーにコピーしてください。

前提条件

  • livecd-tools パッケージをインストールしておく。

    # satellite-maintain packages install livecd-tools
  • 検出イメージをビルドする必要のある以下の Red Hat Enterprise Linux 7 リポジトリーでは、ダウンロードポリシーを Immediate に変更します。Satellite は、ダウンロードポリシーが即時に設定されている場合にリポジトリーの同期中にのみ全パッケージをダウンロードするので、この設定が必要です。

    • 最新の Red Hat Enterprise Linux 7 Server (Kickstart) リポジトリー (例: Red Hat Enterprise Linux 7 Server Kickstart x86_64 7.7)
    • Red Hat Satellite Capsule 6.7 for RHEL 7 Server RPMs x86_64

    ダウンロードポリシーの変更に関する詳細は、『コンテンツ管理ガイド』の「リポジトリーのダウンロードポリシーの変更」を参照してください。

  • 検出イメージのビルドに必要な以下の Red Hat Enterprise Linux 7 リポジトリーを同期します。

    • 最新の Red Hat Enterprise Linux 7 Server (Kickstart) リポジトリー (例: Red Hat Enterprise Linux 7 Server Kickstart x86_64 7.7)
    • Red Hat Satellite Capsule 6.7 for RHEL 7 Server RPMs x86_64

    詳細は、『コンテンツ管理ガイド』の「Red Hat リポジトリーの同期」を参照してください。

手順

Satellite Discovery イメージを構築するには、以下の手順を実行します。

  1. /usr/share/foreman-discovery-image/foreman-discovery-image.ks ファイルを開いて編集します。

    # vim /usr/share/foreman-discovery-image/foreman-discovery-image.ks
  2. キックスタートファイルの repo の行は、リポジトリーの URL に置き換えます。

    repo --name=rhel --baseurl=file:///var/lib/pulp/published/yum/https/repos/Default_Organization/Library/content/dist/rhel/server/7/7.7/x86_64
    repo --name=sat --baseurl=file:///var/lib/pulp/published/yum/https/repos/Default_Organization/Library/content/dist/rhel/server/7/7Server/x86_64/sat-capsule/6.7/os
  3. livecd-creator ツールを実行します。

    # livecd-creator --title="Discovery-Image" \
    --compression-type=xz \
    --cache=var/cache/build-fdi \
    --config /usr/share/foreman-discovery-image/foreman-discovery-image.ks \
    --fslabel fdi \
    --tmpdir /var/tmp

    --fslabel オプションで fdi を変更した場合には、イメージの読み込み時に kernel コマンドラインdの root ラベルを変更する必要があります。fdi または別の名前を、この手順の一部で作成した .iso ファイルに追加します。PXE Discovery ツールは、.iso から PXE に変換時に、この名前を使用します。

    このプロセスには 3 GB 近くの容量が必要で、システムの swap 領域が少ない場合に /tmp で問題が発生する可能性があるので、/var/tmp を使用します。

  4. fdi.iso ファイルが作成されていることを確認します。

    # ls *.iso -h

.iso ファイルを作成した場合には、.iso ファイルをネットワークでもローカルでも起動できます。以下の手順のいずれかを実行してください。

ネットワーク経由で iso ファイルを起動する場合:

  1. ネットワーク経由で初期の ramdisk と kernel ファイルを .iso ファイルから抽出するには、以下のコマンドを入力します。

    # discovery-iso-to-pxe fdi.iso
  2. ブートファイルを保存するディレクトリーを作成します。

    # mkdir /var/lib/tftpboot/boot/myimage
  3. initrd0.img および vmlinuz0 ファイルを新しいディレクトリーにコピーします。
  4. /var/lib/tftpboot/pxelinux.cfg ファイルで KERNELAPPEND エントリーを編集して、独自の初期 ramdisk および kernel ファイルに関する情報を追加します。

ローカルで iso ファイルを起動する場合:

ローカルで起動するハイブリッドの .iso ファイルを作成する場合には、以下の手順を行います。

  1. .iso ファイルを .iso のハイブリッドファイルに変換して PXE プロビジョニングを行うには、以下のコマンドを入力します。

    # isohybrid --partok fdi.iso

    grub2 パッケージをインストールする場合には、以下のコマンドを使用して、grub2 ブートローダーにインストールすることも可能です。

    # isohybrid --partok --uefi fdi.iso
  2. md5 チェックサムを .iso ファイルに追加して、Satellite でインストールメディアのバリデーションテストに合格するには、以下のコマンドを入力します。

    # implantisomd5 fdi.iso

7.9. 無人での使用、カスタマイズ、イメージのリマスター

カスタマイズされた Discovery ISO を作成して、起動後にイメージ設定プロセスを自動化できます。Discovery イメージは、オペレーティングシステムの Linux カーネルを使用して、カーネルのパラメーターを指定し、Discovery サービスを設定します。このカーネルパラメーターには、以下のエントリーが含まれます。

proxy.url
Discovery サービスを提供する Capsule Server または Satellite Server の URL。
proxy.type
プロキシーのタイプ。通常、これは Capsule Server に接続するために proxy に設定されます。このパラメーターはレガシーの Foreman オプションもサポートします。この場合には、Capsule Server ではなく Satellite Server との通信が直接行われます。
fdi.pxmac
プライマリーインターフェースの MAC アドレス (AA:BB:CC:DD:EE:FF 形式)。これは Capsule Server との通信に使用するインターフェースです。自動化モードでは、リンクを含む最初の NIC (ネットワーク ID をアルファベット順に使用) が使用されます。準自動化モードでは、画面が表示され、正しいインターフェースを選択するよう求められます。
fdi.pxip, fdi.pxgw, fdi.pxdns
プライマリーネットワークインターフェースの IP アドレス (fdi.pxip)、ゲートウェイ (fdi.pxgw)、および DNS (fdi.pxdns) を手動で設定します。これらのパラメーターを省略する場合、イメージは DHCP を使用してネットワークインターフェースを設定します。
fdi.pxfactname1, fdi.pxfactname2 …​ fdi.pxfactnameN
カスタムファクト名を指定できます。
fdi.pxfactvalue1, fdi.pxfactvalue2 …​ fdi.pxfactvalueN
各カスタムファクトの値。それぞれの値はファクト名に対応しています。たとえば、fdi.pxfactvalue1 は、fdi.pxfactname1 の名前が付けられたファクトの値を設定します。
fdi.pxauto
自動化モードまたは準自動化モードを設定します。0 に設定した場合には、イメージは準自動化モードを使用します。このモードでは、一連のダイアログオプションで選択内容を確認できます。1 に設定した場合、イメージは自動化モードを使用し、確認なしに次に進みます。
fdi.initnet
デフォルトでは、このイメージは全ネットワークインターフェース (値 all) を初期化します。この設定を bootif に指定すると、ネットワークブートに使用したネットワークインターフェースのみが初期化されます。
fdi.rootpw
デフォルトでは root アカウントはロックされています。このオプションを使用して Root パスワードを設定します。クリアテキストのパスワードも、暗号化パスワードも両方入力できます。
fdi.ssh
デフォルトでは SSH サービスは無効です。これは 1 または true に設定して、SSH アクセスを有効にします。
fdi.ipv4.method
デフォルトでは、NetworkManager IPv4 メソッドの設定は auto に設定されます。このオプションが優先されるので、IPv4 スタックを無効にするには ignore に設定します。このオプションが機能するのは、DHCP モードの場合のみです。
fdi.ipv6.method
デフォルトでは、NetworkManager IPv6 メソッドの設定は auto に設定されます。このオプションが優先されるので、IPv6 スタックを無効にするには ignore に設定します。このオプションが機能するのは、DHCP モードの場合のみです。

discovery-remaster ツールを使用した OS イメージのリマスター

Satellite Server は、foreman-discovery-image パッケージで discovery-remaster ツールも提供します。このツールは、カーネルパラメーターを含めるようにイメージのマスターを新たに作成します。イメージのマスターを新たに作成するには、discovery-remaster ツールを実行します。以下は例になります。

# discovery-remaster ~/iso/foreman-discovery-image-3.4.4-5.iso \
"fdi.pxip=192.168.140.20/24 fdi.pxgw=192.168.140.1 \
fdi.pxdns=192.168.140.2 proxy.url=https://satellite.example.com:9090 \
proxy.type=proxy fdi.pxfactname1=customhostname fdi.pxfactvalue1=myhost fdi.pxmac=52:54:00:be:8e:8c fdi.pxauto=1"

このメディアを CD、DVD、または USB スティックのいずれかにコピーします。たとえば、/dev/sdb の USB スティックにコピーするには、以下を実行します。

# dd bs=4M \
if=/usr/share/foreman-discovery-image/foreman-discovery-image-3.4.4-5.iso \
of=/dev/sdb

Discovery ブートメディアをベアメタルホストに挿入してホストを開始し、メディアから起動します。

検出されたホストのプロビジョニングに関する詳細情報は、「検出されたホストからのホストの作成」を参照してください。

7.10. Discovery イメージの拡張

カスタムファクト、ソフトウェア、またはデバイスドライバーを使って Satellite Discovery イメージを拡張することができます。イメージで使用できるように追加コードが含まれる圧縮されたアーカイブファイルを提供することもできます。

手順

  1. 最初に、以下のディレクトリー構造を作成します。

    .
    ├── autostart.d
    │   └── 01_zip.sh
    ├── bin
    │   └── ntpdate
    ├── facts
    │   └── test.rb
    └── lib
        ├── libcrypto.so.1.0.0
        └── ruby
            └── test.rb
    • autostart.d ディレクトリーには、ホストが Satellite に登録される前の起動時に POSIX の順にイメージにより実行されるスクリプトが含まれています。
    • bin ディレクトリーは、$PATH 変数に追加され、このディレクトリーにバイナリーファイルを配置して、autostart スクリプトで使用します。
    • facts ディレクトリーは FACTERLIB 変数に追加され、カスタムファクトを設定して Satellite に送信できるようになります。
    • /bin のバイナリーファイルが正しく実行できるように、lib ディレクトリーは LD_LIBRARY_PATH 変数に、lib/rubyRUBYLIB 変数に追加されます。
  2. ディレクトリー構造の作成後に、以下のコマンドで .zip アーカイブにパッケージ化します。

    zip -r my_extension.zip .
  3. Discovery イメージで使用される拡張子が認識されるように、検出イメージと共に zip ファイルを TFTP サーバーに配置してから、PXELinux テンプレートの APPEND 行を、パスが TFTP ルートに相対する fdi.zips オプションで更新します。たとえば、 $TFTP/zip1.zip および $TFTP/boot/zip2.zip に 2 つのアーカイブがある場合は、以下の構文を使用します。

    fdi.zips=zip1.zip,boot/zip2.zip

既存の環境変数 (PATHLD_LIBRARY_PATHRUBYLIB および FACTERLIB) に、新規ディレクティブとオプションを追加できます。スクリプトで明示的にパスを指定する場合には、.zip ファイルのコンテンツが、イメージの /opt/extension ディレクトリーに展開されます。

複数の .zip ファイルを作成できますが、Discovery イメージと同じ場所に展開される点に注意してください。.zip ファイルから後で展開されたファイルは、同じファイル名を使用している場合には、以前のバージョンを上書きします。

7.11. Discovery のトラブルシューティング

マシンが、Satellite Web UI の ホスト > 検出されたホスト に表示されない場合は、以下の設定領域を調べてエラーを切り分けます。

  • ホスト > プロビジョニングテンプレート に移動し、PXE デフォルトのビルド ボタンを使用してデフォルトの PXELinux テンプレートを再デプロイします。
  • TFTP Capsule Server で pxelinux.cfg/default 設定ファイルを確認します。
  • ホスト、Capsule Server、および Satellite Server 間で適切なネットワーク接続があることを確認します。
  • 使用している PXELinux テンプレートに含まれている PXE 検出スニペットを確認します。スニペットの名前は pxelinux_discoverypxegrub_discovery、または pxegrub2_discovery です。PXE 検出スニペットの proxy.url オプションと proxy.type オプションを検証してください。
  • 検出されたノードで DNS が適切に機能していることを確認するか、使用している PXE Linux テンプレートにある PXE 検出スニペットの proxy.url オプションにある IP アドレスを使用します。
  • DHCP サーバーが IP アドレスを起動したイメージに適切に送信していることを確認します。
  • 検出されたホスト (または仮想マシン) に 1200 MB 以上のメモリーがあることを確認します。メモリーが 1200 MB より少なくなると、イメージがインメモリーで抽出されるので、各種のカーネルパニックエラーがランダムに発生する可能性があります。

重要なシステムファクトを収集するには、discovery-debug コマンドを使用します。これにより、システムログ、ネットワーク設定、ファクトの一覧などの情報が 標準出力に出力されます。通常のユースケースでは、追加の調査のために、scp コマンドでこの出力をリダイレクトしてコピーします。

検出されたホストの最初の仮想コンソールは systemd ログのために予約されます。特に役立つシステムログには、以下のようにタグが付けられます。

  • discover-host: 最初のファクトのアップロード
  • foreman-discovery: ファクトの更新、リモート再起動のコマンド
  • nm-prepare: NetworkManager を事前に定義する起動スクリプト
  • NetworkManager: ネットワークの情報

TTY2 以上を使用して、検出されたホストにログインします。root アカウントおよび SSH アクセスはデフォルトで無効にされますが、以下のカーネルコマンドラインのオプションを使って、デフォルト PXELinux テンプレートの APPEND 行で、SSH の有効化および root パスワードの設定ができます。

fdi.ssh=1 fdi.rootpw=My_Password