2.5. 例:SSH と Virsh を使用したベアメタルプロビジョニングのテスト
単一の物理ホストにベアメタルノードとして機能する 2 つの仮想マシンにインスタンスをデプロイすることで、Bare Metal Provisioning 設定をテストします。どちらの仮想マシンも、libvirt と virsh を使用して仮想化されます。
SSH ドライバーは、テストおよび評価の目的でのみ利用いただけます。Red Hat OpenStack Platform のエンタープライズ環境には推奨していません。
このシナリオでは、以下のリソースが必要です。
- オーバークラウドノードに設定された Bare Metal Provisioning サービスが含まれる Red Hat OpenStack Platform 環境。本ガイドのすべての手順を完了している必要があります。
- Red Hat Enterprise Linux 7.2 および libvirt 仮想化ツールを使用するベアメタルマシン 1 台このシステムは、仮想ベアメタルノードを含むホストとして機能します。
- Bare Metal Provisioning ノードと仮想ベアメタルノードを含むホスト間のネットワーク接続 1 つ。このネットワークは、ベアメタルプロビジョニングネットワークとして機能します。
2.5.1. 仮想ベアメタルノードの作成 リンクのコピーリンクがクリップボードにコピーされました!
テストシナリオで、ベアメタルノードとして機能する 2 台の仮想マシンを作成します。ノードは Node1 および Node2 と呼ばれます。
仮想ベアメタルノードの作成
- libvirt ホストから Virtual Machine Manager にアクセスします。
以下の設定で 2 台の仮想マシンを作成します。
- 1 vCPU
- 2048 MB のメモリー
- ネットワーク起動 (PXE)
- 20 GB のストレージ
-
ネットワークソース:
ホストデバイスの eth0:⚙ および ソースモード:Bridge⚙ を選択すると、仮想マシンがホストのイーサネットネットワークインターフェイスを共有するように設定されます。これにより、Bare Metal Provisioning ノードが仮想化ノードに直接アクセスできるようになります。
- 両方の仮想マシンをシャットダウンします。
2.5.2. SSH キーペアの作成 リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Provisioning ノードが libvirt ホストに接続できるようにする SSH キーペアを作成します。
SSH キーペアの作成
Bare Metal Provisioning ノードで、新しい SSH キーを作成します。
ssh-keygen -t rsa -b 2048 -C "user@domain.com" -f ./virtkey
# ssh-keygen -t rsa -b 2048 -C "user@domain.com" -f ./virtkeyCopy to Clipboard Copied! Toggle word wrap Toggle overflow user@domain.com を、この鍵を識別するメールアドレスまたはその他のコメントに置き換えます。コマンドがパスフレーズの入力を求めたら、Enter キーを押してパスフレーズなしで続行します。このコマンドは、秘密鍵(virtkey)と公開鍵(virtkey.pub)の 2 つのファイルを作成します。
公開鍵のコンテンツを、libvirt ホストの root ユーザーの /root/.ssh/authorized_keys ファイルにコピーします。
ssh-copy-id -i virtkey root@LIBVIRT_HOST
# ssh-copy-id -i virtkey root@LIBVIRT_HOSTCopy to Clipboard Copied! Toggle word wrap Toggle overflow LIBVIRT_HOST は、libvirt ホストの IP アドレスまたはホスト名に置き換えます。
秘密鍵(virtkey)は、ノードの登録時に使用されます。
2.5.3. 仮想ノードのベアメタルノードとしての追加 リンクのコピーリンクがクリップボードにコピーされました!
インスタンスをプロビジョニングするノードとして追加します。この例では、ドライバーの詳細を手動で提供し、ハードウェアイントロスペクションを使用してノードの情報を検出します。ノードの詳細は、ノードごとに手動で追加することもできます。詳細は、「ノードを手動で追加する」 を参照してください。
ベアメタルノードとしての仮想ノードの追加
Bare Metal Provisioning コンダクターサービスノードで、
pxe_sshドライバーを有効にします。openstack-config --set /etc/ironic/ironic.conf \ DEFAULT enabled_drivers pxe_ssh
# openstack-config --set /etc/ironic/ironic.conf \ DEFAULT enabled_drivers pxe_sshCopy to Clipboard Copied! Toggle word wrap Toggle overflow 既存のドライバーのリストに
pxe_sshを追加する場合は、ファイルを開いて、そのドライバーをコンマで区切ってenabled_driversのリストに追加します。Identity を管理ユーザーとして使用するためのシェルを設定します。
source ~/keystonerc_admin
# source ~/keystonerc_adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow 最初のノードを追加し、libvirt ホストの SSH の詳細を登録します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えます。
-
VIRTKEY_FILE_PATH は、
virtkeySSH 秘密鍵ファイルの絶対ファイルパスに置き換えます。 - LIBVIRT_HOST_IP は、libvirt ホストの IP アドレスまたはホスト名に置き換えます。
- KERNEL_UUID は、Image サービスにアップロードされた .kernel イメージの一意識別子に置き換えます。
- INITRAMFS_UUID は、Image サービスにアップロードされた .initramfs イメージの一意識別子に置き換えます。
-
VIRTKEY_FILE_PATH は、
-
上記と同じコマンドを使用して 2 番目のノードを追加し、
Node1をNode2に置き換えます。 PXE または仮想メディア経由ではなく、ノードのディスクにインストールされたローカルのブートローダーから初回のデプロイ後にリブートするようにノードを設定します。ノードのプロビジョニングに使用するフレーバーでも、ローカルブートの機能を設定する必要があります。ローカルブートを有効にするには、ノードのデプロイに使用するイメージに grub2 が含まれている必要があります。ローカルブートを以下のように設定します。
ironic node-update Node1 add \ properties/capabilities="boot_option:local" ironic node-update Node2 add \ properties/capabilities="boot_option:local"
# ironic node-update Node1 add \ properties/capabilities="boot_option:local" # ironic node-update Node2 add \ properties/capabilities="boot_option:local"Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードを manageable 状態に移行します。
ironic node-set-provision-state Node1 manage ironic node-set-provision-state Node2 manage
# ironic node-set-provision-state Node1 manage # ironic node-set-provision-state Node2 manageCopy to Clipboard Copied! Toggle word wrap Toggle overflow ノードのイントロスペクションを開始します。
ironic node-set-provision-state Node1 inspect ironic node-set-provision-state Node2 inspect
# ironic node-set-provision-state Node1 inspect # ironic node-set-provision-state Node2 inspectCopy to Clipboard Copied! Toggle word wrap Toggle overflow ノードをプロビジョニングする前に、ノードの検出およびイントロスペクションのプロセスが完了するまで実行する必要があります。ノードのイントロスペクションのステータスを確認するには、ironic node-list を実行し、
Provision Stateを探します。ノードは、イントロスペクションが成功した後、availableの状態になります。ノードの設定を検証します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記のコマンドの出力には、各インターフェイスが
TrueまたはNoneのいずれかと報告されるはずです。Noneとマークされたインターフェイスは、設定していないか、ドライバーがサポートしていないインターフェイスです。- ノードが正常に追加されたら、3章ベアメタルインスタンスの起動 を使用して 2 つのインスタンスを起動します。