この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

PXEブートインストール

SUSE VirtualizationはPXEブートで自動的にインストールできます。

ネットワークブートを実行するために iPXEの使用をお勧めします。従来のPXEブートプログラムよりも多くの機能があり、最新のNICカードで利用可能な可能性があります。iPXEファームウェアがNICカードに利用できない場合、iPXEファームウェアイメージは最初にTFTPサーバーからロードできます。

サンプルiPXEスクリプトを見るには、 iPXEの例をご覧ください。

前提条件

ノードは、インストーラーが完全なISOファイルをtmpfsにロードするため、少なくとも*8 GiB*のRAMを持っている必要があります。

インストーラーは、ハードウェアが生産使用のための最小要件を満たしているかどうかを自動的にチェックします。チェックのいずれかが失敗した場合、インストールは停止されます。この動作をオーバーライドするには、設定ファイルオプション `install.skipchecks=true`またはカーネルパラメータ `harvester.install.skipchecks=true`のいずれかを設定してください。

HTTPサーバーの準備

ブートファイルを提供するためにHTTPサーバーが必要です。 NGINX HTTPサーバーのIPが`10.100.0.10`であり、`/usr/share/nginx/html/`ディレクトリを`http://10.100.0.10/`のパスで提供していると仮定しましょう。

ブートファイルの準備

  • リリースページから必要なファイルをダウンロードしてください。

    • .iso: harvester-<version>-amd64.iso

    • カーネル: harvester-<version>-vmlinuz-amd64

    • initrd: harvester-<version>-initrd-amd64

    • rootfs squashfsイメージ: harvester-<version>-rootfs-amd64.squashfs

  • ファイルを提供してください。

    ダウンロードしたファイルを適切な場所にコピーまたは移動して、HTTPサーバー経由でダウンロードできるようにしてください。次に例を示します。

      sudo mkdir -p /usr/share/nginx/html/harvester/
      sudo cp /path/to/harvester-<version>-amd64.iso /usr/share/nginx/html/harvester/
      sudo cp /path/to/harvester-<version>-vmlinuz-amd64 /usr/share/nginx/html/harvester/
      sudo cp /path/to/harvester-<version>-initrd-amd64 /usr/share/nginx/html/harvester/
      sudo cp /path/to/harvester-<version>-rootfs-amd64.squashfs /usr/share/nginx/html/harvester/

iPXEブートスクリプトの準備

自動インストールを行う際には、2つのモードがあります:

  • CREATE:初期クラスターを構築するためにノードをインストールしています。

  • JOIN:既存のクラスターに参加するためにノードをインストールしています。

異なるシナリオをサポートするために、ノードに役割を割り当てることができます。詳細については、設定ファイルを参照してください。

CREATEモード

セキュリティリスク:以下の設定ファイルには、秘密にしておくべき資格情報が含まれています。設定ファイルを公開しないでください。

設定ファイルという名前の`config-create.yaml`を作成し、`CREATE`モード用にしてください。必要に応じて値を修正してください:

# cat /usr/share/nginx/html/harvester/config-create.yaml
scheme_version: 1
token: token # Replace with a desired token
os:
  hostname: node1 # Set a hostname. This can be omitted if DHCP server offers hostnames
  ssh_authorized_keys:
  - ssh-rsa ... # Replace with your public key
  password: p@ssword     # Replace with your password
  ntp_servers:
  - 0.suse.pool.ntp.org
  - 1.suse.pool.ntp.org
install:
  mode: create
  management_interface: # available as of v1.1.0
    interfaces:
      - name: ens5
    default_route: true
    method: dhcp
    bond_options:
      mode: balance-tlb
      miimon: 100
  device: /dev/sda # The target disk to install
#  data_disk: /dev/sdb # It is recommended to use a separate disk to store VM data
  iso_url: http://10.100.0.10/harvester/harvester-<version>-amd64.iso
#  tty: ttyS1,115200n8   # For machines without a VGA console

  vip: 10.100.0.99        # The VIP to access the UI. Make sure the IP is free to use
  vip_mode: static        # Or dhcp, check configuration file for more information
#  vip_hw_addr: 52:54:00:ec:0e:0b   # Leave empty when vip_mode is static

`CREATE`モードを使用してインストールする必要があるマシンの場合、以下は上記の設定でカーネルをブートするiPXEスクリプトです:

#!ipxe
kernel harvester-<version>-vmlinuz ip=dhcp net.ifnames=1 rd.cos.disable rd.noverifyssl console=tty1 root=live:http://10.100.0.10/harvester/rootfs.squashfs harvester.install.automatic=true harvester.install.config_url=http://10.100.0.10/harvester/config-create.yaml
initrd harvester-<version>-initrd
boot

これは、iPXEスクリプトが`/usr/share/nginx/html/harvester/ipxe-create`に保存されていることを前提としています。

複数のネットワークインタフェースがある場合、dracutの`ip=パラメータを利用してブートインタフェースやdracutがサポートするその他のネットワーク設定(例:`ip=eth1:dhcp)を指定できます。 詳細については、 man dracut.cmdlineを参照してください。

ブートインタフェースのみを指定するために`ip=`パラメータを使用してください。*1つの`ip=`パラメータ*のみをサポートしています。

JOINモード

セキュリティリスク:下記の設定ファイルには、秘密にしておくべき認証情報が含まれています。設定ファイルを公開しないでください。

`JOIN`モード用に、`config-join.yaml`という名前の設定ファイルを作成してください。必要に応じて値を修正してください:

# cat /usr/share/nginx/html/harvester/config-join.yaml
scheme_version: 1
server_url: https://10.100.0.99:443  # Should be the VIP set up in "CREATE" config
token: token
os:
  hostname: node2
  ssh_authorized_keys:
    - ssh-rsa ... # Replace with your public key
  password: p@ssword     # Replace with your password
  dns_nameservers:
  - 1.1.1.1
  - 8.8.8.8
install:
  mode: join
  management_interface: # available as of v1.1.0
    interfaces:
      - name: ens5
    default_route: true
    method: dhcp
    bond_options:
      mode: balance-tlb
      miimon: 100
  device: /dev/sda # The target disk to install
#  data_disk: /dev/sdb # It is recommended to use a separate disk to store VM data
  iso_url: http://10.100.0.10/harvester/harvester-<version>-amd64.iso
#  tty: ttyS1,115200n8   # For machines without a VGA console

`mode`は`join`であり、`server_url`を提供する必要があることに注意してください。

`JOIN`モードでインストールする必要があるマシンの場合、以下は上記の設定でカーネルをブートするiPXEスクリプトです:

#!ipxe
kernel harvester-<version>-vmlinuz ip=dhcp net.ifnames=1 rd.cos.disable rd.noverifyssl console=tty1 root=live:http://10.100.0.10/harvester/rootfs.squashfs harvester.install.automatic=true harvester.install.config_url=http://10.100.0.10/harvester/config-join.yaml
initrd harvester-<version>-initrd
boot

これは、iPXEスクリプトが`/usr/share/nginx/html/harvester/ipxe-join`に保存されていることを前提としています。

DHCPサーバ設定

PXEインストールシナリオでは、DHCPサーバを構成する際に_routers_オプション(option routers)を追加する必要があります。このオプションは、ホストにデフォルトルートを追加するために使用されます。デフォルトルートがないと、ノードは起動に失敗します。

ISOインストールシナリオでは、管理ネットワークインタフェースがDHCPモードのとき、DHCPサーバを構成する際に_routers_オプション(option routers)を追加する必要があります。

次に例を示します。

    Harvester Host:~ # ip route
    default via 192.168.122.1 dev mgmt-br proto dhcp

詳細については、 ISC DHCPv4オプション設定を参照してください。

以下は、ISC DHCPサーバを構成してiPXEスクリプトを提供する方法の例です:

option architecture-type code 93 = unsigned integer 16;

subnet 10.100.0.0 netmask 255.255.255.0 {
    option routers 10.100.0.10;
        option domain-name-servers 192.168.2.1;
    range 10.100.0.100 10.100.0.253;
}

group {
  # create group
  if exists user-class and option user-class = "iPXE" {
    # iPXE Boot
    if option architecture-type = 00:07 {
      filename "http://10.100.0.10/harvester/ipxe-create-efi";
    } else {
      filename "http://10.100.0.10/harvester/ipxe-create";
    }
  } else {
    # PXE Boot
    if option architecture-type = 00:07 {
      # UEFI
      filename "ipxe.efi";
    } else {
      # Non-UEFI
      filename "undionly.kpxe";
    }
  }

  host node1 { hardware ethernet 52:54:00:6b:13:e2; }
}

group {
  # join group
  if exists user-class and option user-class = "iPXE" {
    # iPXE Boot
    if option architecture-type = 00:07 {
      filename "http://10.100.0.10/harvester/ipxe-join-efi";
    } else {
      filename "http://10.100.0.10/harvester/ipxe-join";
    }
  } else {
    # PXE Boot
    if option architecture-type = 00:07 {
      # UEFI
      filename "ipxe.efi";
    } else {
      # Non-UEFI
      filename "undionly.kpxe";
    }
  }

  host node2 { hardware ethernet 52:54:00:69:d5:92; }
}

設定ファイルは、サブネットと2つのグループを宣言します。最初のグループは`CREATE`モードを使用してブートするホスト用で、もう一つは`JOIN`モード用です。デフォルトでは、iPXEパスが選択されますが、PXEクライアントを検出すると、クライアントアーキテクチャに応じてiPXEイメージを提供します。まず、これらのイメージとTFTPサーバを準備してください。

インターネットシステムコンソーシアム(ISC)は、2022年にISC DHCPの最終 サービス終了(EOL)を発表しました。ISC DHCPユーザーは、ISCがより現代的なネットワーク環境向けに設計した新しく機能豊富な Kea DHCPへ移行することが推奨されます。すでにKea DHCPv4サーバを使用している場合は、以下の設定例を確認してください。詳細については、 Kea DHCPv4設定を参照してください。

"client-classes": [
  {
    "name": "iPXE UEFI/CREATE",
    "test": "option[user-class].exists and substring(option[user-class].hex,0,4) == 'iPXE' and option[client-system].hex == 0x0007",
    "boot-file-name": "http://10.100.0.10/harvester/ipxe-create-efi",
    "only-if-required": true
  },
  {
    "name": "iPXE non-UEFI/CREATE",
    "test": "option[user-class].exists and substring(option[user-class].hex,0,4) == 'iPXE' and not option[client-system].hex == 0x0007",
    "boot-file-name": "http://10.100.0.10/harvester/ipxe-create",
    "only-if-required": true
  },
  {
    "name": "iPXE UEFI/JOIN",
    "test": "option[user-class].exists and substring(option[user-class].hex,0,4) == 'iPXE' and option[client-system].hex == 0x0007",
    "boot-file-name": "http://10.100.0.10/harvester/ipxe-join-efi",
    "only-if-required": true
  },
  {
    "name": "iPXE non-UEFI/JOIN",
    "test": "option[user-class].exists and substring(option[user-class].hex,0,4) == 'iPXE' and not option[client-system].hex == 0x0007",
    "boot-file-name": "http://10.100.0.10/harvester/ipxe-join",
    "only-if-required": true
  },
  {
    "name": "PXE UEFI",
    "test": "option[user-class].exists and not substring(option[user-class].hex,0,4) == 'iPXE' and option[client-system].hex == 0x0007",
    "next-server": "10.100.0.20",
    "boot-file-name": "ipxe.efi"
  },
  {
    "name": "PXE non-UEFI",
    "test": "option[user-class].exists and not substring(option[user-class].hex,0,4) == 'iPXE' and option[client-system].hex == 0x0007",
    "next-server": "10.100.0.20",
    "boot-file-name": "undionly.kpxe"
  }
]

"subnet4": [
  {
    "subnet": "10.100.0.0/24",
    "pools": [
      {
        "pool": "10.100.0.100 - 10.100.0.199",
        "require-client-classes" : [ "iPXE UEFI/CREATE", "iPXE non-UEFI/CREATE" ]
      }.
      {
        "pool": "10.100.0.200 - 10.100.0.253",
        "require-client-classes" : [ "iPXE UEFI/JOIN", "iPXE non-UEFI/JOIN" ]
      }
    ],
    "option-data": [
      {
        "name": "routers",
        "data": "10.100.0.10"
      }
    ],
    "reservations": [
      // assign ip address to the host for booting in CREATE mode
      {
        "hw-address": "52:54:00:6b:13:e2",
        "ip-address": "10.100.0.101"
      },
      // assign ip address to the host for booting in JOIN mode
      {
        "hw-address": "52:54:00:69:d5:92",
        "ip-address": "10.100.0.201"
      }
    ]
  }
]

設定ファイル

詳細については、設定ファイルを参照してください。

デフォルトでは、最初のノードがクラスターの管理ノードになります。ノードが3つある場合、最初に追加された他の2つのノードは自動的に管理ノードに昇格し、HAクラスターを形成します。

異なるゾーンから管理ノードを昇格させたい場合は、os.labels設定にノードラベル`topology.kubernetes.io/zone`を追加できます。この場合、少なくとも3つの異なるゾーンが必要です。

ユーザーはカーネルパラメータを介して設定を提供することもできます。たとえば、CREATE インストールモードを指定するには、ユーザーはブート時に harvester.install.mode=create カーネルパラメータを渡すことができます。カーネルパラメータを通じて渡された値は、設定ファイルに指定された値よりも優先されます。

UEFI HTTPブートサポート

UEFIファームウェアは、HTTPサーバーからブートイメージを読み込むことをサポートしています。このセクションでは、UEFI HTTPブートを使用してiPXEプログラムを読み込み、自動インストールを実行する方法を示します。

iPXEプログラムを提供する

http://boot.ipxe.org/ipxe.efi からiPXE UEFIプログラムをダウンロードし、ipxe.efi がHTTPサーバーからダウンロードできることを確認してください。次に例を示します。

cd /usr/share/nginx/html/harvester/
wget http://boot.ipxe.org/ipxe.efi

そのファイルは現在、http://10.100.0.10/harvester/ipxe.efi からローカルにダウンロードできます。

DHCPサーバ設定

ユーザーが最初に動的IPを取得してUEFI HTTPブート機能を使用する予定の場合、DHCPサーバーはそのようなリクエストを受け取ったときにiPXEプログラムのURLを提供する必要があります。以下は、更新されたISC DHCPサーバーグループの例です:

group {
  # create group
  if exists user-class and option user-class = "iPXE" {
    # iPXE Boot
    if option architecture-type = 00:07 {
      filename "http://10.100.0.10/harvester/ipxe-create-efi";
    } else {
      filename "http://10.100.0.10/harvester/ipxe-create";
    }
  } elsif substring (option vendor-class-identifier, 0, 10) = "HTTPClient" {
    # UEFI HTTP Boot
    option vendor-class-identifier "HTTPClient";
    filename "http://10.100.0.10/harvester/ipxe.efi";
  } else {
    # PXE Boot
    if option architecture-type = 00:07 {
      # UEFI
      filename "ipxe.efi";
    } else {
      # Non-UEFI
      filename "undionly.kpxe";
    }
  }

  host node1 { hardware ethernet 52:54:00:6b:13:e2; }
}

elsif substring ステートメントは新しく、UEFI HTTPブートDHCPリクエストを受け取ったときに http://10.100.0.10/harvester/ipxe.efi を提供します。クライアントがiPXEプログラムを取得して実行すると、iPXEプログラムは再度DHCPリクエストを送信し、URL http://10.100.0.10/harvester/ipxe-create-efi からiPXEスクリプトを読み込みます。

Kea DHCPv4サーバーでUEFI HTTPブートを有効にしたい場合は、`client-classes`の末尾に新しい`client-class`を追加する必要があります。

例:

{
  "name": "HTTP",
  "test": "substring(option[vendor-class-identifier].hex,0,10) == 'HTTPClient'",
  "option-data": [
    {
      "name": "vendor-class-identifier",
      "data": "HTTPClient"
    }
  ],
  "boot-file-name": "http://10.100.0.10/harvester/ipxe.efi"
}

UEFIブート用のiPXEスクリプト

カーネルパラメータでUEFIブート用のinitrdイメージを指定することは必須です。以下は、`CREATE`モード用のiPXEスクリプトの更新版です。

#!ipxe
kernel harvester-<version>-vmlinuz initrd=harvester-<version>-initrd ip=dhcp net.ifnames=1 rd.cos.disable rd.noverifyssl console=tty1 root=live:http://10.100.0.10/harvester/rootfs.squashfs harvester.install.automatic=true harvester.install.config_url=http://10.100.0.10/harvester/config-create.yaml
initrd harvester-<version>-initrd
boot

パラメータ initrd=harvester-<version>-initrd は必須です。

タグ付きVLANネットワークブート

タグ付きVLANネットワーク上でPXEブートを実行するには、SUSE Virtualization ホストを次のBIOS/UEFI設定で構成する必要があります:

  • VLAN IDはネットワークIDに設定されています。

  • ブートプロトコルは`PXE`に設定されています。

  • DHCPが有効になっています。

成功したネットワークブートには、ホストの仕様に応じて追加の設定変更が必要な場合があります。これらの変更を行う方法も異なる場合があります。例えば、HPE ProLiant DL360 Gen9サーバーでは、NICファームウェアを通じてのみブートプロトコルとVLAN IDを変更できます。

詳細については、サーバーのマニュアルを参照してください。

ブート時に正しいネットワークインタフェースが使用されるように、iPXE `kernel`コマンドを以下のdracutパラメータで更新するようにしてください:

  • BOOTIF=<mac_address>:ネットワークインタフェース`<interface_name>`を使用します。

  • ifname=<interface_name>:<mac_address>:アドレス`<mac_address>`を持つネットワークインタフェースに名前`<interface_name>`を割り当てます。

  • vlan=<vlan_id>:<interface_name>:`<interface_name>`上に名前`<vlan_id>`のVLANデバイスを設定します。

サンプルiPXEスクリプト:

#!ipxe
kernel harvester-<version>-vmlinuz ip=dhcp net.ifnames=1 rd.cos.disable rd.noverifyssl console=tty1 root=live:http://10.100.0.10/harvester/rootfs.squashfs harvester.install.automatic=true harvester.install.config_url=http://10.100.0.10/harvester/config-create.yaml BOOTIF=<mac_address> ifname=<interface_name>:<mac_address> vlan=<vlan_id>:<interface_name>
initrd harvester-<version>-initrd
boot

便利なカーネルパラメータ

設定に加えて、さまざまなシナリオで役立つ他のカーネルパラメータを指定することもできます。 また、 dracut.cmdline(7)も参照してください。

ip=dhcp

複数のネットワークインタフェースがある場合、すべてのインターフェースからDHCPサーバーからIPを取得するために`ip=dhcp`パラメータを追加できます。

rd.net.dhcp.retry=<cnt>

DHCPサーバーからIPを取得できないと、iPXEブートが失敗します。パラメータ`rd.net.dhcp.retry=<cnt>`を追加して、`<cnt>`回DHCPリクエストを再試行できます。

harvester.install.skipchecks=true

ハードウェアチェックが失敗した場合(生産使用の最小要件が満たされていないため)、インストールは停止します。この動作をオーバーライドするには、カーネルパラメータ`harvester.install.skipchecks=true`を設定してください。true`に設定されている場合、警告メッセージは/var/log/console.log`に保存されますが、製品使用のためのハードウェア要件が満たされていなくてもインストールは進行します。

harvester.install.with_net_images=true

インストーラーはインストール中に画像を事前に読み込まず、インストールが完了した後に必要なすべての画像をインターネットから取得します。このパラメータの使用はほとんどの場合推奨されません。詳細については、ネットインストールISOを参照してください。

harvester.install.mode=install

ブート時にインストールモードでインストーラーを自動的に起動します。

console=tty1

ブート時にアクティブにするコンソールテレタイプを指定します。

harvester.install.tty=tty1

インストーラーを起動するテレタイプコンソールを指定します。

net.ifnames=1

インストーラーで予測可能なネットワークインタフェース名を有効にし、SUSE Virtualizationがインストールされた後にシステムのデフォルトと一致します。これにより、システムは正しいネットワークインタフェースを利用できるようになります。