第2章 ベアメタルデプロイメントの設定
OpenStack 環境でベアメタルのデプロイメントを有効化するように、Bare Metal Provisioning、Image サービス、および Compute を設定します。以下のセクションでは、ベアメタルノードを正常にデプロイするために必要な追加の設定手順の概要を説明します。
2.1. Bare Metal Provisioning サービスの OpenStack 設定の作成 リンクのコピーリンクがクリップボードにコピーされました!
2.1.1. OpenStack Networking の設定 リンクのコピーリンクがクリップボードにコピーされました!
DHCP、PXE ブート、およびその他の要件のために OpenStack Networking が Bare Metal Provisioning と通信するように設定します。以下の手順では、ベアメタルのプロビジョニングに使用する単一のフラットなネットワークのユースケース向けに OpenStack Networking を設定します。この設定では、ML2 プラグインと Open vSwitch エージェントを使用します。
プロビジョニングに使用されるネットワークインターフェイスが、OpenStack Networking ノードのリモート接続に使用されるネットワークインターフェイスと同じではないことを確認してください。この手順では、Bare Metal Provisioning Network インターフェイスを使用してブリッジを作成し、リモート接続をすべて破棄します。
以下の手順はすべて、root ユーザーとしてログインしている間、OpenStack Networking をホストするサーバーで実行する必要があります。
OpenStack Networking がベアメタルプロビジョニングと通信するための設定
Identity に管理ユーザーとしてアクセスするためのシェルを設定します。
source ~stack/overcloudrc
# source ~stack/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow ベアメタルインスタンスをプロビジョニングするためのフラットなネットワークを作成します。
neutron net-create --tenant-id TENANT_ID sharednet1 --shared \ --provider:network_type flat --provider:physical_network PHYSNET
# neutron net-create --tenant-id TENANT_ID sharednet1 --shared \ --provider:network_type flat --provider:physical_network PHYSNETCopy to Clipboard Copied! Toggle word wrap Toggle overflow TENANT_ID は、ネットワークを作成するテナントの一意の ID に置き換えます。PHYSNET は、物理ネットワークの名前に置き換えます。
フラットネットワーク上にサブネットを作成します。
neutron subnet-create sharednet1 NETWORK_CIDR --name SUBNET_NAME \ --ip-version 4 --gateway GATEWAY_IP --allocation-pool \ start=START_IP,end=END_IP --enable-dhcp
# neutron subnet-create sharednet1 NETWORK_CIDR --name SUBNET_NAME \ --ip-version 4 --gateway GATEWAY_IP --allocation-pool \ start=START_IP,end=END_IP --enable-dhcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えます。
- NETWORK_CIDR は、サブネットが示す IP アドレスブロックの Classless Inter-Domain Routing (CIDR) 表記に置き換えます。START_IP で始まり END_IP で終る範囲で指定する IP アドレスブロックは、NETWORK_CIDR で指定されている IP アドレスブロックの範囲内に入る必要があります。
- SUBNET_NAME は、サブネットの名前に置き換えます。
- GATEWAY_IP は、新しいサブネットのゲートウェイとして機能するシステムの IP アドレスまたはホスト名に置き換えます。このアドレスは、NETWORK_CIDR で指定されている IP アドレスブロック内で、かつ START_IP で始まり END_IP で終わる範囲で指定されている IP アドレスブロック外である必要があります。
- START_IP は、Floating IP アドレスを確保する新規サブネット内の IP アドレス範囲の開始アドレスを示す IP アドレスに置き換えます。
- END_IP は、Floating IP アドレスを確保する新規サブネット内の IP アドレス範囲の終了アドレスを示す IP アドレスに置き換えます。
ネットワークとサブネットをルーターに接続して、メタデータ要求が OpenStack Networking サービスによって処理されるようにします。
neutron router-create ROUTER_NAME
# neutron router-create ROUTER_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow ROUTER_NAMEは、ルーターの名前に置き換えます。ベアメタルサブネットをこのルーターのインターフェイスとして追加します。
neutron router-interface-add ROUTER_NAME BAREMETAL_SUBNET
# neutron router-interface-add ROUTER_NAME BAREMETAL_SUBNETCopy to Clipboard Copied! Toggle word wrap Toggle overflow ROUTER_NAME をルーターの名前に置き換え、
BAREMETAL_SUBNETを、以前に作成した ID またはサブネット名に置き換えます。これにより、cloud-initからのメタデータ要求に対応すると共に、ノードを設定することができます。Bare Metal Provisioning サービスを実行しているコンピュートノードの
/etc/ironic/ironic.confファイルを更新して、cleaning サービスに同じネットワークを利用します。Bare Metal Provisioning サービスが実行されているコンピュートノードにログインし、rootユーザーとして以下のコマンドを実行します。openstack-config --set /etc/ironic/ironic.conf neutron cleaning_network_uuid NETWORK_UUID
# openstack-config --set /etc/ironic/ironic.conf neutron cleaning_network_uuid NETWORK_UUIDCopy to Clipboard Copied! Toggle word wrap Toggle overflow NETWORK_UUID は、前のステップで作成したベアメタルプロビジョニングネットワークの ID に置き換えます。
Bare Metal Provisioning サービスを再起動します。
systemctl restart openstack-ironic-conductor.service
# systemctl restart openstack-ironic-conductor.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.1.2. Bare Metal Provisioning フレーバーの作成 リンクのコピーリンクがクリップボードにコピーされました!
ベアメタルノードが提供する仕様(メモリー、CPU およびディスク)を持つデプロイメントの一部として使用するフレーバーを作成する必要があります。
既存のフレーバーをリスト表示します。
openstack flavor list
# openstack flavor listCopy to Clipboard Copied! Toggle word wrap Toggle overflow Bare Metal Provisioning サービス向けに新規フレーバーを作成します。
openstack flavor create --id auto --ram RAM --vcpus VCPU --disk DISK --public baremetal
# openstack flavor create --id auto --ram RAM --vcpus VCPU --disk DISK --public baremetalCopy to Clipboard Copied! Toggle word wrap Toggle overflow RAM は
RAMメモリーに、VCPUは仮想 CPU の数に置き換え、DISKはディスクストレージの値に置き換えます。ローカルディスクから起動するようにフレーバーを設定します。設定しなければ、デフォルトの netboot 手法が使用されます。
openstack flavor set --property capabilities:boot_option='local' baremetal
# openstack flavor set --property capabilities:boot_option='local' baremetalCopy to Clipboard Copied! Toggle word wrap Toggle overflow 指定したそれぞれの値を使用して新規フレーバーが作成されたことを確認します。
openstack flavor list
# openstack flavor listCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.1.3. ベアメタルイメージの作成 リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Provisioning のデプロイメントには、イメージと ユーザー イメージ をデプロイ するという 2 セットのイメージが必要です。デプロイ イメージは、ノードをブートして ユーザー イメージを Bare Metal Provisioning ノードにコピーするだけを目的とした基本的なイメージです。デプロイ イメージが Image サービスに読み込まれたら、Bare Metal Provisioning ノードを更新して、デプロイ イメージをブートイメージとして使用するように設定することができます。デプロイイメージを作成する必要はあり ません。アンダークラウドによるオーバークラウドのデプロイ 時に、すでにデプロイイメージが使用されているためです。デプロイ イメージは、以下のように、カーネル と ramdisk の 2 つの部分に分けることができます。
ironic-python-agent.kernel ironic-python-agent.initramfs
ironic-python-agent.kernel
ironic-python-agent.initramfs
これらのイメージは、削除していない場合は ~/stack/images ディレクトリーに配置する必要があります。定義されていない場合は、⚙ -director-images-ips パッケージがインストールされているので、これらのイメージは /usr/share/guava-director-images/ironic-python-agent*.el7ost.tar ファイル内にあります。
イメージを抽出して Image サービスに読み込みます。
openstack image create --container-format aki --disk-format aki --public --file ./ironic-python-agent.kernel bm-deploy-kernel openstack image create --container-format ari --disk-format ari --public --file ./ironic-python-agent.initramfs bm-deploy-ramdisk
# openstack image create --container-format aki --disk-format aki --public --file ./ironic-python-agent.kernel bm-deploy-kernel
# openstack image create --container-format ari --disk-format ari --public --file ./ironic-python-agent.initramfs bm-deploy-ramdisk
最後に必要となるイメージは、Bare Metal Provisioning ノードにデプロイされる実際のイメージです。たとえば、Red Hat Enterprise Linux KVM イメージは、すでに cloud-init を持っているため、ダウンロードできます。
Image サービスにイメージを読み込みます。
openstack image create --container-format bare --disk-format qcow2 --public --file ./IMAGE_FILE rhel
# openstack image create --container-format bare --disk-format qcow2 --public --file ./IMAGE_FILE rhel
2.1.4. Bare Metal Provisioning ノードの Bare Metal Provisioning サービスへの追加 リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Provisioning サービスを Bare Metal Provisioning サービスに追加するには、クラウドをインスタンス化するために使用した instackenv.json ファイルのセクションをコピーし、必要に応じて変更します。
source コマンドで
overcloudrcファイルを読み込み、.jsonファイルをインポートします。source ~stack/overcloudrc openstack baremetal import --json ./baremetal.json
# source ~stack/overcloudrc # openstack baremetal import --json ./baremetal.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow ノードの
driver_infoセクションでdeploy_kernelおよびdeploy_ramdiskを指定して、デプロイされたイメージを初期ブートイメージとして使用するように、Bare Metal Provisioning サービスのベアメタルノードを更新します。ironic node-update NODE_UUID add driver_info/deploy_kernel=DEPLOY_KERNEL_ID driver_info/deploy_ramdisk=DEPLOY_RAMDISK_ID
# ironic node-update NODE_UUID add driver_info/deploy_kernel=DEPLOY_KERNEL_ID driver_info/deploy_ramdisk=DEPLOY_RAMDISK_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow
NODE_UUID は、ベアメタルノードの UUID に置き換えます。この値は、director ノードで ironic node-list コマンドを実行して取得できます。DEPLOY_KERNEL_ID を、デプロイカーネルイメージの ID に置き換えます。この値は、director ノードで glance image-list コマンドを実行すると取得できます。DEPLOY_RAMDISK_ID をデプロイ ramdisk イメージの ID に置き換えます。この値は、director ノードで glance image-list コマンドを実行すると取得できます。
2.1.5. ベアメタルプロビジョニングノードのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
nova boot コマンドを使用して、Bare Metal Provisioning ノードをデプロイします。
nova boot --image BAREMETAL_USER_IMAGE --flavor BAREMETAL_FLAVOR --nic net-id=IRONIC_NETWORK_ID --key default MACHINE_HOSTNAME
# nova boot --image BAREMETAL_USER_IMAGE --flavor BAREMETAL_FLAVOR --nic net-id=IRONIC_NETWORK_ID --key default MACHINE_HOSTNAME
BAREMETAL_USER_IMAGE を Image サービスにロードされたイメージに置き換え、BAREMETAL_FLAVOR を Bare Metal デプロイメントのフレーバーに、IRONIC_NETWORK_ID は OpenStack Networking サービスの Bare Metal Provisioning Network の ID に、MACHINE_HOSTNAME はデプロイ後のマシンのホスト名に置き換えます。