2.2. RHEL または Windows ISO ファイルを使用してインスタンスイメージを作成する
ISO ファイルから、QCOW2 形式でカスタム Red Hat Enterprise Linux (RHEL) イメージまたは Windows イメージを作成し、それを Red Hat OpenStack Platform (RHOSP) Image サービス (glance) にアップロードしてインスタンス作成時に使用できます。
2.2.1. 前提条件
- イメージを作成する Linux ホストマシン。これは、アンダークラウドまたはオーバークラウドを除き、Linux パッケージをインストールして実行できる任意のマシンです。
advanced-virt
リポジトリーが有効になっている。$ sudo subscription-manager repos --enable=advanced-virt-for-rhel-<ver>-x86_64-rpms
ゲストオペレーティングシステムの作成に必要なすべてのパッケージが含まれる
virt-manager
アプリケーションがインストールされている。$ sudo dnf module install -y virt
仮想マシンイメージにアクセスして変更するためのツールセットが含まれる
libguestfs-tools
パッケージがインストールされている。$ sudo dnf install -y libguestfs-tools-c
- RHEL 9 または 8 ISO ファイルまたは Windows ISO ファイル。RHEL ISO ファイルの詳細は、RHEL 9.0 Binary DVD または RHEL 8.6 Binary DVD を参照してください。Windows ISO ファイルがない場合は、Microsoft Evaluation Center にアクセスして評価イメージをダウンロードしてください。
-
kickstart
ファイルを編集する必要がある場合はテキストエディター (RHEL のみ)。
アンダークラウドに libguestfs-tools
パッケージをインストールする場合は、アンダークラウドの tripleo_iscsid
サービスとのポートの競合を避けるために iscsid.socket
を非アクティブ化します。
$ sudo systemctl disable --now iscsid.socket
前提条件を満たすと、RHEL または Windows イメージの作成に進めます。
2.2.2. Red Hat Enterprise Linux 9 イメージの作成
Red Hat Enterprise Linux (RHEL) 9 の ISO ファイルを使用して、QCOW2 形式の Red Hat OpenStack Platform (RHOSP) イメージを作成できます。
手順
-
root
ユーザーとしてホストマシンにログオンします。 virt-install
でインストールを開始します。[root@host]# virt-install \ --virt-type kvm \ --name <rhel9-cloud-image> \ --ram <2048> \ --cdrom </var/lib/libvirt/images/rhel-9.0-x86_64-dvd.iso> \ --disk <rhel9.qcow2>,format=qcow2,size=<10> \ --network=bridge:virbr0 \ --graphics vnc,listen=127.0.0.1 \ --noautoconsole \ --os-variant=<rhel9.0>
山かっこ
<>
内の値を、使用している RHEL 9 イメージに応じた適切な値に置き換えます。このコマンドは、インスタンスを起動してインストールプロセスを開始します。
注記インスタンスが自動的に起動しない場合には、
virt-viewer
のコマンドを実行して、コンソールを確認します。[root@host]# virt-viewer <rhel9-cloud-image>
インスタンスを設定します。
- インストーラーの初期ブートメニューで、Install Red Hat Enterprise Linux 9 を選択します。
- 適切な 言語 および キーボード オプションを選択します。
- インストールに使用するデバイス種別を尋ねるプロンプトが表示されたら、自動検出したインストールメディア を選択します。
- インストール先を尋ねるプロンプトが表示されたら、ローカルの標準ディスク を選択します。その他のストレージオプションについては、Automatically configure partitioning を選択します。
- Which type of installation would you like? ウィンドウで、SSH サーバーをインストールする Basic Server インストールを選択します。
- ネットワークとホスト名の設定では、ネットワークに eth0 を選択し、デバイスのホスト名を指定します。デフォルトのホスト名は localhost.localdomain です。
- root パスワード フィールドにパスワードを入力し、確認 フィールドに同じパスワードをもう一度入力します。
- 画面上のメッセージでインストールの完了を確認できたら、インスタンスを再起動し、root ユーザーとしてログインします。
/etc/sysconfig/network-scripts/ifcfg-eth0
ファイルを編集して、以下の値のみが記載されている状態にします。TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=no
- マシンを再起動します。
コンテンツ配信ネットワークにマシンを登録します。
# sudo subscription-manager register # sudo subscription-manager attach \ --pool=<pool-id> # sudo subscription-manager repos \ --enable rhel-9-for-x86_64-baseos-rpms \ --enable rhel-9-for-x86_64-appstream-rpms
-
pool-id
を、有効なプール ID に置き換えます。subscription-manager list --available
コマンドを実行すると、使用可能なプール ID のリストが表示されます。
-
システムを更新します。
# dnf -y update
cloud-init
パッケージをインストールします。# dnf install -y cloud-utils-growpart cloud-init
/etc/cloud/cloud.cfg
設定ファイルを編集し、cloud_init_modules
の下に以下の内容を追加します。- resolv-conf
resolv-conf
オプションは、インスタンスの初回起動時にresolv.conf
ファイルを自動的に設定します。このファイルには、nameservers
、domain
、その他のオプションなどのインスタンスに関連した情報が記載されています。EC2 メタデータサービスにアクセスするときの問題を回避するには、次の行を
/etc/sysconfig/network
に追加します。NOZEROCONF=yes
コンソールメッセージが Dashboard の ログ タブおよび
nova console-log
の出力に表示されるようにするには、以下のブートオプションを/etc/default/grub
ファイルに追記します。GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
grub2-mkconfig
コマンドを実行します。# grub2-mkconfig -o /boot/grub2/grub.cfg
以下のような出力が表示されます。
Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-229.9.2.el9.x86_64 Found initrd image: /boot/initramfs-3.10.0-229.9.2.el9.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-121.el9.x86_64 Found initrd image: /boot/initramfs-3.10.0-121.el9.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-b82a3044fb384a3f9aeacf883474428b Found initrd image: /boot/initramfs-0-rescue-b82a3044fb384a3f9aeacf883474428b.img done
インスタンスの登録を解除して、作成されるイメージにこのインスタンスのサブスクリプション情報が含まれないようにします。
# subscription-manager repos --disable=* # subscription-manager unregister # dnf clean all
インスタンスの電源をオフにします。
# poweroff
virt-sysprep
コマンドでイメージのリセットおよびクリーニングをして、問題なくインスタンスの作成に使用できるようにします。[root@host]# virt-sysprep -d <rhel9-cloud-image>
ディスクイメージ内の空き領域をホスト内の空き領域に変換して、イメージサイズを縮小します。
[root@host]# virt-sparsify \ --compress <rhel9.qcow2> <rhel9-cloud.qcow2>
このコマンドは、コマンドが実行された場所に新しい
<rhel9-cloud.qcow2>
ファイルを作成します。注記インスタンスに適用されているフレーバーのディスクスペースに応じて、イメージをベースとするインスタンスのパーティションを手動でリサイズする必要があります。
<rhel9-cloud.qcow2>
イメージファイルを Image サービスにアップロードする準備が整いました。このイメージを RHOSP デプロイメントにアップロードする方法の詳細は、イメージを Image サービスにアップロードする を参照してください。
2.2.3. Red Hat Enterprise Linux 8 イメージの作成
Red Hat Enterprise Linux (RHEL) 8 の ISO ファイルを使用して、QCOW2 形式の Red Hat OpenStack Platform (RHOSP) イメージを作成できます。
手順
-
root
ユーザーとしてホストマシンにログオンします。 virt-install
でインストールを開始します。[root@host]# virt-install \ --virt-type kvm \ --name <rhel86-cloud-image> \ --ram <2048> \ --vcpus <2> \ --disk <rhel86.qcow2>,format=qcow2,size=<10> \ --location <rhel-8.6-x86_64-boot.iso> \ --network=bridge:virbr0 \ --graphics vnc,listen=127.0.0.1 \ --noautoconsole \ --os-variant <rhel8.6>
山かっこ
<>
内の値を、使用している RHEL イメージに応じた適切な値に置き換えます。このコマンドは、インスタンスを起動してインストールプロセスを開始します。
注記インスタンスが自動的に起動しない場合には、
virt-viewer
のコマンドを実行して、コンソールを確認します。[root@host]# virt-viewer <rhel86-cloud-image>
インスタンスを設定します。
- インストーラーの初期ブートメニューで、Install Red Hat Enterprise Linux 8 を選択します。
- 適切な 言語 および キーボード オプションを選択します。
- インストールに使用するデバイス種別を尋ねるプロンプトが表示されたら、基本ストレージデバイス を選択します。
-
デバイスのホスト名を指定します。デフォルトのホスト名は
localhost.localdomain
です。 -
タイムゾーン と
root
パスワードを設定します。 - Which type of installation would you like? ウィンドウで、SSH サーバーをインストールする Basic Server インストールを選択します。
- 画面上のメッセージでインストールの完了を確認できたら、インスタンスを再起動し、root ユーザーとしてログインします。
/etc/sysconfig/network-scripts/ifcfg-eth0
ファイルを編集して、以下の値のみが記載されている状態にします。TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=no
- マシンを再起動します。
コンテンツ配信ネットワークにマシンを登録します。
# sudo subscription-manager register # sudo subscription-manager attach \ --pool=<pool-id> # sudo subscription-manager repos \ --enable rhel-8-for-x86_64-baseos-rpms \ --enable rhel-8-for-x86_64-appstream-rpms
-
pool-id
を、有効なプール ID に置き換えます。subscription-manager list --available
コマンドを実行すると、使用可能なプール ID のリストが表示されます。
-
システムを更新します。
# dnf -y update
cloud-init
パッケージをインストールします。# dnf install -y cloud-utils-growpart cloud-init
/etc/cloud/cloud.cfg
設定ファイルを編集し、cloud_init_modules
の下に以下の内容を追加します。- resolv-conf
resolv-conf
オプションは、インスタンスの初回起動時にresolv.conf
ファイルを自動的に設定します。このファイルには、nameservers
、domain
、その他のオプションなどのインスタンスに関連した情報が記載されています。ネットワークの問題が発生するのを防ぐために、
/etc/udev/rules.d/75-persistent-net-generator.rules
ファイルを作成します。# echo "#" > /etc/udev/rules.d/75-persistent-net-generator.rules
これにより、
/etc/udev/rules.d/70-persistent-net.rules
ファイルが作成されるのを防ぎます。/etc/udev/rules.d/70-persistent-net.rules
ファイルが作成されると、ネットワークインターフェイスがeth0
ではなくeth1
として作成されて IP アドレスが割り当てられないため、スナップショットから起動するときにネットワークが正しく機能しない可能性があります。EC2 メタデータサービスにアクセスするときの問題を回避するには、次の行を
/etc/sysconfig/network
に追加します。NOZEROCONF=yes
コンソールメッセージが Dashboard の ログ タブおよび
nova console-log
の出力に表示されるようにするには、以下のブートオプションを/etc/grub.conf
ファイルに追記します。GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
インスタンスの登録を解除して、作成されるイメージにこのインスタンスの同じサブスクリプション情報が含まれないようにします。
# subscription-manager repos --disable=* # subscription-manager unregister # dnf clean all
インスタンスの電源をオフにします。
# poweroff
virt-sysprep
コマンドでイメージのリセットおよびクリーニングをして、問題なくインスタンスの作成に使用できるようにします。[root@host]# virt-sysprep -d <rhel86-cloud-image>
ディスクイメージ内の空き領域をホスト内の空き領域に変換して、イメージサイズを縮小します。
[root@host]# virt-sparsify \ --compress <rhel86.qcow2> <rhel86-cloud.qcow2>
このコマンドは、コマンドが実行された場所に新しい
<rhel86-cloud.qcow2>
ファイルを作成します。注記インスタンスに適用されているフレーバーのディスクスペースに応じて、イメージをベースとするインスタンスのパーティションを手動でリサイズする必要があります。
<rhel86-cloud.qcow2>
イメージファイルを Image サービスにアップロードする準備が整いました。このイメージを RHOSP デプロイメントにアップロードする方法の詳細は、イメージを Image サービスにアップロードする を参照してください。
2.2.4. Windows イメージの作成
Windows の ISO ファイルを使用して、QCOW2 形式で Red Hat OpenStack Platform (RHOSP) イメージを作成できます。
手順
-
root
ユーザーとしてホストマシンにログオンします。 virt-install
でインストールを開始します。[root@host]# virt-install \ --name=<windows-image> \ --disk size=<size> \ --cdrom=<file-path-to-windows-iso-file> \ --os-type=windows \ --network=bridge:virbr0 \ --graphics spice \ --ram=<ram>
山かっこ
<>
内の値を、使用している Windows イメージに応じた適切な値に置き換えます。注記--os-type=windows
パラメーターにより、Windows インスタンスのクロックが正しく設定され、Hyper-V Enlightenment 機能が有効化されるようになります。Image サービス (glance) にイメージをアップロードする前に、イメージメタデータにos_type=windows
を設定する必要もあります。
virt-install
コマンドは、デフォルトでインスタンスイメージを/var/lib/libvirt/images/<windows-image>.qcow2
として保存します。インスタンスイメージを別の場所に保存する場合は、--disk
オプションのパラメーターを変更します。--disk path=<file-name>,size=<size>
<file-name>
を、インスタンスイメージを保存するファイルの名前 (およびオプションでそのパス) に置き換えます。たとえば、path=win8.qcow2,size=8
は現在の作業ディレクトリーにwin8.qcow2
という名前の 8 GB ファイルを作成します。注記インスタンスが自動的に起動しない場合には、
virt-viewer
のコマンドを実行して、コンソールを確認します。[root@host]# virt-viewer <windows-image>
Windows のインストール方法に関する詳細は、Microsoft のドキュメントを参照してください。
- 新規インストールした Windows システムで仮想化ハードウェアを使用できるようにするには、VirtIO ドライバーのインストールが必要な場合があります。詳細は、仮想化の設定および管理 の Windows 仮想マシン用の KVM 準仮想化ドライバーのインストール を参照してください。
Windows システムで Cloudbase-Init をダウンロードして実行すると、設定が完了します。Cloudbase-Init のインストールの最後に、Run Sysprep と Shutdown チェックボックスを選択します。
Sysprep
ツールは、特定の Microsoft サービスで使用する OS ID を生成して、インスタンスを一意にします。重要Red Hat は Cloudbase-Init に関するテクニカルサポートは提供しません。問題が発生した場合は、Cloudbase Solutions に連絡する を参照してください。
Windows システムがシャットダウンすると、
<windows-image.qcow2>
イメージファイルを Image サービスにアップロードできます。このイメージを RHOSP デプロイメントにアップロードする方法の詳細は、イメージを Image サービスにアップロードする を参照してください。