ベアメタルのプロビジョニング
Bare Metal Provisioning (Ironic)のインストール、設定、および使用
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
本書では、オーバークラウドで OpenStack サービスとして Bare Metal Provisioning (ironic)をインストールして設定する手順と、サービスを使用してエンドユーザー向けの物理マシンのプロビジョニングと管理を行う方法について説明します。このサービスを設定すると、ユーザーは仮想マシンインスタンスを起動するのと同じ方法で物理マシンでインスタンスを起動することができます。
Bare Metal Provisioning コンポーネントは、アンダークラウドの一部として Red Hat OpenStack Platform director によっても使用され、OpenStack 環境(オーバークラウド)を設定するベアメタルノードのプロビジョニングと管理を行います。director による Bare Metal Provisioning の使用方法についての詳細は、Director Installation and Usage を参照してください。
本書では、すでにデプロイされているオーバークラウドに Bare Metal Provisioning を手動でインストールする方法を説明します。この手動の手順は、Bare Metal Provisioning が Red Hat OpenStack Platform director の新しいバージョンに統合する方法とは異なります。このプロセスが行われていないオーバークラウドのアップグレードの試行はサポートされておらず、結果が未定義です。このドキュメントは、新しいバージョンの Red Hat OpenStack Platform director に統合されていることをプレビューするためのガイドとして扱う必要があります。
第1章 OpenStack Bare Metal Provisioning (ironic)のインストールおよび設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenStack Bare Metal Provisioning (ironic)は、エンドユーザー向けの物理マシン(ベアメタル)マシンのプロビジョニングと管理に必要なコンポーネントを提供します。オーバークラウドの Bare Metal Provisioning は、以下の OpenStack サービスと対話します。
- OpenStack Compute (nova)は、スケジューリング、テナントクォータ、IP の割り当て、および仮想マシンインスタンスを管理するためのユーザー向け API を提供します。一方、Bare Metal Provisioning は、ハードウェア管理のための管理 API を提供します。Bare Metal Provisioning ドライバーを使用し、Bare Metal Provisioning 要求を処理するには、単一の専用の openstack-nova-compute ホストを選択します。
- OpenStack Identity (keystone)は、要求の認証を提供し、Bare Metal Provisioning が他の OpenStack サービスを見つけることを支援します。
- OpenStack Image サービス(glance)は、ベアメタルマシンのブートに使用されるイメージおよびイメージメタデータを管理します。
- OpenStack Networking (neutron)は、必要なベアメタルプロビジョニングネットワークに DHCP とネットワーク設定を提供します。
Bare Metal Provisioning は、PXE を使用して物理マシンをプロビジョニングします。以下の図は、ユーザーが新しいベアメタルマシンを起動したとき、プロビジョニングプロセス中に OpenStack サービスがどのように対話するかを示しています。
1.1. 要件 リンクのコピーリンクがクリップボードにコピーされました!
本章では、インストールの前提条件、ハードウェア要件、ネットワーク要件など、Bare Metal Provisioning を設定するための要件の概要を説明します。
1.1.1. ベアメタルプロビジョニングのインストールの前提条件 リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Provisioning は、同じノードまたは別のノード上で実行するように設定できるコンポーネントの集まりです。本ガイドの設定例は、すべての Bare Metal Provisioning コンポーネントを単一のノードにインストールし、設定します。このガイドは、OpenStack Identity、OpenStack Image、OpenStack Compute、および OpenStack Networking のサービスがすでにインストールおよび設定されていることを前提としています。Bare Metal Provisioning には、以下の外部サービスも必要です。この外部サービスも、前提条件としてインストールおよび設定する必要があります。
- ハードウェア情報と状態を保存するデータベースサーバー。本ガイドでは、MariaDB データベースサービスが Red Hat OpenStack Platform 環境用に設定されていることを前提としています。
- メッセージングサービス。本ガイドでは、RabbitMQ が環境用に設定されていることを前提としています。
director を使用して OpenStack 環境をデプロイした場合、データベースおよびメッセージングサービスはオーバークラウドのコントローラーノードにインストールされます。
Red Hat OpenStack Platform では、Red Hat Enterprise Linux 7 を実行しているコンピュートノードおよび OpenStack Networking ノードで、firewalld ではなく iptables が必要です。本書のファイアウォールルールは、iptables を使用して設定されます。
ハードウェアイントロスペクション(ironic-inspector)は、iptables を使用して ironic ノードの MAC アドレスをブラックリストに指定します。ironic-inspector が変更を作成する間に別のプロセスが iptables をロックした場合、 ironic-inspector はサポートされている iptables -w フラグ(バージョン 1.4.21 以降)を使用します。
1.1.2. Bare Metal Provisioning ハードウェアの要件 リンクのコピーリンクがクリップボードにコピーされました!
すべての Bare Metal Provisioning コンポーネントを実行するノードには、以下のハードウェアが必要です。
- Intel 64 または AMD64 CPU 拡張機能をサポートする 64 ビット x86 プロセッサー。
- 最小で 6 GB のメモリー。
- 最小 40 GB の空きディスク領域
- 最小 2 枚の 1 Gbps ネットワークインターフェイスカード。ただし、特に多数のベアメタルマシンをプロビジョニングする場合には、ベアメタルプロビジョニングネットワークのトラフィックには、10 Gbps インターフェイスが推奨されます。
- ホストオペレーティングシステムとしてインストールされた Red Hat Enterprise Linux 7.2 (またはそれ以降)
あるいは、専用の openstack-nova-compute ノードに Bare Metal Provisioning コンポーネントをインストールして設定します。ハードウェア 要件については、director のインストールと使用 ガイドの コンピュートノード の要件 を参照してください。
1.1.3. Bare Metal Provisioning Networking の要件 リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Provisioning には、最低でも 2 つのネットワークが必要です。
- プロビジョニングネットワーク:これは、Bare Metal Provisioning がベアメタルマシンのプロビジョニングと管理に使用するプライベートネットワークです。Bare Metal Provisioning Network は、ベアメタルシステムの検出に役立つ DHCP および PXE ブート機能を提供します。このネットワークは、ベアメタルプロビジョニングが PXE ブートと DHCP 要求に対応できるように、トランキングされたインターフェイスでネイティブ VLAN を使用することが理想的です。これは、プロビジョニングされるベアメタルマシンの帯域外ドライバーを介して電源管理を制御するために使用されるネットワークでもあります。
- 外部ネットワーク:リモート接続用の別個のネットワーク。このネットワークに接続するインターフェイスには、静的または外部の DHCP サービス経由で動的に定義された、ルーティング可能な IP アドレスが必要です。
1.1.4. ベアメタルマシンの要件 リンクのコピーリンクがクリップボードにコピーされました!
プロビジョニングされるベアメタルマシンには、以下が必要です。
- 2 つの NIC: Bare Metal Provisioning ネットワーク用で、もう 1 つは外部接続用です。
- Bare Metal Provisioning ネットワークに接続された電源管理インターフェイス(IPMI など)。テスト目的で SSH を使用している場合は、これは必要ありません。
- システムの起動順序の上部にある Bare Metal Provisioning ネットワーク上の PXE ブート(ハードディスクおよび CD/DVD ドライブよりも先)。システムのその他すべての NIC については PXE ブートを無効にしてください。
プロビジョニングされるベアメタルマシンのその他の要件は、インストールするオペレーティングシステムによって異なります。Red Hat Enterprise Linux 7 の場合は、Red Hat Enterprise Linux 7 インストールガイド を参照してください。Red Hat Enterprise Linux 6 の場合は、Red Hat Enterprise Linux 6 インストールガイド を参照してください。
1.2. Bare Metal Provisioning サービス向け OpenStack の設定 リンクのコピーリンクがクリップボードにコピーされました!
すべての OpenStack サービスには、Identity サービスでの認証に使用するユーザー名とパスワードがあります。各サービスは、OpenStack Identity サービスとも定義し、Internal、Admin、および Public connectivity 用にそれに関連付けられたエンドポイント URL を持っている必要があります。
director ノードから Bare Metal Provisioning サービスを設定するには、以下の手順に従います。
source コマンドで
overcloudrcファイルを読み込みます。source ~stack/overcloudrc
# source ~stack/overcloudrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenStack Bare Metal Provisioning ユーザーを作成します。
openstack user create --password IRONIC_PASSWORD --enable IRONIC_USER openstack role add --project service --user IRONIC_USER admin
# openstack user create --password IRONIC_PASSWORD --enable IRONIC_USER # openstack role add --project service --user IRONIC_USER adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、
IRONIC_USERは Bare Metal Provisioning サービスのユーザーで、IRONIC_PASSWORDはパスワードになります。OpenStack Bare Metal Provisioning サービスを作成します。
openstack service create --name ironic --description "Ironic bare metal provisioning service" baremetal
# openstack service create --name ironic --description "Ironic bare metal provisioning service" baremetalCopy to Clipboard Copied! Toggle word wrap Toggle overflow 他の OpenStack サービスが使用している仮想 IP (VIP)アドレスを確認します。
openstack endpoint list -c "Service Name" -c "PublicURL" --long
# openstack endpoint list -c "Service Name" -c "PublicURL" --longCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドの出力は、サービスと
パブリック URLを表示します。これは通常、すべて同じサーバー上にあり、同じ IP アドレスを使用します。Bare Metal Provisioning サービスをインストールするコンピュートノードの Internal API ネットワークアドレスを取得します。
route -n
# route -nCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドの出力は、IP ルーティングテーブルに IP アドレスと各 IP アドレスの
インターフェイスを一覧表示します。次に、内部 API ネットワークアドレスを使用してサービスエンドポイントを作成します。
以下のように、Internal および Admin URL に使用する NIC に関連付けられた IP アドレスを確認します。
ifconfig INTERFACE
# ifconfig INTERFACECopy to Clipboard Copied! Toggle word wrap Toggle overflow サービスエンドポイントを作成します。
openstack endpoint create --publicurl http://VIP:6385 --internalurl http://COMPUTE_INTERNAL_API_IP:6385 --adminurl http://COMPUTE_INTERNAL_API_IP:6385 --region regionOne SERVICE_ID
# openstack endpoint create --publicurl http://VIP:6385 --internalurl http://COMPUTE_INTERNAL_API_IP:6385 --adminurl http://COMPUTE_INTERNAL_API_IP:6385 --region regionOne SERVICE_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
VIPは HAProxy で設定されている仮想 IP アドレスで、COMPUTE_INTERNAL_API_IPは内部 API ネットワークに接続されたコンピュートノードの IP アドレスで、SERVICE_IDはservice createコマンドを使用して作成される Bare Metal Provisioning サービスの ID です。
次に、直前の手順で作成したエンドポイントのパブリック URL の要求を受信するように HAProxy を設定する必要があります。HAProxy 値を設定するには、コントローラーノードに root ユーザーとしてログインしていることを確認してください。
/etc/haproxy/haproxy.cfgファイルを編集し、ファイルの最後に以下の行を追加します。listen ironic bind VIP:6385 transparent server SERVER_NAME COMPUTE_INTERNAL_API_IP:6385 check fall 5 inter 2000 rise 2
listen ironic bind VIP:6385 transparent server SERVER_NAME COMPUTE_INTERNAL_API_IP:6385 check fall 5 inter 2000 rise 2Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、以下が適用されます。
-
仮想 IP アドレスです。
-
SERVER_NAMEは、Bare Metal Provisioning サービスをインストールして実行する Compute サーバーの HAProxy 識別名です。 -
COMPUTE_INTERNAL_API_IPは、Bare Metal Provisioning サービスがインストールされ実行される Compute サーバーの内部 API IP アドレスです。 -
透過的で、HAProxy が IP アドレスをコントローラーノード上に存在しない場合でも、仮想 IP アドレスがコントローラー間で移動できるようにすることができます。 check 5 inter 2000 rise 2は、バックエンドサーバーでの次のヘルスチェックを指します。-
fall 5- 5 回連続してヘルスチェックに失敗すると、サーバーは利用できないと見なされます。 -
2000- ヘルスチェックの間隔は 2000 ミリ秒または 2 秒です。 -
Rise 2- ヘルスチェックが成功した後、サーバーが使用可能であると見なされます。
-
-
仮想 IP アドレスです。
HAProxy を再起動して、変更を適用します。
systemctl restart haproxy.service
# systemctl restart haproxy.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow バックエンドサーバーが使用できないことを示すメッセージを取得できます。haproxy[4249]: proxy ironic has no server available!.現在、このメッセージはインストールまたは設定されていないので、現在は無視できます。
1.3. Bare Metal Provisioning サービス用コントローラーノードの設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順は、Bare Metal Provisioning Database の作成 セクションを除き、root ユーザーとして Red Hat OpenStack Platform デプロイメント内のすべてのコントローラーノードで実行する必要があります。この手順は、すべてデータベースを共有しているため、1 つのコントローラーで実行する必要があります。
コントローラーノードで Bare Metal Provisioning ネットワークが Open vSwitch に接続されていることを確認し、OpenStack デプロイメントがそれに到達できるようにする必要があります。
Open vSwitch にブリッジを追加します。
ovs-vsctl add-br br-ironic ovs-vsctl add-port br-ironic IRONIC_PROVISIONING_NIC ovs-vsctl show
# ovs-vsctl add-br br-ironic # ovs-vsctl add-port br-ironic IRONIC_PROVISIONING_NIC # ovs-vsctl showCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、
br-ironicはブリッジの名前であり、IRONIC_PROVISIONING_NICはベアメタルプロビジョニングネットワークに接続されている NIC です。ovs-vsctl showコマンドを使用すると、関連付けられたポートで新しいブリッジが作成されていることを確認できますが、br-int統合ブリッジに新しいブリッジへのパッチがないことがわかります。統合ブリッジに新しいブリッジを追加するには、以下のプラグインファイルを更新する必要があります。
以下のように ML2 設定ファイル
/etc/neutron/plugins/ml2/ml2_conf.iniを更新します。-
type_driversパラメーターについては、ドライバー間でflatがリストされていることを確認します(例:type_drivers = vxlan,vlan,flat,gre)。これはコンマ区切りのリストです。 -
mechanism_driversパラメーターについては、mechanism_drivers =openvswitchなど、ドライバー間で openvswitch オプションが表示されていることを確認します。これはコンマ区切りのリストです。 -
flat_networksパラメーターについては、Bare Metal Provisioning ネットワークを参照する名前を作成します(例:ironicnet)。flat_networks=datacentre,ironicnet など、この名前が一覧表示されている flat_networksにリストされていることを確認します。これはコンマ区切りのリストです。 -
Bare Metal Provisioning ネットワークに VLAN を使用している場合は、
ironicnet:VLAN_START:VLAN_ENDの形式でnetwork_vlan_rangesパラメーターを追加します(例:network_vlan_ranges =datacentre:1:1000)。これはコンマ区切りのリストです。 -
enable_security_groupパラメーターはすでに有効になっているはずです。ただし、設定されていない場合は、値をTrueに変更します(例:enable_security_group = True)。
-
/etc/neutron/plugins/ml2/openvswitch_agent.iniファイルでbridge_mappingsパラメーターを見つけ、以下のように更新します。bridge_mappings =datacentre:br-ex,ironicnet:br-ironic
bridge_mappings =datacentre:br-ex,ironicnet:br-ironicCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコンマ区切りのキーと値のペアの値は、Bare Metal Provisioning ネットワークの名前を、ネットワークに接続されている物理デバイスにマッピングします。
neutron-openvswitch-agent.serviceを再起動して、統合ブリッジの一部としてbr-ironicブリッジを表示します。systemctl restart neutron-openvswitch-agent.service
# systemctl restart neutron-openvswitch-agent.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow neutron-server.serviceを再起動して、新規接続を検出します。systemctl restart neutron-server.service
# systemctl restart neutron-server.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このステップを実行しなかった場合には、OpenStack Networking サービス内で Bare Metal Provisioning ネットワークを作成しようとすると、要求されたフラットネットワークが存在しないというメッセージが表示されて失敗します。
1.3.1. ベアメタルプロビジョニングデータベースの作成 リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Provisioning が使用するデータベースおよびデータベースユーザーを作成します。この手順のすべての手順は、root ユーザーとしてログインし、データベースサーバーで実行する必要があります。
ベアメタルプロビジョニングデータベースの作成
データベースサービスに接続します。
mysql -u root
# mysql -u rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow ironic データベースを作成します。
mysql> CREATE DATABASE ironic CHARACTER SET utf8;
mysql> CREATE DATABASE ironic CHARACTER SET utf8;Copy to Clipboard Copied! Toggle word wrap Toggle overflow ironic データベースユーザーを作成し、ユーザーに ironic データベースへのアクセスを許可します。
mysql> GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'%' IDENTIFIED BY 'PASSWORD'; mysql> GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'localhost' IDENTIFIED BY 'PASSWORD';
mysql> GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'%' IDENTIFIED BY 'PASSWORD'; mysql> GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'localhost' IDENTIFIED BY 'PASSWORD';Copy to Clipboard Copied! Toggle word wrap Toggle overflow PASSWORD を、このユーザーとしてデータベースサーバーでの認証に使用されるセキュアなパスワードに置き換えます。
データベースの権限をフラッシュして、すぐに有効になるようにします。
mysql> FLUSH PRIVILEGES;
mysql> FLUSH PRIVILEGES;Copy to Clipboard Copied! Toggle word wrap Toggle overflow mysql クライアントを終了します。
mysql> quit
mysql> quitCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.2. Bare Metal Provisioning 用 OpenStack Compute サービスの設定 リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Provisioning ドライバー用に Compute サービスを設定します。このドライバーを使用すると、Compute は仮想マシンのプロビジョニングに使用されるのと同じ API を使用して物理マシンをプロビジョニングできます。各 openstack-nova-compute ノードには指定できるドライバーは 1 つだけです。Bare Metal Provisioning ドライバーを持つノードは、物理マシンのみをプロビジョニングできます。Bare Metal Provisioning ドライバーを使用してすべてのベアメタルノードをプロビジョニングするには、1 つの openstack-nova-compute ノードを割り当てることを推奨します。次の手順はすべて、root ユーザーとしてログインし、選択したコンピュートノードで実行する必要があります。
ベアメタルプロビジョニング用の OpenStack Compute の設定
Bare Metal Provisioning スケジューラーのホストマネージャーを使用するように Compute を設定します。
openstack-config --set /etc/nova/nova.conf \ DEFAULT scheduler_host_manager nova.scheduler.ironic_host_manager.IronicHostManager
# openstack-config --set /etc/nova/nova.conf \ DEFAULT scheduler_host_manager nova.scheduler.ironic_host_manager.IronicHostManagerCopy to Clipboard Copied! Toggle word wrap Toggle overflow Compute スケジューラーがインスタンスの変更を追跡できないようにします。
openstack-config --set /etc/nova/nova.conf DEFAULT scheduler_tracks_instance_changes false
# openstack-config --set /etc/nova/nova.conf DEFAULT scheduler_tracks_instance_changes falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のようにデフォルトのフィルターを設定します。
openstack-config --set /etc/nova/nova.conf DEFAULT baremetal_scheduler_default_filters AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter
# openstack-config --set /etc/nova/nova.conf DEFAULT baremetal_scheduler_default_filters AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilterCopy to Clipboard Copied! Toggle word wrap Toggle overflow Compute がデフォルトの Bare Metal Provisioning スケジューリングフィルターを使用するように設定します。
openstack-config --set /etc/nova/nova.conf \ DEFAULT scheduler_use_baremetal_filters True
# openstack-config --set /etc/nova/nova.conf \ DEFAULT scheduler_use_baremetal_filters TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow Bare Metal Provisioning に正しい認証情報を使用するように Compute を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えます。
- PASSWORD を、Bare Metal Provisioning が Identity での認証に使用するパスワードに置き換えます。
- IDENTITY_IP は、ID をホストするサーバーの IP アドレスまたはホスト名に置き換えます。
- IRONIC_API_IP は、Bare Metal Provisioning API サービスをホストするサーバーの IP アドレスまたはホスト名に置き換えます。
ironicコンピュートノードでnovaデータベースの認証情報を設定します。openstack-config --set /etc/nova/nova.conf database connection "mysql+pymysql://nova:NOVA_DB_PASSWORD@DB_IP/nova"
# openstack-config --set /etc/nova/nova.conf database connection "mysql+pymysql://nova:NOVA_DB_PASSWORD@DB_IP/nova"Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンピュートコントローラーノードで Compute スケジューラーサービスを再起動します。
systemctl restart openstack-nova-scheduler.service
# systemctl restart openstack-nova-scheduler.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow コンピュートノードでコンピュートサービスを再起動します。
systemctl restart openstack-nova-compute.service
# systemctl restart openstack-nova-compute.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.3. OpenStack Networking DHCP エージェントを設定して iPXE 要求にタグを付ける リンクのコピーリンクがクリップボードにコピーされました!
iPXE からの OpenStack Networking の DHCP 要求には、ipxe という DHCP タグを用意して、クライアントが boot.ipxe スクリプトを取得するために HTTP 操作を実行する必要があることを DHCP サーバーに知らせる必要があります。そのためには、OpenStack Networking DHCP Agent サービスで使用される dnsmasq 設定ファイルに dhcp-userclass エントリーを追加します。
オーバークラウドコントローラーで、DHCP エージェントが使用している
dnsmasqファイルを確認します。grep ^dnsmasq_config_file /etc/neutron/dhcp_agent.ini dnsmasq_config_file =/etc/neutron/dnsmasq-neutron.conf
# grep ^dnsmasq_config_file /etc/neutron/dhcp_agent.ini dnsmasq_config_file =/etc/neutron/dnsmasq-neutron.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow このファイルを編集して、ファイルの最後に以下の行を追加します。
# Create the "ipxe" tag if request comes from iPXE user class dhcp-userclass=set:ipxe,iPXE
# Create the "ipxe" tag if request comes from iPXE user class dhcp-userclass=set:ipxe,iPXECopy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルを保存して、OpenStack Networking DHCP エージェントサービスを再起動します。
systemctl restart neutron-dhcp-agent.service
# systemctl restart neutron-dhcp-agent.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. ベアメタルプロビジョニング用のコンピュートノードの設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、Bare Metal Provisioning サービスも実行しているコンピュートノードに のみ 適用されます。これらの手順は、コンピュートノードで root ユーザーとして実行する必要があります。
コンピュートノードに、Bare Metal Provisioning NIC (例: eth6 )がある。この手順の目的は次のとおりです。
-
Bare Metal Provisioning NIC (この例では
eth6)を Open vSwitch に接続するには、以下を入力します。 - この接続で IP アドレスをベアメタルサーバーとして割り当てるには、iPXE プロセスの一部としてベアメタルノードからブートイメージをプルダウンする必要があります。
eth6 の Open vSwitch への接続
「Bare Metal Provisioning サービス用コントローラーノードの設定」 のコントローラーノードと同様に、Bare Metal Provisioning サービスを実行しているコンピュートノード上の Open vSwitch 内のブリッジを作成します。
ovs-vsctl add-br br-ironic ovs-vsctl add-port br-ironic IRONIC_PROVISIONING_NIC
# ovs-vsctl add-br br-ironic # ovs-vsctl add-port br-ironic IRONIC_PROVISIONING_NICCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、
br-ironicはブリッジの名前であり、IRONIC_PROVISIONING NICはベアメタルプロビジョニングネットワーク(例:eth6)に接続された NIC です。注記この点と 「Bare Metal Provisioning サービス用コントローラーノードの設定」 の唯一の違いは、コンピュートノードで OpenStack Networking サービスを再起動しないことです。
これにより、Open vSwitch にブリッジおよびポートが追加され、
ovs-vsctl showコマンドを使用して確認できます。ただし、OpenStack で使用するために統合ブリッジ(br-int)に接続されません。接続を作成するには、以下のように OpenStack Networking プラグインファイルを更新する必要があります。
以下のように ML2 設定ファイル
/etc/neutron/plugins/ml2/ml2_conf.iniを更新します。-
type_driversパラメーターについては、ドライバー間でflatがリストされていることを確認します(例:type_drivers = vxlan,vlan,flat,gre)。これはコンマ区切りのリストです。 -
mechanism_driversパラメーターについては、mechanism_drivers =openvswitchなど、ドライバー間で openvswitch オプションが表示されていることを確認します。これはコンマ区切りのリストです。 -
flat_networksパラメーターについては、Bare Metal Provisioning ネットワークを参照する名前を作成します(例:ironicnet)。flat_networks=datacentre,ironicnet など、この名前が一覧表示されている flat_networksにリストされていることを確認します。これはコンマ区切りのリストです。 -
Bare Metal Provisioning ネットワークに VLAN を使用している場合は、
ironicnet:VLAN_START:VLAN_ENDの形式でnetwork_vlan_rangesパラメーターを追加します(例:network_vlan_ranges =datacentre:1:1000)。これはコンマ区切りのリストです。 -
enable_security_groupパラメーターはすでに有効になっているはずです。ただし、設定されていない場合は、値をTrueに変更します(例:enable_security_group = True)。
-
/etc/neutron/plugins/ml2/openvswitch_agent.iniファイルでbridge_mappingsパラメーターを見つけ、以下のように更新します。bridge_mappings =datacentre:br-ex,ironicnet:br-ironic
bridge_mappings =datacentre:br-ex,ironicnet:br-ironicCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコンマ区切りのキーと値のペアの値は、Bare Metal Provisioning ネットワークの名前を、ネットワークに接続されている物理デバイスにマッピングします。
OpenStack Networking Open vSwitch Agent サービスを再起動します。
systemctl restart neutron-openvswitch-agent.service
# systemctl restart neutron-openvswitch-agent.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
これで、この手順で最初の目標を達成しました。次に、br-ironic ブリッジに IP アドレスを割り当て、再起動後も維持する必要があります。
ベアメタルサーバーへの IP アドレスの割り当て
/etc/sysconfig/network-scriptsの場所に標準の設定ファイルを作成します。テナントネットワークですでに利用可能なifcfg*ファイルをコピーして、device、ipaddr、ovs_bridge、ブリッジ名、br-ironicおよびeth6のMACアドレス の値を編集します。新しいファイルの更新が完了したら、以下の値が必要になります。ifcfg-br-ironicCopy to Clipboard Copied! Toggle word wrap Toggle overflow ifcfg-eth6Copy to Clipboard Copied! Toggle word wrap Toggle overflow ネットワークブリッジを再起動して、IP アドレスの ping を可能にします。
ifup br-ironic
# ifup br-ironicCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ネットワークサービスの再起動時にノードから切断された場合は、サーバーを再起動します。
1.4.1. 必要なチャンネルのサブスクライブ リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Provisioning パッケージをインストールするには、サーバーを Red Hat Subscription Manager に登録し、必要なチャンネルをサブスクライブする必要があります。コンピュートノードに Bare Metal Provisioning をインストールする場合は、サーバーがすでに適切にサブスクライブされている可能性があります。yum repolist を実行して、以下の手順のチャンネルが有効になっているかどうかを確認します。
必要なチャネルのサブスクライブ
コンテンツ配信ネットワークにシステムを登録します。プロンプトが表示されたら、カスタマーポータルのユーザー名とパスワードを入力します。
subscription-manager register
# subscription-manager registerCopy to Clipboard Copied! Toggle word wrap Toggle overflow Bare Metal Provisioning のインストールに必要なチャネルが含まれるエンタイトルメントプールを見つけます。
subscription-manager list --available | grep -A13 "Red Hat Enterprise Linux Server" subscription-manager list --available | grep -A13 "Red Hat OpenStack Platform"
# subscription-manager list --available | grep -A13 "Red Hat Enterprise Linux Server" # subscription-manager list --available | grep -A13 "Red Hat OpenStack Platform"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 先の手順で特定したプール ID を使用して、Red Hat Enterprise Linux 7 Server および Red Hat OpenStack Platform のエンタイトルメントをアタッチします。
subscription-manager attach --pool=POOL_ID
# subscription-manager attach --pool=POOL_IDCopy to Clipboard Copied! Toggle word wrap Toggle overflow 必要なチャンネルを有効にします。
subscription-manager repos --enable=rhel-7-server-rpms \ --enable=rhel-7-server-openstack-8-rpms \ --enable=rhel-7-server-rh-common-rpms --enable=rhel-7-server-optional-rpms \ --enable=rhel-7-server-openstack-8-optools-rpms
# subscription-manager repos --enable=rhel-7-server-rpms \ --enable=rhel-7-server-openstack-8-rpms \ --enable=rhel-7-server-rh-common-rpms --enable=rhel-7-server-optional-rpms \ --enable=rhel-7-server-openstack-8-optools-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.2. Bare Metal Provisioning パッケージのインストール リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Provisioning には、以下のパッケージが必要です。
openstack-ironic-api
Bare Metal Provisioning API サービスを提供します。
openstack-ironic-conductor
Bare Metal Provisioning コンダクターサービスを提供します。コンダクターを使用すると、ノードの追加、編集、および削除、IPMI または SSH を使用したノードの電源オフ、およびベアメタルノードのプロビジョニング、使用解除が可能です。
python-ironicclient
Bare Metal Provisioning サービスと対話するためのコマンドラインインターフェイスを提供します。
パッケージをインストールします。
yum install openstack-ironic-api openstack-ironic-conductor python-ironicclient ipxe-bootimgs
# yum install openstack-ironic-api openstack-ironic-conductor python-ironicclient ipxe-bootimgs
1.4.3. iPXE の設定 リンクのコピーリンクがクリップボードにコピーされました!
iPXE に必要なディレクトリーを作成し、map-files を作成し、
undionly.kpxeブートイメージ、iPXE およびmap-fileを所定の場所にコピーします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、director によってデプロイされたコンピュートノードは SELinux を
Enforcingモードで実行します。iPXE ブートの試行時にパーミッションエラーを取得しないようにするには、これらのディレクトリーに適切なラベルを設定してください。これらのラベルを適用するには、rootユーザーとして以下のコマンドを実行します。semanage fcontext -a -t httpd_sys_content_t "/httpboot(/.*)?" restorecon -Rv /httpboot semanage fcontext -a -t tftpdir_t "/tftpboot(/.*)?" restorecon -Rv /tftpboot
# semanage fcontext -a -t httpd_sys_content_t "/httpboot(/.*)?" # restorecon -Rv /httpboot # semanage fcontext -a -t tftpdir_t "/tftpboot(/.*)?" # restorecon -Rv /tftpbootCopy to Clipboard Copied! Toggle word wrap Toggle overflow イメージの要求に対応できるように HTTP を設定します。
httpdパッケージはすでにインストールされているため、適切な仮想ホストエントリーを作成してサービスを開始することが重要です。注記/etc/httpd/conf.dには多数のファイルが含まれています。Red Hat はすべてのノードに単一のオーバークラウドフルイメージを活用するため、コントローラーノード上でのみ使用される場合でも、すべてのノードにこれらのファイルが含まれます。/etc/httpd/conf.dの内容を削除したり、使用されていないため、他の場所にコピーすることもできます。iPXE 設定用の新規ファイルを作成します。このファイルには任意の名前を付けることができ、それが
.conf形式であり、以下の内容が含まれることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記の仮想ホスト設定は、ポート 8088 のすべてのアドレスに HTTPD を、そのポートへのすべてのリクエストのドキュメント root を
/httpbootに移動するように設定します。このファイルを保存し、コンピュートノードで HTTPD サービスを有効化して再起動します。
systemctl enable httpd.service systemctl start httpd.service
# systemctl enable httpd.service # systemctl start httpd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.4. Bare Metal Provisioning サービスの設定 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、/etc/ironic/ironic.conf ファイルに必要な変更を加えます。
1.4.4.1. データベースサーバーと通信するためのベアメタルプロビジョニングの設定 リンクのコピーリンクがクリップボードにコピーされました!
接続設定キーの値を設定します。
openstack-config --set /etc/ironic/ironic.conf \ database connection mysql+pymysql://ironic:PASSWORD@IP/ironic
# openstack-config --set /etc/ironic/ironic.conf \
database connection mysql+pymysql://ironic:PASSWORD@IP/ironic
ここでの PASSWORD は、データベースサーバーのパスワード、IP はデータベースサーバーの IP アドレスまたはホスト名です。
接続設定キーで指定した IP アドレスまたはホスト名は、「ベアメタルプロビジョニングデータベースの作成」 での Bare Metal Provisioning データベースの作成時に、Bare Metal Provisioning データベースユーザーが付与された IP アドレスまたはホスト名と一致する必要があります。さらに、データベースがローカルでホストされ、データベースの作成時にローカルホストへのパーミッションが付与されている場合は、 を入力する必要があります。
localhost
1.4.4.2. ベアメタルプロビジョニング認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
認証に ID を使用するように Bare Metal Provisioning を設定します。この手順のすべてのステップは、root ユーザーとしてログインしている間、Bare Metal Provisioning をホストするサーバーで実行する必要があります。
Identity 経由で認証するためのベアメタルプロビジョニングの設定
Bare Metal Provisioning が使用する必要のある Identity パブリックおよび admin エンドポイントを設定します。
openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken auth_uri http://IP:5000/v2.0 openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken identity_uri http://IP:35357/
# openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken auth_uri http://IP:5000/v2.0 # openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken identity_uri http://IP:35357/Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP を、Identity サーバーの IP アドレスまたはホスト名に置き換えます。
サービス テナントとして認証するように Bare Metal Provisioning を設定します。
openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken admin_tenant_name service
# openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken admin_tenant_name serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow ironic 管理ユーザーアカウントを使用して認証するように、Bare Metal Provisioning を設定します。
openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken admin_user ironic
# openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken admin_user ironicCopy to Clipboard Copied! Toggle word wrap Toggle overflow 正しい ironic 管理ユーザーアカウントパスワードを使用するように、Bare Metal Provisioning を設定します。
openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken admin_password PASSWORD
# openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken admin_password PASSWORDCopy to Clipboard Copied! Toggle word wrap Toggle overflow PASSWORD は、ironic ユーザーの作成時に設定されたパスワードに置き換えます。
1.4.4.3. ベアメタルプロビジョニング用の RabbitMQ メッセージブローカー設定の設定 リンクのコピーリンクがクリップボードにコピーされました!
RabbitMQ はデフォルトの(および推奨される)メッセージブローカーです。RabbitMQ メッセージングサービスは、rabbitmq-server パッケージによって提供されます。以下の手順はすべて、Bare Metal Provisioning をホストするコントローラーノードまたはコンピュートノード上で、root ユーザーとしてログインしている必要があります。
この手順では、RabbitMQ メッセージングサービスがインストールおよび設定済みで、メッセージングサービスをホストするサーバーに ironic ユーザーと関連するパスワードが作成されていることを前提としています。
RabbitMQ メッセージブローカーを使用するためのベアメタルプロビジョニングの設定
RabbitMQ を RPC バックエンドとして設定します。
openstack-config --set /etc/ironic/ironic.conf \ DEFAULT rpc_backend ironic.openstack.common.rpc.impl_kombu
# openstack-config --set /etc/ironic/ironic.conf \ DEFAULT rpc_backend ironic.openstack.common.rpc.impl_kombuCopy to Clipboard Copied! Toggle word wrap Toggle overflow RabbitMQ ホストに接続するように、Bare Metal Provisioning を設定します。
openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_host RABBITMQ_HOST
# openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_host RABBITMQ_HOSTCopy to Clipboard Copied! Toggle word wrap Toggle overflow RABBITMQ_HOST を、メッセージブローカーをホストするサーバーの IP アドレスまたはホスト名に置き換えます。
メッセージブローカーポートを 5672 に設定します。
openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_port 5672
# openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_port 5672Copy to Clipboard Copied! Toggle word wrap Toggle overflow RabbitMQ が設定された際に Bare Metal Provisioning 用に作成された RabbitMQ のユーザー名およびパスワードを設定します。
openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_userid guest openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_password RABBIT_GUEST_PASSWORD
# openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_userid guest # openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_password RABBIT_GUEST_PASSWORDCopy to Clipboard Copied! Toggle word wrap Toggle overflow RABBIT_GUEST_PASSWORD をゲストユーザーの RabbitMQ パスワードに置き換えます。
RabbitMQ の起動時に、ゲスト ユーザーには、全リソースに対する読み取りおよび書き込みパーミッションが付与されました(特に仮想ホストを介して)。この仮想ホストに接続するように Bare Metal Provisioning を設定します。
openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_virtual_host /
# openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_virtual_host /Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.4.4. Bare Metal Provisioning ドライバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Provisioning は、ベアメタルサーバーのデプロイと管理を行うための複数のドライバーをサポートします。一部のドライバーには、ハードウェア要件があり、追加の設定またはパッケージのインストールが必要です。詳細なドライバー情報は、付録A Bare Metal Provisioning のドライバー を参照してください。ドライバーの名前の最初の半分は、そのデプロイメント方法(PXE など)を指定し、2 つ目は電源管理方法(例:IPMI)を指定します。
Bare Metal Provisioning ドライバーの設定
ベアメタルサーバーのプロビジョニングに使用するドライバーを指定します。コンマ区切りリストを使用して、複数のドライバーを指定します。
openstack-config --set /etc/ironic/ironic.conf \ DEFAULT enabled_drivers DRIVER1,DRIVER2
# openstack-config --set /etc/ironic/ironic.conf \ DEFAULT enabled_drivers DRIVER1,DRIVER2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のドライバーがサポートされます。
PXE デプロイを伴う IPMI
-
pxe_ipmitool
-
PXE デプロイによる DRAC
-
pxe_drac
-
PXE デプロイを伴う iLO
-
pxe_ilo
-
PXE デプロイを伴う SSH
-
pxe_ssh
-
PXE を使用した iRMC
-
pxe_irmc
-
Bare Metal Conductor サービスを再起動します。
systemctl restart openstack-ironic-conductor.service
# systemctl restart openstack-ironic-conductor.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.4.5. PXE を使用するように Bare Metal Provisioning サービスを設定する リンクのコピーリンクがクリップボードにコピーされました!
PXE テンプレートを使用するように Bare Metal Provisioning サービスを設定します。
openstack-config --set /etc/ironic/ironic.conf \ pxe pxe_config_template \$pybasedir/drivers/modules/ipxe_config.template
# openstack-config --set /etc/ironic/ironic.conf \ pxe pxe_config_template \$pybasedir/drivers/modules/ipxe_config.templateCopy to Clipboard Copied! Toggle word wrap Toggle overflow tftp_serverを使用するように Bare Metal Provisioning サービスを設定します。openstack-config --set /etc/ironic/ironic.conf \ pxe tftp_server BARE_METAL_PROVISIONING_NETWORK_IP
# openstack-config --set /etc/ironic/ironic.conf \ pxe tftp_server BARE_METAL_PROVISIONING_NETWORK_IPCopy to Clipboard Copied! Toggle word wrap Toggle overflow PXE
tftp_rootを設定します。openstack-config --set /etc/ironic/ironic.conf \ pxe tftp_root /tftpboot
# openstack-config --set /etc/ironic/ironic.conf \ pxe tftp_root /tftpbootCopy to Clipboard Copied! Toggle word wrap Toggle overflow PXE ブートファイル名を設定します。
openstack-config --set /etc/ironic/ironic.conf \ pxe pxe_bootfile_name undionly.kpxe
# openstack-config --set /etc/ironic/ironic.conf \ pxe pxe_bootfile_name undionly.kpxeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Bare Metal Provisioning サービスが iPXE を使用できるようにします。
openstack-config --set /etc/ironic/ironic.conf \ pxe ipxe_enabled true
# openstack-config --set /etc/ironic/ironic.conf \ pxe ipxe_enabled trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow httpサーバーの URL を設定します。openstack-config --set /etc/ironic/ironic.conf deploy http_url http://BARE_METAL_PROVISIONING_IP:8088
# openstack-config --set /etc/ironic/ironic.conf deploy http_url http://BARE_METAL_PROVISIONING_IP:8088Copy to Clipboard Copied! Toggle word wrap Toggle overflow Bare Metal Conductor サービスを再起動します。
systemctl restart openstack-ironic-conductor.service
# systemctl restart openstack-ironic-conductor.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.4.6. OpenStack Networking と OpenStack イメージと通信するための Bare Metal Provisioning の設定 リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Provisioning は、DHCP とネットワーク設定に OpenStack Networking を使用し、Image サービスを使用して物理マシンの起動に使用するイメージを管理します。OpenStack Networking および Image サービスに接続し、通信するように Bare Metal Provisioning を設定します。この手順のすべての手順は、root ユーザーとしてログインしている間に Bare Metal Provisioning をホストするサーバーで実行する必要があります。
OpenStack Networking と OpenStack イメージと通信するための Bare Metal Provisioning の設定
OpenStack Networking エンドポイントを使用するように Bare Metal Provisioning を設定します。
openstack-config --set /etc/ironic/ironic.conf \ neutron url http://NEUTRON_IP:9696
# openstack-config --set /etc/ironic/ironic.conf \ neutron url http://NEUTRON_IP:9696Copy to Clipboard Copied! Toggle word wrap Toggle overflow NEUTRON_IP は、OpenStack Networking をホストしているサーバーの IP アドレスまたはホスト名に置き換えます。
Image サービスと通信するように Bare Metal Provisioning を設定します。
openstack-config --set /etc/ironic/ironic.conf \ glance glance_host GLANCE_IP
# openstack-config --set /etc/ironic/ironic.conf \ glance glance_host GLANCE_IPCopy to Clipboard Copied! Toggle word wrap Toggle overflow GLANCE_IP は、Image サービスをホストしているサーバーの IP アドレスまたはホスト名に置き換えます。
Bare Metal Provisioning API サービスを起動し、ブート時に開始するように設定します。
systemctl start openstack-ironic-api.service systemctl enable openstack-ironic-api.service
# systemctl start openstack-ironic-api.service # systemctl enable openstack-ironic-api.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Bare Metal Provisioning データベーステーブルを作成します。
ironic-dbsync --config-file /etc/ironic/ironic.conf create_schema
# ironic-dbsync --config-file /etc/ironic/ironic.conf create_schemaCopy to Clipboard Copied! Toggle word wrap Toggle overflow Bare Metal Provisioning コンダクターサービスを起動し、ブート時に開始するように設定します。
systemctl restart openstack-ironic-conductor.service systemctl enable openstack-ironic-conductor.service
# systemctl restart openstack-ironic-conductor.service # systemctl enable openstack-ironic-conductor.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.5. Bare Metal Provisioning サービスを使用するための OpenStack Compute の設定 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、/etc/nova/nova.conf ファイルを更新して、Compute サービスが Bare Metal Provisioning サービスを使用するように設定します。
Bare Metal Provisioning を使用するための OpenStack Compute の設定
クラスター化されたコンピュートマネージャーを使用するように Compute を設定します。
openstack-config --set /etc/nova/nova.conf \ DEFAULT compute_manager ironic.nova.compute.manager.ClusteredComputeManager
# openstack-config --set /etc/nova/nova.conf \ DEFAULT compute_manager ironic.nova.compute.manager.ClusteredComputeManagerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想 RAM を物理 RAM の割り当て比率に設定します。
openstack-config --set /etc/nova/nova.conf \ DEFAULT ram_allocation_ratio 1.0
# openstack-config --set /etc/nova/nova.conf \ DEFAULT ram_allocation_ratio 1.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow ホスト用に予約するディスク容量を MB 単位で設定します。
openstack-config --set /etc/nova/nova.conf \ DEFAULT reserved_host_memory_mb 0
# openstack-config --set /etc/nova/nova.conf \ DEFAULT reserved_host_memory_mb 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow Bare Metal Provisioning ドライバーを使用するように Compute を設定します。
openstack-config --set /etc/nova/nova.conf \ DEFAULT compute_driver nova.virt.ironic.IronicDriver
# openstack-config --set /etc/nova/nova.conf \ DEFAULT compute_driver nova.virt.ironic.IronicDriverCopy to Clipboard Copied! Toggle word wrap Toggle overflow Bare Metal Provisioning に正しい認証情報を使用するように Compute を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えます。
- PASSWORD を、Bare Metal Provisioning が Identity での認証に使用するパスワードに置き換えます。
- IDENTITY_IP は、ID をホストするサーバーの IP アドレスまたはホスト名に置き換えます。
- IRONIC_API_IP は、Bare Metal Provisioning API サービスをホストするサーバーの IP アドレスまたはホスト名に置き換えます。
コンピュートコントローラーノードで Compute スケジューラーサービスを再起動します。
systemctl restart openstack-nova-scheduler.service
# systemctl restart openstack-nova-scheduler.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow コンピュートノードでコンピュートサービスを再起動します。
systemctl restart openstack-nova-compute.service
# systemctl restart openstack-nova-compute.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第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 はデプロイ後のマシンのホスト名に置き換えます。
2.2. ハードウェアイントロスペクションの設定 リンクのコピーリンクがクリップボードにコピーされました!
ハードウェアイントロスペクションにより、Bare Metal Provisioning はノード上のハードウェア情報を検出できます。イントロスペクションにより、検出されたイーサネット MAC アドレス用のポートも作成されます。または、各ノードにハードウェアの詳細を手動で追加することができます。詳細は、「ノードを手動で追加する」 を参照してください。以下の手順は、すべて root ユーザーとしてログインし、Bare Metal Provisioning コンダクターサービスをホストするサーバーで実行する必要があります。
ハードウェアイントロスペクションは、次のドライバーを使用した帯域内でサポートされています。
-
pxe_drac -
pxe_ipmitool -
pxe_ssh
ハードウェアイントロスペクションの設定
- PXE ブートでのベアメタルシステム検出に使用する Ironic Python Agent カーネルおよび ramdisk イメージを取得します。これらのイメージは、RHOSP director 8.0 用の Ironic Python Agent Image の TAR アーカイブ https://access.redhat.com/downloads/content/191/ver=8/rhel---7/8/x86_64/product-software で利用できます。TAR アーカイブをダウンロードし、そこからイメージファイル(ironic-python-agent.kernel および ironic-python-agent.initramfs)を抽出し、それらを TFTP サーバーの /tftpboot ディレクトリーにコピーします。
ハードウェアイントロスペクションサービスをホストするサーバーで、Red Hat OpenStack Platform 8 director for RHEL 7 (RPMs) チャンネルを有効にします。
subscription-manager repos --enable=rhel-7-server-openstack-8-director-rpms
# subscription-manager repos --enable=rhel-7-server-openstack-8-director-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow openstack-ironic-inspector パッケージをインストールします。
yum install openstack-ironic-inspector
# yum install openstack-ironic-inspectorCopy to Clipboard Copied! Toggle word wrap Toggle overflow ironic.conf ファイルでイントロスペクションを有効にします。
openstack-config --set /etc/ironic/ironic.conf \ inspector enabled True
# openstack-config --set /etc/ironic/ironic.conf \ inspector enabled TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow ハードウェアイントロスペクションサービスが別のサーバーにホストされている場合は、conductor サービスをホストするサーバーにその URL を設定します。
openstack-config --set /etc/ironic/ironic.conf \ inspector service_url http://INSPECTOR_IP:5050
# openstack-config --set /etc/ironic/ironic.conf \ inspector service_url http://INSPECTOR_IP:5050Copy to Clipboard Copied! Toggle word wrap Toggle overflow INSPECTOR_IP は、ハードウェアイントロスペクションサービスをホストしているサーバーの IP アドレスまたはホスト名に置き換えます。
ハードウェアイントロスペクションサービスに認証情報を指定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えます。
- IDENTITY_IP は、Identity サーバーの IP アドレスまたはホスト名に置き換えます。
- PASSWORD を、Bare Metal Provisioning が Identity での認証に使用するパスワードに置き換えます。
必要に応じて、ハードウェアイントロスペクションサービスを設定して、ramdisk のログを保存します。
openstack-config --set /etc/ironic-inspector/inspector.conf \ processing ramdisk_logs_dir /var/log/ironic-inspector/ramdisk
# openstack-config --set /etc/ironic-inspector/inspector.conf \ processing ramdisk_logs_dir /var/log/ironic-inspector/ramdiskCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプションで、複数のローカルディスクを持つベアメタルマシン上のブロックデバイスを収集し、ルートデバイスを公開する追加のデータ処理プラグインを有効にします。
ramdisk_error、root_disk_selection、scheduler、およびvalidate_interfacesはデフォルトで有効になっています。無効にしないでください。以下のコマンドは、root_device_hintを一覧に追加します。openstack-config --set /etc/ironic-inspector/inspector.conf \ processing processing_hooks '$default_processing_hooks,root_device_hint'
# openstack-config --set /etc/ironic-inspector/inspector.conf \ processing processing_hooks '$default_processing_hooks,root_device_hint'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最初の
ironic インスペクターデータベースを生成します。ironic-inspector-dbsync --config-file /etc/ironic-inspector/inspector.conf upgrade
# ironic-inspector-dbsync --config-file /etc/ironic-inspector/inspector.conf upgradeCopy to Clipboard Copied! Toggle word wrap Toggle overflow ironic-inspector によって所有されるようにインスペクターデータベースファイルを更新します。
chown ironic-inspector /var/lib/ironic-inspector/inspector.sqlite
# chown ironic-inspector /var/lib/ironic-inspector/inspector.sqliteCopy to Clipboard Copied! Toggle word wrap Toggle overflow テキストエディターで /etc/ironic-inspector/dnsmasq.conf ファイルを開き、openstack-ironic-inspector-dnsmasq サービス用に以下の PXE ブートを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えます。
- INTERFACE は、ベアメタルプロビジョニングネットワークインターフェイスの名前に置き換えます。
- START_IP は、Floating IP アドレスが割り当てられる IP アドレスの範囲の開始を示す IP アドレスに置き換えます。
- END_IP は、Floating IP アドレスが割り当てられる IP アドレスの範囲の終了を示す IP アドレスに置き換えます。
syslinux ブートローダーをtftpディレクトリーにコピーします。cp /usr/share/syslinux/pxelinux.0 /tftpboot/pxelinux.0
# cp /usr/share/syslinux/pxelinux.0 /tftpboot/pxelinux.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプションとして、
/etc/ironic-inspector/inspector.confファイルの swift セクションにメタデータを保存するように、ハードウェアイントロスペクションサービスを設定することができます。[swift] username = ironic password = PASSWORD tenant_name = service os_auth_url = http://IDENTITY_IP:5000/v2.0
[swift] username = ironic password = PASSWORD tenant_name = service os_auth_url = http://IDENTITY_IP:5000/v2.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えます。
- IDENTITY_IP は、Identity サーバーの IP アドレスまたはホスト名に置き換えます。
- PASSWORD を、Bare Metal Provisioning が Identity での認証に使用するパスワードに置き換えます。
テキストエディターで /tftpboot/pxelinux.cfg/default ファイルを開き、以下のオプションを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow INSPECTOR_IP は、ハードウェアイントロスペクションサービスをホストしているサーバーの IP アドレスまたはホスト名に置き換えます。上記のブロックの
\で示されているように、add から/continueのテキストは、1 行ずつ指定する必要があります。/tftpboot/ ディレクトリーとそのファイルのセキュリティーコンテキストをリセットします。
restorecon -R /tftpboot/
# restorecon -R /tftpboot/Copy to Clipboard Copied! Toggle word wrap Toggle overflow この手順により、ディレクトリーに正しい SELinux セキュリティーラベルがあり、dnsmasq サービスがディレクトリーにアクセスできるようにします。
ハードウェアイントロスペクションサービスと dnsmasq サービスを開始し、ブート時に開始するように設定します。
systemctl start openstack-ironic-inspector.service systemctl enable openstack-ironic-inspector.service systemctl start openstack-ironic-inspector-dnsmasq.service systemctl enable openstack-ironic-inspector-dnsmasq.service
# systemctl start openstack-ironic-inspector.service # systemctl enable openstack-ironic-inspector.service # systemctl start openstack-ironic-inspector-dnsmasq.service # systemctl enable openstack-ironic-inspector-dnsmasq.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow ハードウェアイントロスペクションは、Bare Metal Provisioning に登録した後にノードで使用できます。
2.3. 物理マシンをベアメタルノードとして追加する リンクのコピーリンクがクリップボードにコピーされました!
インスタンスをプロビジョニングする物理マシンをノードとして追加し、Compute が利用可能なハードウェアを表示できることを確認します。Compute のリソーストラッカーは定期的に同期するため、コンピュートは新規リソースをすぐに通知しません。次の定期タスクが実行されると、変更が認識されるようになります。この値 scheduler_driver_task_period は、/etc/nova/nova.conf で更新することができます。デフォルトの間隔は 60 秒です。
システムがベアメタルノードとして登録されると、ハードウェアのイントロスペクションを使用してハードウェア情報を検出するか、手動で追加できます。
2.3.1. ハードウェアイントロスペクションを使用したノードの追加 リンクのコピーリンクがクリップボードにコピーされました!
物理マシンをベアメタルノードとして登録してから、openstack-ironic-inspector を使用してノードのハードウェアの詳細を検出し、各イーサネット MAC アドレスのポートを作成します。以下の手順は、すべて root ユーザーとしてログインし、Bare Metal Provisioning コンダクターサービスをホストするサーバーで実行する必要があります。
ハードウェアイントロスペクションを使用したノードの追加
Identity を管理ユーザーとして使用するためのシェルを設定します。
source ~/keystonerc_admin
# source ~/keystonerc_adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいノードを追加します。
ironic node-create -d DRIVER_NAME
# ironic node-create -d DRIVER_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow DRIVER_NAME は、Bare Metal Provisioning がこのノードのプロビジョニングに使用するドライバーの名前に置き換えます。/etc/ironic/ironic.conf ファイルで、このドライバーを有効にする必要があります。ノードを作成するには、少なくともドライバー名を指定する必要があります。
重要ノードの一意識別子を書き留めておきます。
ノードを論理名または UUID で参照できます。オプションで、論理名をノードに割り当てます。
ironic node-update NODE_UUID add name=NAME
# ironic node-update NODE_UUID add name=NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow NODE_UUID は、ノードの一意識別子に置き換えます。NAME は、ノードの論理名に置き換えます。
ドライバーが必要とするノード情報を確認してから、ノードドライバーの情報を更新して、Bare Metal Provisioning がノードを管理できるようにします。
ironic driver-properties DRIVER_NAME ironic node-update NODE_UUID add \ driver_info/PROPERTY=VALUE \ driver_info/PROPERTY=VALUE
# ironic driver-properties DRIVER_NAME # ironic node-update NODE_UUID add \ driver_info/PROPERTY=VALUE \ driver_info/PROPERTY=VALUECopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えます。
- DRIVER_NAME を、プロパティーを表示するドライバーの名前に置き換えます。/etc/ironic/ironic.conf ファイルでドライバーが有効でない限り、この情報は返されません。
- NODE_UUID は、ノードの一意識別子に置き換えます。もしくは、ノードの論理名を使用します。
- PROPERTY は、ironic driver-properties コマンドで返された必要なプロパティーに置き換えます。
- VALUE は、プロパティーの有効な値に置き換えます。
ノードドライバーのデプロイカーネルとデプロイ ramdisk を指定します。
ironic node-update NODE_UUID add \ driver_info/deploy_kernel=KERNEL_UUID \ driver_info/deploy_ramdisk=INITRAMFS_UUID
# ironic node-update NODE_UUID add \ driver_info/deploy_kernel=KERNEL_UUID \ driver_info/deploy_ramdisk=INITRAMFS_UUIDCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えてください。
- NODE_UUID は、ノードの一意識別子に置き換えます。もしくは、ノードの論理名を使用します。
- KERNEL_UUID は、Image サービスにアップロードされた .kernel イメージの一意識別子に置き換えます。
- INITRAMFS_UUID は、Image サービスにアップロードされた .initramfs イメージの一意識別子に置き換えます。
PXE または仮想メディア経由ではなく、ノードのディスクにインストールされたローカルのブートローダーから初回のデプロイ後にリブートするようにノードを設定します。ノードのプロビジョニングに使用するフレーバーでも、ローカルブートの機能を設定する必要があります。ローカルブートを有効にするには、ノードのデプロイに使用するイメージに grub2 が含まれている必要があります。ローカルブートを以下のように設定します。
ironic node-update NODE_UUID add \ properties/capabilities="boot_option:local"
# ironic node-update NODE_UUID add \ properties/capabilities="boot_option:local"Copy to Clipboard Copied! Toggle word wrap Toggle overflow NODE_UUID は、ノードの一意識別子に置き換えます。もしくは、ノードの論理名を使用します。
ベアメタルノードを
manageable状態に移行します。ironic node-set-provision-state NODE_UUID manage
# ironic node-set-provision-state NODE_UUID manageCopy to Clipboard Copied! Toggle word wrap Toggle overflow NODE_UUID は、ノードの一意識別子に置き換えます。もしくは、ノードの論理名を使用します。
イントロスペクションを開始します。
openstack baremetal introspection start NODE_UUID --discoverd-url http://overcloud IP:5050
# openstack baremetal introspection start NODE_UUID --discoverd-url http://overcloud IP:5050Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
NODE_UUID は、ノードの一意識別子に置き換えます。もしくは、ノードの論理名を使用します。ノードをプロビジョニングする前に、ノードの検出およびイントロスペクションのプロセスが完了するまで実行する必要があります。ノードのイントロスペクションのステータスを確認するには、ironic node-list を実行し、
Provision Stateを探します。イントロスペクションが成功した後、ノードはavailableの状態になります。 -
overcloud IP を、ironic.conf で以前に設定した
service_url値に置き換えます。
-
NODE_UUID は、ノードの一意識別子に置き換えます。もしくは、ノードの論理名を使用します。ノードをプロビジョニングする前に、ノードの検出およびイントロスペクションのプロセスが完了するまで実行する必要があります。ノードのイントロスペクションのステータスを確認するには、ironic node-list を実行し、
ノードの設定を検証します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NODE_UUID は、ノードの一意識別子に置き換えます。もしくは、ノードの論理名を使用します。上記のコマンドの出力には、各インターフェイスが
TrueまたはNoneのいずれかと報告されるはずです。Noneとマークされたインターフェイスは、設定していないか、ドライバーがサポートしていないインターフェイスです。
2.3.2. ノードを手動で追加する リンクのコピーリンクがクリップボードにコピーされました!
物理マシンをベアメタルノードとして登録してから、手動でハードウェア情報を追加し、各イーサネットの MAC アドレス用にポートを作成します。以下の手順は、すべて root ユーザーとしてログインし、Bare Metal Provisioning コンダクターサービスをホストするサーバーで実行する必要があります。
ハードウェアイントロスペクションなしでノードを追加する
Identity を管理ユーザーとして使用するためのシェルを設定します。
source ~/keystonerc_admin
# source ~/keystonerc_adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいノードを追加します。
ironic node-create -d DRIVER_NAME
# ironic node-create -d DRIVER_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow DRIVER_NAME は、Bare Metal Provisioning がこのノードのプロビジョニングに使用するドライバーの名前に置き換えます。/etc/ironic/ironic.conf ファイルで、このドライバーを有効にする必要があります。ノードを作成するには、少なくともドライバー名を指定する必要があります。
重要ノードの一意識別子を書き留めておきます。
ノードを論理名または UUID で参照できます。オプションで、論理名をノードに割り当てます。
ironic node-update NODE_UUID add name=NAME
# ironic node-update NODE_UUID add name=NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow NODE_UUID は、ノードの一意識別子に置き換えます。NAME は、ノードの論理名に置き換えます。
ドライバーが必要とするノード情報を確認してから、ノードドライバーの情報を更新して、Bare Metal Provisioning がノードを管理できるようにします。
ironic driver-properties DRIVER_NAME ironic node-update NODE_UUID add \ driver_info/PROPERTY=VALUE \ driver_info/PROPERTY=VALUE
# ironic driver-properties DRIVER_NAME # ironic node-update NODE_UUID add \ driver_info/PROPERTY=VALUE \ driver_info/PROPERTY=VALUECopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えます。
- DRIVER_NAME を、プロパティーを表示するドライバーの名前に置き換えます。/etc/ironic/ironic.conf ファイルでドライバーが有効でない限り、この情報は返されません。
- NODE_UUID は、ノードの一意識別子に置き換えます。もしくは、ノードの論理名を使用します。
- PROPERTY は、ironic driver-properties コマンドで返された必要なプロパティーに置き換えます。
- VALUE は、プロパティーの有効な値に置き換えます。
ノードドライバーのデプロイカーネルとデプロイ ramdisk を指定します。
ironic node-update NODE_UUID add \ driver_info/deploy_kernel=KERNEL_UUID \ driver_info/deploy_ramdisk=INITRAMFS_UUID
# ironic node-update NODE_UUID add \ driver_info/deploy_kernel=KERNEL_UUID \ driver_info/deploy_ramdisk=INITRAMFS_UUIDCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えてください。
- NODE_UUID は、ノードの一意識別子に置き換えます。もしくは、ノードの論理名を使用します。
- KERNEL_UUID は、Image サービスにアップロードされた .kernel イメージの一意識別子に置き換えます。
- INITRAMFS_UUID は、Image サービスにアップロードされた .initramfs イメージの一意識別子に置き換えます。
ノードのプロパティーを更新して、ノード上のハードウェアの仕様と一致するようにします。
ironic node-update NODE_UUID add \ properties/cpus=CPU \ properties/memory_mb=RAM_MB \ properties/local_gb=DISK_GB \ properties/cpu_arch=ARCH
# ironic node-update NODE_UUID add \ properties/cpus=CPU \ properties/memory_mb=RAM_MB \ properties/local_gb=DISK_GB \ properties/cpu_arch=ARCHCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えてください。
- NODE_UUID は、ノードの一意識別子に置き換えます。もしくは、ノードの論理名を使用します。
- CPU は、使用する CPU の数に置き換えます。
- RAM_MB を使用する RAM (MB 単位)に置き換えます。
- DISK_GB は、使用するディスクサイズ(GB 単位)に置き換えます。
- ARCH は、使用するアーキテクチャータイプに置き換えます。
PXE または仮想メディア経由ではなく、ノードのディスクにインストールされたローカルのブートローダーから初回のデプロイ後にリブートするようにノードを設定します。ノードのプロビジョニングに使用するフレーバーでも、ローカルブートの機能を設定する必要があります。ローカルブートを有効にするには、ノードのデプロイに使用するイメージに grub2 が含まれている必要があります。ローカルブートを以下のように設定します。
ironic node-update NODE_UUID add \ properties/capabilities="boot_option:local"
# ironic node-update NODE_UUID add \ properties/capabilities="boot_option:local"Copy to Clipboard Copied! Toggle word wrap Toggle overflow NODE_UUID は、ノードの一意識別子に置き換えます。もしくは、ノードの論理名を使用します。
ノード上のネットワークインターフェイスカードを Bare Metal Provisioning に通知します。各 NIC の MAC アドレスでポートを作成します。
ironic port-create -n NODE_UUID -a MAC_ADDRESS
# ironic port-create -n NODE_UUID -a MAC_ADDRESSCopy to Clipboard Copied! Toggle word wrap Toggle overflow NODE_UUID は、ノードの一意識別子に置き換えます。MAC_ADDRESS は、ノード上の NIC の MAC アドレスに置き換えます。
ノードの設定を検証します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NODE_UUID は、ノードの一意識別子に置き換えます。もしくは、ノードの論理名を使用します。上記のコマンドの出力には、各インターフェイスが
TrueまたはNoneのいずれかと報告されるはずです。Noneとマークされたインターフェイスは、設定していないか、ドライバーがサポートしていないインターフェイスです。
2.4. ホストアグリゲートを使用した物理マシンと仮想マシンのプロビジョニングの分離 リンクのコピーリンクがクリップボードにコピーされました!
ホストアグリゲートは、OpenStack Compute がアベイラビリティーゾーンを分割し、特定の共有属性を持つノードをグループ化するために使用します。キーと値のペアは、ホストアグリゲートおよびインスタンスフレーバーの両方に設定され、これらの属性を定義します。インスタンスがプロビジョニングされると、コンピュートのスケジューラーがフレーバーのキーと値のペアとホストアグリゲートに割り当てられたキーと値のペアを比較し、インスタンスが正しいアグリゲートで、正しいホストに(物理マシン上または openstack-nova-compute ノード上の仮想マシンとして)プロビジョニングされるようにします。
Red Hat OpenStack Platform 環境がベアメタルマシンと仮想マシンの両方をプロビジョニングするように設定されている場合には、ホストアグリゲートを使用してインスタンスを指示し、物理マシンまたは仮想マシンとして起動します。以下の手順では、ベアメタルホストのホストアグリゲートを作成し、ホストタイプが baremetal であることを指定するキーと値のペアを追加します。このアグリゲートにグループ化されたベアメタルノードは、このキーと値のペアを継承します。次に、インスタンスのプロビジョニングに使用するフレーバーに同じキーと値のペアが追加されます。
hypervisor_type=ironic プロパティーセットを使用して、ベアメタルマシンのプロビジョニングに使用するイメージまたはイメージが Image サービスにアップロードされている場合、スケジューラーはスケジューリングの決定でそのキーペアの値も使用します。イメージ属性が適用されない場合に効果的なスケジューリングを確保するには、イメージ属性の設定に加えて、ホストアグリゲートを設定します。イメージのビルドとアップロードの詳細は、「ベアメタルイメージの作成」 を参照してください。
ベアメタルプロビジョニングのホストアグリゲートの作成
デフォルトの
novaアベイラビリティーゾーンにbaremetalのホストアグリゲートを作成します。nova aggregate-create baremetal nova
# nova aggregate-create baremetal novaCopy to Clipboard Copied! Toggle word wrap Toggle overflow baremetalアグリゲートにメタデータを設定して、qemu_type=ironic プロパティーのアグリゲートに追加されたホストを割り当てます。nova aggregate-set-metadata baremetal hypervisor_type=ironic
# nova aggregate-set-metadata baremetal hypervisor_type=ironicCopy to Clipboard Copied! Toggle word wrap Toggle overflow Bare Metal Provisioning ドライバーが設定された openstack-nova-compute ノードを
baremetalアグリゲートに追加します。nova aggregate-add-host baremetal COMPUTE_HOSTNAME
# nova aggregate-add-host baremetal COMPUTE_HOSTNAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow COMPUTE_HOSTNAME は、openstack-nova-compute サービスをホストしているシステムのホスト名に置き換えます。すべての Bare Metal Provisioning 要求を処理するには、単一の専用コンピュートホストを使用する必要があります。
ベアメタルノードのプロビジョニング用に作成したフレーバーまたはフレーバーに、
ironicハイパーバイザー属性を追加します。nova flavor-key FLAVOR_NAME set hypervisor_type="ironic"
# nova flavor-key FLAVOR_NAME set hypervisor_type="ironic"Copy to Clipboard Copied! Toggle word wrap Toggle overflow FLAVOR_NAME をフレーバーの名前に置き換えます。
以下の Compute フィルタースケジューラーを /etc/nova/nova.conf の
scheduler_default_filtersセクションの既存リストに追加します。AggregateInstanceExtraSpecsFilter
AggregateInstanceExtraSpecsFilterCopy to Clipboard Copied! Toggle word wrap Toggle overflow このフィルターは、Compute スケジューラーがホストアグリゲートに割り当てられたキーと値のペアを処理するようになります。
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 つのインスタンスを起動します。
第3章 ベアメタルインスタンスの起動 リンクのコピーリンクがクリップボードにコピーされました!
登録済みのベアメタルノードで物理マシンをプロビジョニングします。インスタンスは、コマンドラインまたは OpenStack Dashboard から起動することができます。
3.1. コマンドラインインターフェイスを使用したインスタンスのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
nova コマンドラインインターフェイスを使用してベアメタルインスタンスをデプロイします。
コマンドライン上でのインスタンスのデプロイ
Identity に管理ユーザーとしてアクセスするためのシェルを設定します。
source ~/keystonerc_admin
# source ~/keystonerc_adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンスをデプロイします。
nova boot --nic net-id=NETWORK_UUID --flavor FLAVOR_NAME --image IMAGE_UUID INSTANCE_NAME
# nova boot --nic net-id=NETWORK_UUID --flavor FLAVOR_NAME --image IMAGE_UUID INSTANCE_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えます。
- NETWORK_UUID は、Bare Metal Provisioning で使用するために作成されたネットワークの一意識別子に置き換えます。
- FLAVOR_NAME をノード用に作成されたフレーバーの名前に置き換えます。
- IMAGE_UUID は、Image サービスにアップロードされたディスクイメージの一意識別子に置き換えます。
- INSTANCE_NAME は、ベアメタルインスタンスの名前に置き換えます。
インスタンスのステータスを確認します。
nova list
# nova listCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. Dashboard を使用したインスタンスのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Dashboard のグラフィカルユーザーインターフェイスを使用してベアメタルインスタンスをデプロイします。
Dashboard でのインスタンスのデプロイ
- https://DASHBOARD_IP/dashboard で Dashboard にログインします。
- プロジェクト > コンピュート > インスタンス の順にクリックします。
- インスタンスの起動 をクリックします。
Details タブで、以下のフィールドに入力します。
- インスタンス名 を 指定します。
- ベアメタルノード用に作成された Flavor を選択します。
-
Instance Count リストから
1を選択します。 - Instance Boot Source リストから Boot from image を選択します。
- Image Name リストからオペレーティングシステムディスクイメージを選択します。
- Networking タブで、必要なネットワークを Available Networks から Selected Networks にドラッグアンドドロップします。ここでは、必ず Bare Metal Provisioning 用に作成した共有ネットワークを選択してください。
- Launch をクリックします。
3.3. Whole Windows イメージの作成 リンクのコピーリンクがクリップボードにコピーされました!
この手順では、Windows Server 2012 の展開イメージを作成します。Red Hat Enterprise Linux システムで以下の手順を実行します。
virtio-win ドライバーをダウンロードします。必要な手順 については、Red Hat カスタマーポータル を参照してください。
これにより、virtio-win .iso ファイルが /usr/share/virtio-win/ にダウンロードされます。例: /usr/share/virtio-win/virtio-win-1.8.0.iso
virt-manager を使用して Windows Server 2012 テンプレート仮想マシンを作成します。
- Windows テンプレートの仮想ハードウェア要件を決定します。この例では、1 x CPU、4GB RAM、10GB HDD、2 x NIC、および 2 x 仮想 CD-ROM ドライブを使用します。
- qcow2 ファイルとしてディスクを作成します。
-
仮想 HDD ドライバーと NIC ドライバーの両方を
virtioに設定します。 - Windows Server 2012 R2 .iso ファイルにマウントされた 2x 仮想 CD-ROM ドライブと virtio-win-1.8.0.iso ファイルをアタッチします。Windows のインストールプロセス中に virtio-win ドライバーをインストールするには、2 つの仮想 CD-ROM が必要です。
ISO イメージから Windows を手動でインストールします。
- Windows Server 2012 R2 の評価版の .iso イメージから Windows のインストールを開始します。
- HDD ドライバーを選択する機会がある場合は、virtio-win-1.8.0.iso ファイルを含む 2 番目の仮想 CD-ROM からドライバーを選択します。
インストール後の Windows チェックを実行します。
デバイス マネージャーを 開き、すべてのデバイスが適切に認識され、疑問符 の警告が表示されていないことを確認します。特に、NIC、serial、および balloon ドライバーが VirtIO ドライバーを使用していることを確認します。デバイスが正しく認識されない場合は、virtio-win ドライバーディスクからドライバーを適用します。
sysprep を実行します。
Sysprep により、Windows インストールが汎用的になり、以前に実行した 1 つのインストールに固有のインストール情報が削除されます。これにより、仮想マシンの仮想ハードディスクを、他のシステムへの複数のインストール用のテンプレートとして使用できます。
- C:\Windows\System32\sysprep\sysprep.exeからの Sysprep の起動
Sysprep ツールに以下の情報を入力します。
- System Cleanup Action の場合は、Enter System Out-of-Box-Experience (OOBE) を選択します。
- Generalize チェックボックスを選択します。
- Shutdown Options セクションで Shutdown を選択します。
- OK をクリックして sysprep プロセスを完了します。完了したら、仮想マシンは自動的にシャットダウンします。
Image サービス(glance)に Windows イメージを登録します。この手順では、Windows インストールの qcow2 HDD を glance に登録します。この例では、ディスクファイル
/root/win2012r2.qcow2を使用しています。glance image-create --file /root/win2012r2.qcow2 --disk-format qcow2 --container-format bare --name win2012r2 --is-public True --progress [=============================>] 100%
$ glance image-create --file /root/win2012r2.qcow2 --disk-format qcow2 --container-format bare --name win2012r2 --is-public True --progress [=============================>] 100%Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.1. Windows の物理サーバーへのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
ハードウェアコンポーネントを指定して、ironic に物理ノードを登録します。以下に例を示します。
ironic node-create -d fake_pxe -p cpus=1 -p memory_mb=1024 -p local_gb=15 -p cpu_arch=amd64
# ironic node-create -d fake_pxe -p cpus=1 -p memory_mb=1024 -p local_gb=15 -p cpu_arch=amd64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいノードの UUID を取得します。
ironic node-list
# ironic node-listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 物理 Windows ノードの MAC アドレスに一致するノードのポートを作成します。
ironic port-create -n [NODE_UUID] -a [NIC_MAC]
# ironic port-create -n [NODE_UUID] -a [NIC_MAC]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
ironic port-create -n 3b3d3fd4-4621-427f-a78d-054a1ef17a0a -a 52:54:00:85:76:53
# ironic port-create -n 3b3d3fd4-4621-427f-a78d-054a1ef17a0a -a 52:54:00:85:76:53Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードをメンテナンスモードに切り替えます。
ironic node-set-maintenance [NODE_UUID] true ironic node-set-provision-state [NODE_UUID] manage
# ironic node-set-maintenance [NODE_UUID] true # ironic node-set-provision-state [NODE_UUID] manageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいノードのイントロスペクションを実行します。
openstack baremetal introspection start [NODE_UUID] --discoverd-url http://[KEYSTONE_URL]:5050
# openstack baremetal introspection start [NODE_UUID] --discoverd-url http://[KEYSTONE_URL]:5050Copy to Clipboard Copied! Toggle word wrap Toggle overflow [KEYSTONE_URL]を keystone サービスの IP アドレスに置き換えます。注記: FAKE_PXE ドライバーを使用している場合は、ironic ノードリストの状態が
wait-callback のデプロイに切り替わったら、手動でノード の電源をオンにします。
イントロスペクションが完了したら、メンテナンスモードをオフにします。
ironic node-set-maintenance [NODE UUID] false ironic node-set-provision-state [NODE UUID] provide
# ironic node-set-maintenance [NODE UUID] false # ironic node-set-provision-state [NODE UUID] provideCopy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンスへの認証用のキーペアを作成します。
nova keypair-add --pub_key ~/.ssh/id_rsa.pub [KEY_NAME]
# nova keypair-add --pub_key ~/.ssh/id_rsa.pub [KEY_NAME]Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードのローカルブートを有効にします。
ironic node-update [NODE_UUID] add properties/capabilities="boot_option:local"
# ironic node-update [NODE_UUID] add properties/capabilities="boot_option:local"Copy to Clipboard Copied! Toggle word wrap Toggle overflow nova を使用してノードを起動します。
nova boot --nic net-id=[NETWORK_UUID] --flavor [FLAVOR_NAME] --image [IMAGE_UUID/IMAGE_NAME] --keyname [INSTANCE_NAME]
# nova boot --nic net-id=[NETWORK_UUID] --flavor [FLAVOR_NAME] --image [IMAGE_UUID/IMAGE_NAME] --keyname [INSTANCE_NAME]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えます。
-
[NETWORK_UUID]は、ベアメタルプロビジョニングで使用するために作成されたネットワークの一意識別子に置き換えます。 -
[FLAVOR_NAME]をノード用に作成されたフレーバーの名前に置き換えます。 -
[IMAGE_UUID]を、Image サービスにアップロードされたディスクイメージの一意識別子に置き換えます。 -
[INSTANCE_NAME]は、ベアメタルインスタンスの名前に置き換えます。
-
インスタンスのパスワードを取得します。
nova get-password [INSTANCE_NAME] /path/to/your/keypairs/private/key
# nova get-password [INSTANCE_NAME] /path/to/your/keypairs/private/keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンスのステータスを確認します。
nova list
# nova listCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Dashboard のコンソールを使用してインスタンスにアクセスすることで、これをさらにテストすることができます。
3.3.2. リモートデスクトップアクセスの有効化 リンクのコピーリンクがクリップボードにコピーされました!
-
TCP/UDP 3389で リモートデスクトップ トラフィックを許可するセキュリティーグループルールを追加します。 nova コマンドを使用してセキュリティーキーを取得します。
nova get-password [INSTANCE_NAME] /path/to/your/keypairs/private/key
# nova get-password [INSTANCE_NAME] /path/to/your/keypairs/private/keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
[INSTANCE_NAME]は、ベアメタルインスタンスの名前に置き換えます。
-
第4章 ベアメタルプロビジョニングのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
以下のセクションでは、Bare Metal Provisioning セットアップの問題診断に役立つ可能性のある情報と手順を説明します。
イントロスペクションによる Bare Metal Provisioning は、openstack-ironic-api、openstack-ironic-conductor、openstack-ironic-inspector、および openstack-ironic-inspector -dnsmasq の 4 つのサービスを使用します。ほとんどの OpenStack コンポーネントのログは、/var/log ディレクトリーにあります。
4.1. PXE ブートエラーのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Permission Denied エラー
Bare Metal Provisioning ノードのコンソールで Permission Denied エラーが表示された場合には、以下のように適切な SELinux コンテンツを /httpboot および /tftpboot ディレクトリーに適用してください。
semanage fcontext -a -t httpd_sys_content_t "/httpboot(/.*)?" semanage fcontext -a -t tftpdir_t "/tftpboot(/.*)?"
# semanage fcontext -a -t httpd_sys_content_t "/httpboot(/.*)?"
# semanage fcontext -a -t tftpdir_t "/tftpboot(/.*)?"
/pxelinux.cfg/XX-XX-XX-XX-XX-XX でのブートプロセスのフリーズ
以下の図に示したように、ノードのコンソールで、IP アドレスは取得されているがプロセスが停止しているように表示されている場合:
これは、ironic.conf ファイルで誤った PXE ブートテンプレートを使用している可能性があることを示しています。
grep ^pxe_config_template ironic.conf pxe_config_template=$pybasedir/drivers/modules/ipxe_config.template
# grep ^pxe_config_template ironic.conf
pxe_config_template=$pybasedir/drivers/modules/ipxe_config.template
デフォルトのテンプレートは ipxe_config.template です。
4.2. ベアメタルノードブート後のログインエラーのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
ノードのコンソールのログインプロンプトで、設定手順中に設定した root パスワードを使用してログインを試みてもログインできない場合には、デプロイしたイメージでブートしていないことを意味します。deploy-kernel/deploy-ramdisk イメージにスタックしてしまって、システムが正しいイメージをまだ取得していない可能性があります。
この問題を修正するには、コンピュートノードまたはベアメタルプロビジョニングノードの /httpboot/pxelinux.cfg/MAC_ADDRESS にある PXE ブートの設定ファイルをチェックして、このファイルにリストされている全 IP アドレスがベアメタルプロビジョニングネットワークの IP アドレスに対応していることを確認してください。
Bare Metal Provisioning ノードが認識している唯一のネットワークは Bare Metal Provisioning ネットワークです。エンドポイントの 1 つがこのネットワーク上にない場合には、そのエンドポイントはブートプロセスの一環として Bare Metal Provisioning ノードに到達することはできません。
たとえば、ファイルの kernel の行は以下のようになります。
kernel http://192.168.200.2:8088/5a6cdbe3-2c90-4a90-b3c6-85b449b30512/deploy_kernel selinux=0 disk=cciss/c0d0,sda,hda,vda iscsi_target_iqn=iqn.2008-10.org.openstack:5a6cdbe3-2c90-4a90-b3c6-85b449b30512 deployment_id=5a6cdbe3-2c90-4a90-b3c6-85b449b30512 deployment_key=VWDYDVVEFCQJNOSTO9R67HKUXUGP77CK ironic_api_url=http://192.168.200.2:6385 troubleshoot=0 text nofb nomodeset vga=normal boot_option=netboot ip=${ip}:${next-server}:${gateway}:${netmask} BOOTIF=${mac} ipa-api-url=http://192.168.200.2:6385 ipa-driver-name=pxe_ssh boot_mode=bios initrd=deploy_ramdisk coreos.configdrive=0 || goto deploy
kernel http://192.168.200.2:8088/5a6cdbe3-2c90-4a90-b3c6-85b449b30512/deploy_kernel selinux=0 disk=cciss/c0d0,sda,hda,vda iscsi_target_iqn=iqn.2008-10.org.openstack:5a6cdbe3-2c90-4a90-b3c6-85b449b30512 deployment_id=5a6cdbe3-2c90-4a90-b3c6-85b449b30512 deployment_key=VWDYDVVEFCQJNOSTO9R67HKUXUGP77CK ironic_api_url=http://192.168.200.2:6385 troubleshoot=0 text nofb nomodeset vga=normal boot_option=netboot ip=${ip}:${next-server}:${gateway}:${netmask} BOOTIF=${mac} ipa-api-url=http://192.168.200.2:6385 ipa-driver-name=pxe_ssh boot_mode=bios initrd=deploy_ramdisk coreos.configdrive=0 || goto deploy
上記の例の kernel 行の値 | 対応する情報 |
|---|---|
| http://192.168.200.2:8088 |
|
| 5a6cdbe3-2c90-4a90-b3c6-85b449b30512 |
|
| deploy_kernel |
これは、 |
| http://192.168.200.2:6385 |
|
| pxe_ssh | このノードの Bare Metal Provisioning サービスが使用している IPMI ドライバー |
| deploy_ramdisk |
これは、 |
これらの値のいずれかが /httpboot/pxelinux.cfg/MAC_ADDRESS と ironic.conf ファイルの間で一致しない場合は、ironic.conf ファイルでこれらの値を更新して Bare Metal Provisioning サービスを再起動してから、Bare Metal Provisioning ノードを再デプロイする必要があります。
4.3. Bare Metal Provisioning サービスが Right ホスト名を取得しない問題のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Provisioning システムが正しいホスト名を取得しない場合は、cloud-init で障害が発生していることを意味します。この問題を修正するには、Bare Metal Provisioning サブネットを OpenStack Networking サービス内のルーターに接続します。meta-data エージェントへの要求はこれで正しくルーティングされるようになるはずです。
4.4. ベアメタルプロビジョニングコマンドの実行時の OpenStack Identity サービスの認証情報のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Identity サービスへの認証で問題がある場合には、ironic.conf ファイルの identity_uri パラメーターをチェックして、keystone AdminURL から /v2.0 が削除されていることを確認してください。たとえば、identity_uri は http://IP:PORT に設定する必要があります。
4.5. ハードウェア登録に関するトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
ハードウェア登録での問題は、ノードの登録情報が誤っていることが原因となっている可能性があります。プロパティー名と値が正しく入力されていることを確認してください。プロパティー名に誤りやタイプミスがあってもノードの情報には正常に追加されますが、そのプロパティー名は無視されます。
ノードの情報を更新します。以下の例では、登録するノードのメモリー使用量を 2 GB に更新します。
ironic node-update NODE_UUID replace properties/memory_mb=2048
# ironic node-update NODE_UUID replace properties/memory_mb=2048
4.6. No Valid Host Errors のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Compute スケジューラーがインスタンスを起動するのに適切な Bare Metal Provisioning ノードを見つけられない場合、NoValidHost エラーが /var/log/nova/nova-conductor.log に表示されるか、起動に失敗した直後に Dashboard に表示されます。通常これは、Compute が想定するリソースと Bare Metal Provisioning ノードが提供するリソースが一致しないことが原因です。
利用可能なハイパーバイザーのリソースを確認します。
nova hypervisor-stats
# nova hypervisor-statsCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここで報告されるリソースは、Bare Metal Provisioning ノードが提供するリソースと一致する必要があります。
Compute が Bare Metal Provisioning ノードをハイパーバイザーとして認識していることを確認します。
nova hypervisor-list
# nova hypervisor-listCopy to Clipboard Copied! Toggle word wrap Toggle overflow ノードは UUID で識別され、リストに表示されるはずです。
Bare Metal Provisioning ノードの詳細を確認します。
ironic node-list ironic node-show NODE_UUID
# ironic node-list # ironic node-show NODE_UUIDCopy to Clipboard Copied! Toggle word wrap Toggle overflow ノードの詳細が、Compute によって返された情報と一致することを確認します。
選択したフレーバーが Bare Metal Provisioning ノードで利用可能なリソースを超えていないことを確認します。
nova flavor-show FLAVOR_NAME
nova flavor-show FLAVOR_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow ironic node-list の出力をチェックして、Bare Metal Provisioning ノードがメンテナンスモードに設定されていないことを確認します。必要な場合には、メンテナンスモードを解除してください。
ironic node-set-maintenance NODE_UUID off
# ironic node-set-maintenance NODE_UUID offCopy to Clipboard Copied! Toggle word wrap Toggle overflow ironic node-list の出力をチェックして、Bare Metal Provisioning ノードが
availableの状態であることを確認します。必要な場合には、ノードをavailableに切り替えます。ironic node-set-provision-state NODE_UUID provide
# ironic node-set-provision-state NODE_UUID provideCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7. ハードウェアのイントロスペクションに関するトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
ハードウェアのイントロスペクションは、プロビジョニング状態の Bare Metal Provisioning ノードで失敗する 可能 性があります。
すべてのノードのプロビジョニング状態を確認します。
ironic node-list
# ironic node-listCopy to Clipboard Copied! Toggle word wrap Toggle overflow イントロスペクションを開始する前に、ノードを
availableからmanageableに移動します。ironic node-set-provision-state NODE_UUID manage
# ironic node-set-provision-state NODE_UUID manageCopy to Clipboard Copied! Toggle word wrap Toggle overflow
付録A Bare Metal Provisioning のドライバー リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Provisioning は、多くのドライバーの 1 つを使用するように設定できます。各ドライバーは、プロビジョニングメソッドと電源管理のタイプで設定されます。ドライバーによっては追加の設定が必要な場合があります。このセクションに記述された各ドライバーはプロビジョニングに PXE を使用します。ドライバーは電源管理タイプ別にリストされます。Bare Metal Provisioning のドライバーまたはドライバーを有効にするには、「Bare Metal Provisioning ドライバーの設定」を参照してください。
A.1. Intelligent Platform Management Interface (IPMI) リンクのコピーリンクがクリップボードにコピーされました!
IPMI は、電源管理やサーバー監視などの帯域外 (OOB) リモート管理機能を提供するインターフェイスです。この電源管理タイプを使用するには、全 Bare Metal Provisioning ノードに IPMI が共有ベアメタルプロビジョニングネットワークに接続されている必要があります。pxe_ipmitool ドライバーを有効にして、ノードの driver_info に以下の情報を設定します。
-
ipmi_address: IPMI NIC の IP アドレス -
ipmi_username: IPMI のユーザー名 -
ipmi_password: IPMI のパスワード
A.2. Dell Remote Access Controller (DRAC) リンクのコピーリンクがクリップボードにコピーされました!
DRAC は、電源管理やサーバー監視などの帯域外 (OOB) リモート管理機能を提供するインターフェイスです。この電源管理タイプを使用するには、全 Bare Metal Provisioning ノードに DRAC が共有 Bare Metal Provisioning ネットワークに接続されている必要があります。pxe_drac ドライバーを有効にして、ノードの driver_info に以下の情報を設定します。
-
drac_address: DRAC NIC の IP アドレス -
drac_username: DRAC のユーザー名 -
drac_password: DRAC のパスワード
A.3. Integrated Remote Management Controller (iRMC) リンクのコピーリンクがクリップボードにコピーされました!
富士通の iRMC は、電源管理やサーバー監視などの帯域外 (OOB) リモート管理機能を提供するインターフェイスです。Bare Metal Provisioning ノードでこの電源管理タイプを使用するには、このノードで iRMC インターフェイスが共有ベアメタルプロビジョニングネットワークに接続されている必要があります。pxe_irmc ドライバーを有効にして、ノードの driver_info に以下の情報を設定します。
-
irmc_address: iRMC インターフェイスの NIC の IP アドレス -
irmc_username: iRMC のユーザー名 -
irmc_password: iRMC のパスワード
IPMI を使用してブートモードを設定する場合、または SCCI を使用してセンサーデータを取得する場合には、追加で以下のステップを完了する必要があります。
ironic.conf でセンサーメソッドを有効にします。
openstack-config --set /etc/ironic/ironic.conf \ irmc sensor_method METHOD
# openstack-config --set /etc/ironic/ironic.conf \ irmc sensor_method METHODCopy to Clipboard Copied! Toggle word wrap Toggle overflow METHOD は
scciまたはipmitoolに置き換えます。SCCI を有効にした場合は、python-scciclient パッケージをインストールします。
yum install python-scciclient
# yum install python-scciclientCopy to Clipboard Copied! Toggle word wrap Toggle overflow Bare Metal Provisioning コンダクターサービスを再起動します。
systemctl restart openstack-ironic-conductor.service
# systemctl restart openstack-ironic-conductor.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
iRMC ドライバーを使用するには、iRMC S4 以降が必要です。
A.4. Integrated Lights-Out (iLO) リンクのコピーリンクがクリップボードにコピーされました!
Hewlett-Packard の iLO は、電源管理やサーバー監視などの帯域外 (OOB) リモート管理機能を提供するインターフェイスです。この電源管理タイプを使用するには、全 Bare Metal Provisioning ノードに iLO インターフェイスが共有ベアメタルプロビジョニングネットワークに接続されている必要があります。pxe_ilo ドライバーを有効にして、ノードの driver_info に以下の情報を設定します。
-
ilo_address: iLO インターフェイスの NIC の IP アドレス -
ilo_username: iLO のユーザー名 -
ilo_password: iLO のパスワード
python-proliantutils パッケージもインストールして、Bare Metal Provisioning コンダクターサービスを再起動する必要があります。
yum install python-proliantutils systemctl restart openstack-ironic-conductor.service
# yum install python-proliantutils
# systemctl restart openstack-ironic-conductor.service
正常にイントロスペクションを正常に実行するには、HP ノードのファームウェアバージョンは、2015 である必要があります。
A.5. SSH と virsh リンクのコピーリンクがクリップボードにコピーされました!
Bare Metal Provisioning は libvirt を実行しているホストにアクセスして、仮想マシンをノードとして使用することができます。virsh はノードの電源管理機能を制御します。
SSH ドライバーは、テストおよび評価の目的でのみ利用いただけます。Red Hat OpenStack Platform のエンタープライズ環境には推奨していません。
この電源管理タイプを使用するには、Bare Metal Provisioning は、仮想ノードを設定するホスト上の libvirt 環境に完全にアクセスできるアカウントに SSH でアクセスできる必要があります。pxe_ssh ドライバーを有効にして、ノードの driver_info で以下の情報を設定します。
-
ssh_virt_type: このオプションはvirshに設定します。 -
ssh_address: virsh ホストの IP アドレス -
ssh_username: SSH ユーザー名 -
ssh_key_contents: Bare Metal Provisioning コンダクターノード上の SSH 秘密鍵の内容。対応する公開鍵が virsh ホストにコピーされている必要があります。