第3章 オーバークラウドイメージ
Red Hat OpenStack Platform director は、オーバークラウドのイメージを提供します。このコレクションの QCOW イメージには、ベースのソフトウェアコンポーネントが含まれており、これらを統合してコンピュート、コントローラー、ストレージノードなどさまざまなオーバークラウドのロールを形成します。場合によっては、追加のコンポーネントをノードにインストールするなど、ニーズにあわせてオーバークラウドイメージの特定の機能を変更することもできます。
本ガイドでは、virt-customize ツールを使用して既存のコントローラーノードを増強するために既存のオーバークラウドイメージを変更する各種アクションについて説明します。たとえば、以下の手順を使用して、初期イメージには装備されていない ml2 プラグイン、Cinder バックエンド、監視エージェントを追加でインストールすることができます。
サードパーティー製のソフトウェアを追加するために変更を加えたオーバークラウドのイメージを使用中に発生した問題を Red Hat に報告する場合には、弊社の一般サードパーティーサポートポリシー (https://access.redhat.com/ja/articles/1409973) に従って、変更を加えていないイメージを使用した状態で問題を再現するように依頼する場合があります。
3.1. オーバークラウドイメージの取得 リンクのコピーリンクがクリップボードにコピーされました!
director では、オーバークラウドのノードをプロビジョニングする際に、複数のディスクが必要です。必要なディスクは以下のとおりです。
- イントロスペクションカーネルおよび ramdisk: PXE ブートでのベアメタルシステムのイントロスペクションに使用
- デプロイメントカーネルおよび ramdisk: システムのプロビジョニングおよびデプロイメントに使用
- オーバークラウドカーネル、ramdisk、完全なイメージ: ノードのハードディスクに書き込まれるベースのオーバークラウドシステム
rhosp-director-images
および rhosp-director-images-ipa
パッケージからこれらのイメージを取得します。
sudo yum install rhosp-director-images rhosp-director-images-ipa
$ sudo yum install rhosp-director-images rhosp-director-images-ipa
stack
ユーザーのホーム (/home/stack/images
) の images
ディレクトリーにアーカイブを展開します。
cd ~/images for i in /usr/share/rhosp-director-images/overcloud-full-latest-9.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-9.0.tar; do tar -xvf $i; done
$ cd ~/images
$ for i in /usr/share/rhosp-director-images/overcloud-full-latest-9.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-9.0.tar; do tar -xvf $i; done
3.2. Initrd: 最初の Ramdisk の変更 リンクのコピーリンクがクリップボードにコピーされました!
場合によっては、内部の ramdisk を変更する必要がある可能性があります。たとえば、イントロスペクションまたはプロビジョニングプロセス中にノードをブートする際には、特定のドライバーを利用できるようにする必要がある場合があります。以下の手順では、最初の ramdisk を変更する方法を記載しています。オーバークラウドにおいては、これには以下のいずれかが含まれます。
-
イントロスペクション ramdisk:
ironic-python-agent.initramfs
-
プロビジョニング ramdisk:
overcloud-full.initrd
以下の手順では、例として ironic-python-agent.initramfs
ramdisk に追加の RPM パッケージを追加します。
stack
ユーザーとしてログインして、ramdisk の一時ディレクトリーを作成します。
mkdir ipa-tmp cd ipa-tmp
$ mkdir ipa-tmp
$ cd ipa-tmp
skipcpio
と 「cpio」コマンドを使用して、一時ディレクトリーに ramdisk を展開します。
/usr/lib/dracut/skipcpio ~/images/ironic-python-agent.initramfs | zcat | cpio -ivd | pax -r
$ /usr/lib/dracut/skipcpio ~/images/ironic-python-agent.initramfs | zcat | cpio -ivd | pax -r
展開したコンテンツに RPM パッケージをインストールします。
rpm2cpio ~/RPMs/python-proliantutils-2.1.7-1.el7ost.noarch.rpm | pax -r
$ rpm2cpio ~/RPMs/python-proliantutils-2.1.7-1.el7ost.noarch.rpm | pax -r
新規の ramdisk を再作成します。
find . 2>/dev/null | cpio --quiet -c -o | gzip -8 > ~/images/ironic-python-agent.initramfs
$ find . 2>/dev/null | cpio --quiet -c -o | gzip -8 > ~/images/ironic-python-agent.initramfs
ramdisk に新しいパッケージが存在することを確認します。
lsinitrd ~/images/ironic-python-agent.initramfs | grep proliant
$ lsinitrd ~/images/ironic-python-agent.initramfs | grep proliant
3.3. QCOW: director への virt-customize のインストール リンクのコピーリンクがクリップボードにコピーされました!
libguestfs-tools パッケージには virt-customize ツールが含まれます。rhel-7-server-rpms リポジトリーから libguestfs-tools をインストールします。
sudo yum install libguestfs-tools
$ sudo yum install libguestfs-tools
3.4. QCOW: オーバークラウドイメージの検査 リンクのコピーリンクがクリップボードにコピーされました!
overcloud-full.qcow2 のコンテンツを検査する必要がある場合があります。qemu-system-x86_64 コマンドを使用して仮想マシンインスタンスを作成します。
sudo qemu-system-x86_64 --kernel overcloud-full.vmlinuz --initrd overcloud-full.initrd -m 1024 --append root=/dev/sda --enable-kvm overcloud-full.qcow2
$ sudo qemu-system-x86_64 --kernel overcloud-full.vmlinuz --initrd overcloud-full.initrd -m 1024 --append root=/dev/sda --enable-kvm overcloud-full.qcow2
または、virt-manager で以下のブートオプションを使用します。
- カーネルのパス: /overcloud-full.vmlinuz
- initrd のパス: /overcloud-full.initrd
- Kernel の引数: root=/dev/sda
3.5. QCOW: root パスワードの設定 リンクのコピーリンクがクリップボードにコピーされました!
イメージで root ユーザーのパスワードを設定します。
virt-customize --selinux-relabel -a overcloud-full.qcow2 --root-password password:test
$ virt-customize --selinux-relabel -a overcloud-full.qcow2 --root-password password:test
[ 0.0] Examining the guest ...
[ 18.0] Setting a random seed
[ 18.0] Setting passwords
[ 19.0] Finishing off
これにより、管理者レベルのアクセス権限でコンソールを使用してノードにアクセスできるようになります。
3.6. QCOW: イメージの登録 リンクのコピーリンクがクリップボードにコピーされました!
イメージを一時的に登録して、カスタマイズに適切な Red Hat のリポジトリーを有効にします。
virt-customize --selinux-relabel -a overcloud-full.qcow2 --run-command 'subscription-manager register --username=[username] --password=[password]'
$ virt-customize --selinux-relabel -a overcloud-full.qcow2 --run-command 'subscription-manager register --username=[username] --password=[password]'
[ 0.0] Examining the guest ...
[ 10.0] Setting a random seed
[ 10.0] Running: subscription-manager register --username=[username] --password=[password]
[ 24.0] Finishing off
[username] および [password] は、お客様の Red Hat アカウントの情報に置き換えます。これで、イメージに対して以下のコマンドが実行されます。
subscription-manager register --username=[username] --password=[password]
subscription-manager register --username=[username] --password=[password]
このコマンドでは、Red Hat のコンテンツ配信ネットワークにオーバークラウドのイメージを登録します。
3.7. QCOW: サブスクリプションのアタッチと Red Hat リポジトリーの有効化 リンクのコピーリンクがクリップボードにコピーされました!
アカウントのサブスクリプションからプール ID の一覧を検索します。
sudo subscription-manager list
$ sudo subscription-manager list
サブスクリプションプール ID を選択して、その ID をイメージにアタッチします。
virt-customize --selinux-relabel -a overcloud-full.qcow2 --run-command 'subscription-manager attach --pool [subscription-pool]'
$ virt-customize --selinux-relabel -a overcloud-full.qcow2 --run-command 'subscription-manager attach --pool [subscription-pool]'
[ 0.0] Examining the guest ...
[ 12.0] Setting a random seed
[ 12.0] Running: subscription-manager attach --pool [subscription-pool]
[ 52.0] Finishing off
[subscription-pool] は選択したサブスクリプションプール ID に置き換えるようにしてください。これで、イメージに対して以下のコマンドが実行されます。
subscription-manager attach --pool [subscription-pool]
subscription-manager attach --pool [subscription-pool]
このコマンドではイメージにプールが追加され、以下のコマンドで Red Hat リポジトリーを有効化できるようになります。
subscription-manager repos --enable=[repo-id]
$ subscription-manager repos --enable=[repo-id]
3.8. QCOW: カスタムリポジトリーファイルのコピー リンクのコピーリンクがクリップボードにコピーされました!
サードパーティー製のソフトウェアをイメージに追加するには、追加のリポジトリーが必要です。たとえば、以下は、OpenDaylight リポジトリーの内容を使用する設定が含まれたリポジトリーファイルの例です。
リポジトリーファイルをイメージにコピーします。
virt-customize --selinux-relabel -a overcloud-full.qcow2 --upload opendaylight.repo:/etc/yum.repos.d/
$ virt-customize --selinux-relabel -a overcloud-full.qcow2 --upload opendaylight.repo:/etc/yum.repos.d/
[ 0.0] Examining the guest ...
[ 12.0] Setting a random seed
[ 12.0] Copying: opendaylight.repo to /etc/yum.repos.d/
[ 13.0] Finishing off
--copy-in オプションは、リポジトリーファイルをオーバークラウドイメージの /etc/yum.repos.d/ にコピーします。
重要: Red Hat は、認定を受けていないベンダーからのソフトウェアに対するサポートは提供していません。インストールするソフトウェアがサポートされていることを、Red Hat のサポート担当者に確認してください。
3.9. QCOW: RPM のインストール リンクのコピーリンクがクリップボードにコピーされました!
virt-customize コマンドを使用して、イメージにパッケージをインストールします。
virt-customize --selinux-relabel -a overcloud-full.qcow2 --install opendaylight
$ virt-customize --selinux-relabel -a overcloud-full.qcow2 --install opendaylight
[ 0.0] Examining the guest ...
[ 11.0] Setting a random seed
[ 11.0] Installing packages: opendaylight
[ 91.0] Finishing off
--install オプションを指定すると、インストールするパッケージを指定することができます。
3.10. QCOW: サブスクリプションプールの消去 リンクのコピーリンクがクリップボードにコピーされました!
必要なパッケージをインストールしてイメージをカスタマイズした後に、サブスクリプションを削除して、イメージの登録を解除します。
virt-customize --selinux-relabel -a overcloud-full.qcow2 --run-command 'subscription-manager remove --all'
$ virt-customize --selinux-relabel -a overcloud-full.qcow2 --run-command 'subscription-manager remove --all'
[ 0.0] Examining the guest ...
[ 12.0] Setting a random seed
[ 12.0] Running: subscription-manager remove --all
[ 18.0] Finishing off
これで、イメージからサブスクリプションプールがすべて削除されます。
3.11. QCOW: イメージの登録解除 リンクのコピーリンクがクリップボードにコピーされました!
最後に、イメージの登録を解除します。これは、オーバークラウドのデプロイメントプロセスでイメージをノードにデプロイして、各ノードを個別で登録するためです。
virt-customize --selinux-relabel -a overcloud-full.qcow2 --run-command 'subscription-manager unregister'
$ virt-customize --selinux-relabel -a overcloud-full.qcow2 --run-command 'subscription-manager unregister'
[ 0.0] Examining the guest ...
[ 11.0] Setting a random seed
[ 11.0] Running: subscription-manager unregister
[ 17.0] Finishing off
3.12. director へのイメージのアップロード リンクのコピーリンクがクリップボードにコピーされました!
イメージの変更後には、director にアップロードします。stackrc ファイルを読み込み、コマンドラインから director にアクセスできるようにしてください。
source stackrc openstack overcloud image upload --image-path /home/stack/images/
$ source stackrc
$ openstack overcloud image upload --image-path /home/stack/images/
これにより、bm-deploy-kernel、bm-deploy-ramdisk、overcloud-full、overcloud-full-initrd、overcloud-full-vmlinuz のイメージが director にアップロードされます。これらは、デプロイメントとオーバークラウド用のイメージです。このスクリプトにより、director の PXE サーバーにあるイントロスペクションイメージがインストールされます。以下のコマンドを使用して CLI にイメージ一覧を表示します。
この一覧には、イントロスペクションの PXE イメージ (agent.*) は表示されません。director は、これらのファイルを /httpboot にコピーします。