Menu Close

第5章 プロビジョニング時間を削減するための iPXE の設定

以下の制限で PXE を使用できない場合には、Satellite を使用し、iPXE をチェーンブートして、HTTP プロトコルで起動するように PXELinux を設定することができます。

  • 管理対象外の DHCPサーバーのあるネットワーク
  • ネットワーク上でブラックリストに登録されているか、ファイアウォールによって制限されている PXE サービス
  • 低帯域幅ネットワークなどが原因で、信頼性の低い TFTP UDPベースのプロトコル

iPXE ワークフローの概要

iPXE を使用したプロビジョニングプロセスは、次のワークフローを実行します。

  • 検出されたホストは PXE 経由で起動します。
  • ホストは ipxe.efi または undionly.0 のいずれかを読み込みます。
  • ホストは DHCP を使用してネットワーク上で再度初期化します。
  • DHCP サーバーは iPXE ファームウェアを検出して、ブートストラップのフラグが付いた iPXE テンプレート URL を返します。
  • ホストは iPXE テンプレートを要求します。Satellite はこのホストを認識しません。このホストは、ブートストラップのフラグが設定されているため、Satellite に同梱されている iPXE 中間スクリプトテンプレートを取得します。
  • ホストは中間 iPXE スクリプトを実行し、検出イメージをダウンロードします。
  • ホストは検出オペレーティングシステムを起動し、検出要求を実行します。
  • ホストのプロビジョニングと再起動がスケジュールされます。
  • ホストは PXE 経由で起動します。
  • 以前のワークフローが繰り返されますが、Satellite はホストのリモート IP アドレスを認識し、中間テンプレートの代わりに通常の iPXE テンプレートを取得します。
  • ホストは iPXE 設定を読み取り、インストーラーを起動します。
  • この時点から、インストールは通常の PXE インストールワークフローを実行します。

ワークフローで検出プロセスを使用する点に注意してください (任意)。「iPXE の Discovery サービスの設定」を参照してください。

Satellite では、ホストが TFTP 経由で ipxe.efi または undionly.kpxe をダウンロードするように設定できます。ファイルがダウンロードされると、すべての通信はそのまま HTTP を使用して続行されます。Satellite は iPXE プロビジョニングスクリプトを使用して、オペレーティングシステムのインストーラーまたは、起動順の次のエントリーを読み込みます。

Red Hat Satellite で iPXE を使用する方法は 3 つあります。

  1. iPXE をプライマリーファームウェアとして使用するハイパーバイザーで仮想マシンをチェーンブートする方法
  2. TFTP を介して PXELinux を使用し、iPXE を直接ベアメタルホストにチェーンロードする方法
  3. UNDI を介して PXELinux を使用し、HTTP でカーネルとベアメタルホストの初期 RAM ディスクを移動する方法

セキュリティー情報

Red Hat Enterprise Linux の iPXE バイナリーは、セキュリティー機能なしでビルドされるので、HTTPS は利用できず、HTTP しか利用できません。

Red Hat Enterprise Linux の iPXE のセキュリティー関連機能はすべて、サポート対象ではありません。詳細情報は、「Red Hat Enterprise Linux HTTPS support in iPXE」を参照してください。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

  • 使用する Red Hat Satellite にホストが存在する。
  • プロビジョニングインターフェースの MAC アドレスが、ホスト設定と一致する。
  • ホストのプロビジョニングインターフェースには、有効な DHCP 予約がある。
  • NIC は、PXE ブートが可能である。詳細は http://ipxe.org/appnote/hardware_drivers を参照してください。
  • NIC は、iPXE と互換性がある。

5.1. iPXE の Discovery サービスの設定

  1. Capsule Server で Foreman の検出サービスをインストールします。

    # yum install foreman-discovery-image
  2. Capsule Server で httpboot サービスを有効にします。

    # satellite-installer --foreman-proxy-httpboot true
  3. Satellite Web UI で、管理 > 設定 に移動して、プロビジョニング タブをクリックします。
  4. デフォルトの PXE グローバルテンプレートエントリー の行を特定して、 のコラムで値を discovery に変更します。

5.2. 仮想マシンのチェーンブート

仮想化ハイパーバイザーの一部は、PXE ブートのプライマリーファームウェアとして iPXE を使用します。このため、TFTP および PXELinux なしでチェーンブートが可能です。

仮想マシンワークフローのチェーンブート

仮想化ハイパーバイザーを使用することで、 TFTP および PXELinux の必要性がなくなります。仮想化ハイパーバイザーのワークフローは、以下の通りです。

  1. 仮想マシンが起動します。
  2. iPXE が DHCP を使用してネットワークの認証情報を取得します。
  3. iPXE が DHCP を使用して HTTP アドレスを取得します。
  4. iPXE が テンプレート Capsule から iPXE テンプレートをチェーンロードします。
  5. iPXE が、インストーラーのカーネルおよび初期 RAM ディスクをロードします。

iPXE で検出サービスを使用する場合は、「iPXE の Discovery サービスの設定」 を参照してください。

使用するハイパーバイザーが iPXE をサポートしていることを確認します。以下の仮想化ハイパーバイザーは、iPXE をサポートします。

  • libvirt
  • oVirt
  • RHEV

iPXE を使うための Satellite Server の設定

デフォルトのテンプレートを使用して、ホストの iPXE ブーティングを設定できます。テンプレートのデフォルトの値を変更する場合は、テンプレートをクローンし、そのクローンを編集します。

手順

  1. Satellite Server の TFTP ディレクトリーにブートファイルをコピーします。

    • EFI システムの場合には、ipxe.efi ファイルをコピーします。

      # cp /usr/share/ipxe/ipxe.efi /var/lib/tftpboot/
    • BIOS システムの場合には、undionly.kpxe ファイルをコピーします。

      # cp /usr/share/ipxe/undionly.kpxe /var/lib/tftpboot/undionly.0
  2. Satellite Web UI で、ホスト > プロビジョニングテンプレート に移動し、Kickstart default iPXE を入力後、検索 をクリックします。
  3. オプション: テンプレートを変更する場合は、クローン をクリックして独自の名前を入力し、送信 をクリックします。
  4. 使用するテンプレートの名前をクリックします。
  5. テンプレートをクローンした場合、変更が必要な時は テンプレート タブで実施できます。
  6. 関連付け タブをクリックし、ホストが使用するオペレーティングシステムを選択します。
  7. ロケーション タブをクリックして、ホストの所在を追加します。
  8. 組織 タブをクリックして、ホストが属する組織を追加します。
  9. 送信 をクリックして変更を保存します。
  10. ホスト > オペレーティングシステム に移動し、ホストのオペレーティングシステムを選択します。
  11. テンプレート タブをクリックします。
  12. iPXE テンプレート リストから、使用するテンプレートを選択します。
  13. 送信 をクリックして変更を保存します。
  14. ホスト > すべてのホスト に移動します。
  15. ホスト のページで、使用するホストを選択します。
  16. テンプレート タブを選択します。
  17. iPXE テンプレート リストから、レビュー を選択し、Kickstart default iPXE テンプレートが正しいテンプレートであることを確認します。
  18. Satellite の iPXE ブートストラップ機能を使用するには、dhcpd.conf ファイルを次のように設定します。

    if exists user-class and option user-class = "iPXE" {
      filename "http://satellite.example.com/unattended/iPXE?bootstrap=1";
    } elsif option architecture = 00:06 {
      filename "ipxe.efi";
    } elsif option architecture = 00:07 {
      filename "ipxe.efi";
    } elsif option architecture = 00:09 {
      filename "ipxe.efi";
    } else {
      filename "undionly.0";
    }

    分離したネットワークを使用する場合には、Satellite Server の URL ではなく、TCP ポートが 8000 の Capsule Server URL を使用します。

    注記

    Capsule HTTP エンドポイントが無効の場合には、http://satellite.example.com/unattended/iPXE?bootstrap=1 を使用します (installer option --foreman-proxy-http false)。有効の場合には、テンプレートの Capsule プラグインにはデフォルト値8000 が指定されており、これは --foreman-proxy-http-port installer オプションを使用して変更できます。このような場合には、http://capsule.example.com:8000 を使用します。アップグレード後は必ず、/etc/dhcp/dhcpd.conf ファイルを更新してください。

5.3. iPXE を直接使用するための Satellite Server のチェーンブート

この手順を使用して、iPXE がネットワーク通信または UNDI インターフェースに内蔵のドライバーを使用するように設定します。Satellite Server と Capsule が iPXE を使用するように設定する方法は異なります。

この手順を使用できるのは、ベアメタルホストのみです。

直接または UNDI ワークフローと共に iPXE をチェーンブート

  1. ホストの電源をオンにします。
  2. PXE ドライバーは、DHCP を使用してネットワークの認証情報を取得します。
  3. PXE ドライバーは、TFTP を使用して PXELinux ファームウェア pxelinux.0 を取得します。
  4. PXELinux は、TFTP サーバーの設定ファイルを検索します。
  5. PXELinux は、iPXE ipxe.lkrn または undionly-ipxe.0 をチェーンロードします。
  6. iPXE は、再び DHCP を使用してネットワークの認証情報を取得します。
  7. iPXE は、DHCP を使用して HTTP アドレスを取得します。
  8. iPXE が テンプレート Capsule から iPXE テンプレートをチェーンロードします。
  9. iPXE が、インストーラーのカーネルおよび初期 RAM ディスクをロードします。

iPXE で検出サービスを使用する場合は、「iPXE の Discovery サービスの設定」 を参照してください。

iPXE を使うための Red Hat Satellite Server の設定

デフォルトのテンプレートを使用して、ホストの iPXE ブーティングを設定できます。テンプレートのデフォルトの値を変更する場合は、テンプレートをクローンし、そのクローンを編集します。

手順

  1. Satellite Web UI で、ホスト > プロビジョニングテンプレート に移動し、PXELinux chain iPXE または BIOS システムには PXELinux chain iPXE UNDI と入力し、検索 をクリックします。
  2. オプション: テンプレートを変更する場合は、クローン をクリックして独自の名前を入力し、送信 をクリックします。
  3. 使用するテンプレートの名前をクリックします。
  4. テンプレートをクローンした場合、変更が必要な時は テンプレート タブで実施できます。
  5. 関連付け タブをクリックし、ホストが使用するオペレーティングシステムを選択します。
  6. ロケーション タブをクリックして、ホストの所在を追加します。
  7. 組織 タブをクリックして、ホストが属する組織を追加します。
  8. 送信 をクリックして変更を保存します。
  9. プロビジョニングテンプレート ページの検索フィールドに Kickstart default iPXE を入力し、検索 をクリックします。
  10. オプション: テンプレートを変更する場合は、クローン をクリックして独自の名前を入力し、送信 をクリックします。
  11. 使用するテンプレートの名前をクリックします。
  12. テンプレートをクローンした場合、変更が必要な時は テンプレート タブで実施できます。
  13. 関連付け タブをクリックし、テンプレートをホストが使用するオペレーティングシステムに関連付けします。
  14. ロケーション タブをクリックして、ホストの所在を追加します。
  15. 組織 タブをクリックして、ホストが属する組織を追加します。
  16. 送信 をクリックして変更を保存します。
  17. ホスト > オペレーティングシステム に移動し、ホストのオペレーティングシステムを選択します。
  18. テンプレート タブをクリックします。
  19. PXELinux テンプレート リストから、使用するテンプレートを選択します。
  20. iPXE テンプレート リストから、使用するテンプレートを選択します。
  21. 送信 をクリックして変更を保存します。
  22. ホスト > すべてのホスト に移動し、使用するホストを選択します。
  23. テンプレート タブを選択し、PXELinux テンプレート リストから レビュー を選択して、そのテンプレートが正しいテンプレートであることを確認します。
  24. iPXE テンプレート リストから レビュー を選択して、テンプレートが正しいことを確認します。PXELinux のエントリーがない場合、または新しいテンプレートが見つからない場合は、ホスト > すべてのホスト に移動し、ホスト上で 編集 をクリックします。オペレーティングシステム タブをクリックし、続いてプロビジョニングテンプレート 解決 ボタンをクリックして、テンプレートのリストをリフレッシュします。
  25. Satellite の iPXE ブートストラップ機能を使用するには、dhcpd.conf ファイルを次のように設定します。

    if exists user-class and option user-class = "iPXE" {
      filename "http://satellite.example.com/unattended/iPXE?bootstrap=1";
    } elsif option architecture = 00:06 {
      filename "ipxe.efi";
    } elsif option architecture = 00:07 {
      filename "ipxe.efi";
    } elsif option architecture = 00:09 {
      filename "ipxe.efi";
    } else {
      filename "undionly.0";
    }

    分離したネットワークを使用する場合には、Satellite Server の URL ではなく、TCP ポートが 8000 の Capsule Server URL を使用します。

    注記

    http://satellite.example.com/unattended/iPXE では、Red Hat Satellite Capsule http://capsule.example.com:8000/unattended/iPXE を使用することもできます。アップグレードごとに /etc/dhcp/dhcpd.conf ファイルを更新する必要があります。

5.4. iPXE を使用するための Red Hat Satellite Capsule のチェーンブート

この手順は、すべての Capsule で実行する必要があります。

手順

  1. ipxe-bootimgs RPM パッケージをインストールしてください。

    # yum install ipxe-bootimgs
  2. iPXE ファームウェアを TFTP サーバーの root ディレクトリーにコピーします。TFTP は chroot 環境で実行するので、シンボリックリンクは使用しません。

    • EFI システムの場合には、ipxe.efi ファイルをコピーします。

      # cp /usr/share/ipxe/ipxe.lkrn /var/lib/tftpboot/
    • BIOS システムの場合には、undionly.kpxe ファイルをコピーします。

      # cp /usr/share/ipxe/undionly.kpxe /var/lib/tftpboot/undionly-ipxe.0
  3. ファイルのコンテンツを修正します。

    # restorecon -RvF /var/lib/tftpboot/