Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
第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 ホストを 1 台選択してください。
- 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 は、同じノードまたは別のノードで実行するように設定することが可能なコンポーネントのコレクションです。本ガイドの構成例では、全 Bare Metal Provisioning コンポーネントを単一のノード上にインストールします。本ガイドでは、OpenStack Identity、OpenStack Image、OpenStack Compute、OpenStack Networking のサービスがインストール/設定済みであることを前提としています。Bare Metal Provisioning には、以下の外部サービスも必須となるため、事前にインストール/設定しておく必要があります。
- ハードウェア情報と状態を保管するデータベースサーバー。本ガイドでは、MariaDB データベースサービスが Red Hat OpenStack Platform 環境向けに設定されていることを前提とします。
- メッセージングサービス。本ガイドでは、RabbitMQ が Red Hat OpenStack Platform 環境向けに設定されていることを前提とします。
OpenStack 環境のデプロイに director を使用した場合には、データベースとメッセージングサービスは、オーバークラウドのコントローラーノードにインストールされています。
Red Hat OpenStack Platform には、Red Hat Enterprise Linux 7 を実行するコンピュートノードと OpenStack Networking ノード上に firewalld ではなく iptables が必要です。本ガイドでは、ファイアウォールルールは、iptables を使用して設定します。
ハードウェアのイントロスペクション (ironic-inspector) は iptables を使用して、ironic ノードの MAC アドレスをブラックリストに追加します。ironic-inspector が変更を加えようと試みている間に、別のプロセスが iptables をロックした場合に、iptables -w
フラグがサポートされていれば (バージョン 1.4.21 以降)、ironic-inspector はこのフラグを使用します。
1.1.2. Bare Metal Provisioning のハードウェア要件
Bare Metal Provisioning の全コンポーネントを実行するノードには、以下の条件を満たすハードウェアが必要です。
- Intel 64 または AMD64 CPU 拡張機能をサポートする 64 ビット x86 プロセッサー
- 最小 6 GB の RAM
- 最小 40 GB の空きディスク領域
- 最小で 1 Gbps ネットワークインターフェースカードを 2 枚。 ただし、 特に、多数のベアメタルマシンをプロビジョニングする場合には、ベアメタルプロビジョニングネットワークのトラフィックには 10 Gbps のインターフェースを 1 枚搭載することを推奨します。
- ホストのオペレーティングシステムに Red Hat Enterprise Linux 7.2 (以降) がインストール済みであること
もしくは、Bare Metal Provisioning コンポーネントを専用の openstack-nova-compute ノードにインストールします。ハードウェア要件については、『director のインストールと使用方法』のガイドの 「コンピュートノードの要件」 の項を参照してください。
1.1.3. Bare Metal Provisioning のネットワーク要件
Bare Metal Provisioning には少なくとも 2 つのネットワークが必要です。
- プロビジョニングネットワーク: これは、Bare Metal Provisioning がベアメタルマシンのプロビジョニング/管理に使用するプライベートネットワークです。ベアメタルプロビジョニングネットワークは、ベアメタルシステムの検出がしやすくなるように、DHCP および PXE ブート機能を提供します。このネットワークは、Bare Metal Provisioning が PXE ブートおよび DHCP の要求に対応できるように、トランク化されたインターフェースでネイティブ VLAN を使用するのが理想的です。また、このネットワークは、プロビジョニングするベアメタルマシン上の帯域外 (OOB) ドライバーで電源管理を制御するのに使用するネットワークでもあります。
- 外部ネットワーク: リモート接続に使用する別個のネットワーク。このネットワークに接続するインターフェースには、静的または外部の DHCP サービス経由で動的に定義された、ルーティング可能な IP アドレスが必要です。
1.1.4. ベアメタルマシンの要件
プロビジョニングするベアメタルマシンには、以下が必要となります。
- 2 x NIC: ベアメタルプロビジョニングネットワーク用に 1 つと、外部接続用に 1 つ。
- ベアメタルプロビジョニングネットワークに接続した電源管理インターフェース (例: IPMI)。テスト目的で SSH を使用する場合には、これは必要ありません。
- システムのブート順序で、ベアメタルプロビジョニングネットワーク上での PXE ブートを 1 番上に設定し、ハードディスクや 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 サービスで定義して、それらのサービスの内部、管理、パブリックの接続向けに関連付けられたエンドポイントURL も必要です。
Bare Metal Provisioning サービスを director ノードから設定するには、以下のステップを実行します。
overcloudrc
ファイルを読み込みます。# source ~stack/overcloudrc
OpenStack Bare Metal Provisioning ユーザーを作成します。
# openstack user create --password IRONIC_PASSWORD --enable IRONIC_USER # openstack role add --project service --user IRONIC_USER admin
ここで、
IRONIC_USER
は Bare Metal Provisioning サービスのユーザー名に、IRONIC_PASSWORD
はパスワードに置き換えます。OpenStack Bare Metal Provisioning サービスを作成します。
# openstack service create --name ironic --description "Ironic bare metal provisioning service" baremetal
他の OpenStack が使用している仮想 IP (VIP) アドレスを確認します。
# openstack endpoint list -c "Service Name" -c "PublicURL" --long
このコマンドの出力には、指定したサービスとその
Public URL
が一覧表示されます。これらは通常すべて同じサーバー上にあり、同じ IP アドレスを使用します。Bare Metal Provisioning サービスのインストール先となるコンピュートノードの内部 API ネットワークのアドレスを取得します。
# route -n
このコマンドの出力には、IP ルーティングテーブルが IP アドレスと各 IP アドレス用の
インターフェース
とともに一覧表示されます。内部 API ネットワークのアドレスは、次にサービスエンドポイントの作成に使用されます。
以下のコマンドを実行すると、内部および管理用の URL に使用する NIC に関連付けられた IP アドレスをチェックすることができます。
# ifconfig INTERFACE
サービスエンドポイントを作成します。
# 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
ここで、
VIP
は HAProxy で設定されている仮想 IP アドレスに、COMPUTE_INTERNAL_API_IP
は内部 API ネットワークに接続されている Bare Metal Provisioning サービスを実行するコンピュートノードの IP アドレスに、SERVICE_ID
はservice create
コマンドを使用して作成した Bare Metal Provisioning サービスの ID に置き換えます。
次に、HAProxy を設定して、以前の手順で作成したエンドポイントのパブリック URL に対する要求を確実に受信するようにします。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
この例では、
-
VIP
は仮想 IP アドレスです。 -
SERVER_NAME
は、Bare Metal Provisioning サービスのインストール/実行先となる Compute サーバーの HAProxy 識別名です。 -
COMPUTE_INTERNAL_API_IP
は、Bare Metal Provisioning のインストール/実行先となる Compute サーバーの内部 API の IP アドレスです。 -
transparent
により、HAProxy は、コントローラーノード上に存在しない IP アドレスでもバインディングできるようになったので、クラスター環境内において仮想 IP アドレスをコントローラー間で移動できます。 check fall 5 inter 2000 rise 2
はバックエンドサーバーに対する以下のヘルスチェックを指します。-
fall 5
: ヘルスチェックが連続 5 回失敗すると、そのサーバーは利用不可と見なされます。 -
inter 2000
: ヘルスチェックの間隔は 2000 ミリ秒または 2 秒です。 -
rise 2
: ヘルスチェックが 2 回連続で成功すると、そのサーバーは利用可能と見なされます。
-
-
HAProxy を再起動して、変更が有効になったことを確認します。
# systemctl restart haproxy.service
バックエンドサーバーが利用できないことを示す「haproxy[4249]: proxy ironic has no server available!」というメッセージが表示される場合があります。このサービスのインストール/設定はまだ行っていないので、このメッセージは、現時点では無視してかまいません。
1.3. Bare Metal Provisioning サービスに向けたコントローラーノードの設定
以下のステップは、Red Hat OpenStack Platform デプロイメント内の全コントローラーノードで root
ユーザーとして実行する必要があります。ただし、Bare Metal Provisioning データベースの作成 セクションは例外です。Bare Metal Provisioning データベースは全コントローラーノードで共有されるので、このセクションの手順は 1 つのコントローラー上で実行する必要があります。
コントローラーノード上で、ベアメタルプロビジョニングネットワークが Open vSwitch に接続されていて、OpenStack デプロイメントが到達可能であることを確認する必要があります。
Open vSwitch にブリッジを追加します。
# ovs-vsctl add-br br-ironic # ovs-vsctl add-port br-ironic IRONIC_PROVISIONING_NIC # ovs-vsctl show
ここで、
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
パラメーターで指定するドライバーにopenvswitch
オプションをリストします (例:mechanism_drivers =openvswitch
)。これはコンマ区切りリストです。 -
flat_networks
パラメーターには、ベアメタルプロビジョニングネットワークを参照する名前 (例:ironicnet
) を作成してflat_networks
にリストします (例:flat_networks =datacentre,ironicnet
)。これはコンマ区切りリストです。 -
ベアメタルプロビジョニングネットワークに VLAN を使用する場合には、
network_vlan_ranges
パラメーターを「ironicnet:VLAN_START:VLAN_END
」の形式で追加します (例: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
このコンマ区切りのキー/値のペアは、ベアメタルプロビジョニングネットワークの名前を、そのネットワークに接続された物理デバイスにマッピングします。
neutron-openvswitch-agent.service
を再起動してbr-ironic
ブリッジが統合ブリッジの一部になっていることを確認します。# systemctl restart neutron-openvswitch-agent.service
neutron-server.service
を再起動して、新規接続を検出します。# systemctl restart neutron-server.service
注記このステップを実行しなかった場合には、OpenStack Networking サービス内でベアメタルプロビジョニングネットワークの作成を試みても、flat ネットワークが存在しないというメッセージが表示されて操作は失敗します。
1.3.1. Bare Metal Provisioning データベースの作成
Bare Metal Provisioning が使用するデータベースとデータベースユーザーを作成します。以下の手順のステップはすべて、データベースサーバーに root ユーザーとしてログインして実行する必要があります。
Bare Metal Provisioning データベースの作成
データベースサービスに接続します。
# mysql -u root
ironic データベースを作成します。
mysql> CREATE DATABASE ironic CHARACTER SET utf8;
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';
PASSWORD は、このユーザーとしてデータベースサーバーとの認証を行う際に使用するセキュアなパスワードに置き換えます。
データベースの特権をフラッシュして、設定が即時に反映されるようにします。
mysql> FLUSH PRIVILEGES;
mysql クライアントを終了します。
mysql> quit
1.3.2. Bare Metal Provisioning に向けた OpenStack Compute サービスの設定
ベアメタルプロビジョニングドライバー向けに Compute サービスを設定します。このドライバーを使用すると、Compute は仮想マシンのプロビジョニングに使用するのと同じ API を使用して物理マシンをプロビジョニングできるようになります。1 つの openstack-nova-compute ノードに対して指定できるドライバーは 1 つのみなので、ベアメタルプロビジョニングドライバーを指定したノードでは、物理マシンしかプロビジョニングできません。ベアメタルプロビジョニングドライバーを使用して全ベアメタルノードのプロビジョニングを行う openstack-nova-compute ノードを 1 台割り当てることを推奨します。以下の手順の全ステップは、選択したコンピュートノードに root ユーザーとしてログインした状態で実行する必要があります。
Bare Metal Provisioning に向けた OpenStack Compute の設定
OpenStack Compute が Bare Metal Provisioning スケジューラーホストマネージャーを使用するように設定します。
# 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_tracks_instance_changes false
デフォルトのフィルターを以下のように設定します。
# openstack-config --set /etc/nova/nova.conf DEFAULT baremetal_scheduler_default_filters AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter
Compute がデフォルトの Bare Metal Provisioning スケジューリングフィルターを使用するように設定します。
# openstack-config --set /etc/nova/nova.conf \ DEFAULT scheduler_use_baremetal_filters True
Compute が Bare Metal Provisioning の正しい認証情報を使用するように設定します。
# openstack-config --set /etc/nova/nova.conf \ ironic admin_username ironic # openstack-config --set /etc/nova/nova.conf \ ironic admin_password PASSWORD # openstack-config --set /etc/nova/nova.conf \ ironic admin_url http://IDENTITY_IP:35357/v2.0 # openstack-config --set /etc/nova/nova.conf \ ironic admin_tenant_name service # openstack-config --set /etc/nova/nova.conf \ ironic api_endpoint http://IRONIC_API_IP:6385/v1
以下の値を置き換えてください。
- PASSWORD は、Bare Metal Provisioning が Identity との認証で使用するパスワードに置き換えます。
- IDENTITY_IP は、Identity をホストするサーバーの IP アドレスまたはホスト名に置き換えます。
- IRONIC_API_IP は、Bare Metal Provisioning API サービスをホストするサーバーの IP アドレスまたはホスト名に置き換えます。
nova
データベースの認証情報をironic
コンピュートノードで設定します。# openstack-config --set /etc/nova/nova.conf database connection "mysql+pymysql://nova:NOVA_DB_PASSWORD@DB_IP/nova"
コンピュートコントローラーノードで、コンピュートスケジューラーサービスを再起動します。
# systemctl restart openstack-nova-scheduler.service
コンピュートノードで、Compute サービスを再起動します。
# systemctl restart openstack-nova-compute.service
1.3.3. OpenStack Networking DHCP エージェントが iPXE 要求をタグ付けするための設定
iPXE からの OpenStack Networking DHCP 要求には、ipxe
という DHCP タグを付けて、クライアントが HTTP 操作を実行して boot.ipxe
スクリプトを取得する必要があることを DHCP サーバーに知らせる必要があります。このタグ付けは、OpenStack Networking DHCP エージェントサービスが使用する dnsmasq
設定ファイルに dhcp-userclass
エントリーを追加することによって行うことができます。
オーバークラウドコントローラーで DHCP エージェントが使用している
dnsmasq
ファイルを確認します。# grep ^dnsmasq_config_file /etc/neutron/dhcp_agent.ini dnsmasq_config_file =/etc/neutron/dnsmasq-neutron.conf
このファイルを編集して、ファイルの末尾に以下の行を追記します。
# Create the "ipxe" tag if request comes from iPXE user class dhcp-userclass=set:ipxe,iPXE
ファイルを保存してから OpenStack Networking DHCP エージェントサービスを再起動します。
# systemctl restart neutron-dhcp-agent.service
1.4. Bare Metal Provisioning に向けたコンピュートノードの設定
以下の手順は、Bare Metal Provisioning サービスを実行するコンピュートノードのみに適用します。これらのステップはコンピュートノード上で root
ユーザーとして実行する必要があります。
コンピュートノードには、Bare Metal Provisioning 用の NIC (例: eth6
) が設定されています。この手順は、以下を目的とします。
-
Bare Metal Provisioning 用の NIC (この例では
eth6
) を Open vSwitch に接続します。 - ベアメタルサーバーは、iPXE プロセスの一環としてベアメタルノードからブートイメージをダウンロードする必要があるため、この接続に IP アドレスを割り当てます。
Open vSwitch への eth6
の接続
「Bare Metal Provisioning サービスに向けたコントローラーノードの設定」に記載のコントローラーノードの設定と同様に、Bare Metal Provisioning サービスを実行するコンピュートノード上の Open vSwitch 内にブリッジを作成します。
# ovs-vsctl add-br br-ironic # ovs-vsctl add-port br-ironic IRONIC_PROVISIONING_NIC
ここで、
br-ironic
はブリッジ名に、IRONIC_PROVISIONING_NIC
はベアメタルプロビジョニングネットワークに接続された NIC (例:eth6
) に置き換えます。注記この手順が「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
パラメーターで指定するドライバーにopenvswitch
オプションをリストします (例:mechanism_drivers =openvswitch
)。これはコンマ区切りリストです。 -
flat_networks
パラメーターには、ベアメタルプロビジョニングネットワークを参照する名前 (例:ironicnet
) を作成してflat_networks
にリストします (例:flat_networks =datacentre,ironicnet
)。これはコンマ区切りリストです。 -
ベアメタルプロビジョニングネットワークに VLAN を使用する場合には、
network_vlan_ranges
パラメーターを「ironicnet:VLAN_START:VLAN_END
」の形式で追加します (例: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
このコンマ区切りのキー/値のペアは、ベアメタルプロビジョニングネットワークの名前を、そのネットワークに接続された物理デバイスにマッピングします。
OpenStack Networking Open vSwitch エージェントサービスを再起動します。
# systemctl restart neutron-openvswitch-agent.service
これで、本手順の最初の目的が達成されました。次は br-ironic
ブリッジに IP アドレスを割り当てて、再起動後も永続するように設定します。
Bare Metal サーバーへの IP アドレスの割り当て
/etc/sysconfig/network-scripts
の場所に標準の設定ファイルを作成します。テナントネットワークですでに利用可能なifcfg*
ファイルをコピーして、device
、ipaddr
、ovs_bridge
、bridge name
と、br-ironic
およびeth6
のMAC
アドレスの値を編集します。新規ファイルの更新完了後には、以下のような値が設定されるはずです。ifcfg-br-ironic
DEVICE=br-ironic ONBOOT=yes HOTPLUG=no NM_CONTROLLED=no PEERDNS=no DEVICETYPE=ovs TYPE=OVSBridge BOOTPROTO=static IPADDR=BARE_METAL_PROVISIONING_IP NETMASK=255.255.255.0 OVS_EXTRA="set bridge br-ironic other-config:hwaddr=MAC_ADDRESS"
ifcfg-eth6
DEVICE=eth6 ONBOOT=yes HOTPLUG=no NM_CONTROLLED=no PEERDNS=no DEVICETYPE=ovs TYPE=OVSPort OVS_BRIDGE=br-ironic BOOTPROTO=none
ネットワークブリッジを再起動して、IP アドレスを ping できる状態にします。
# ifup br-ironic
注記ネットワークサービスの再起動時にノードからの接続が切断された場合には、サーバーを再起動してください。
1.4.1. 必要なチャンネルのサブスクライブ
Bare Metal Provisioning のパッケージをインストールするには、サーバーを Red Hat サブスクリプションマネージャーに登録して、必要なチャンネルをサブスクライブする必要があります。コンピュートノードに Bare Metal Provisioning をインストールする場合は、サーバーはすでに適切にサブスクライブされている可能性があります。yum repolist コマンドを実行して、以下の手順に記載しているチャンネルが有効化されているかどうかを確認してください。
必要なチャンネルのサブスクライブ
コンテンツ配信ネットワークにシステムを登録します。プロンプトが表示されたら、カスタマーポータルのユーザー名とパスワードを入力します。
# subscription-manager register
Bare Metal Provisioning のインストールに必要なチャンネルが含まれたエンタイトルメントプールを特定します。
# subscription-manager list --available | grep -A13 "Red Hat Enterprise Linux Server" # subscription-manager list --available | grep -A13 "Red Hat OpenStack Platform"
上記のステップで特定したプール ID を使用して、Red Hat Enterprise Linux 7 Server および Red Hat OpenStack Platform のエンタイトルメントをアタッチします。
# subscription-manager attach --pool=POOL_ID
必要なチャンネルを有効にします。
# 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
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
1.4.3. iPXE の設定
iPXE 、map-file に必要なディレクトリーを作成して、
undionly.kpxe
ブートイメージ、iPXE、map-file
を適切な場所にコピーします。# mkdir /httpboot # mkdir /tftpboot # echo 'r ([/]) /tftpboot/\1' > /tftpboot/map-file # echo 'r ^(/tftpboot/) /tftpboot/\2' >> /tftpboot/map-file # cp /usr/share/ipxe/undionly.kpxe /tftpboot/ # chown -R ironic:ironic /httpboot # chown -R ironic:ironic /tftpboot
デフォルトでは、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
HTTP がイメージの要求に対応できるように設定します。
httpd
パッケージはすでにインストール済みなので、適切な仮想ホストのエントリーを作成してサービスを起動するだけです。注記/etc/httpd/conf.d
には、多数のファイルが含まれています。Red Hat は、単一のオーバークラウドの完全なイメージを全ノードに使用するので、コントローラーノードでのみ使用されている場合でも、全ノードで /etc/httpd/conf.d にファイルが含まれます。これらのファイルは使用されていないので、/etc/httpd/conf.d
の内容を削除するか、別の場所にコピーすることができます。iPXE の設定用に新しいファイルを作成します。このファイルには任意の名前を付けることができます。
.conf
の形式で、以下のような内容を記述してください。# cat 10-ipxe_vhost.conf Listen 8088 <VirtualHost *:8088> DocumentRoot "/httpboot" <Directory "/httpboot"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all Require all granted </Directory> ## Logging ErrorLog "/var/log/httpd/ironic_error.log" ServerSignature Off CustomLog "/var/log/httpd/ironic_access.log" combined </VirtualHost>
上記の仮想ホストの設定は、HTTPD がポート 8088 上の全アドレスにリッスンするように設定します。また、そのポートに対する全要求が
/httpboot
に送られるようにドキュメントルートを設定します。このファイルを保存してから、コンピュートノードで HTTPD サービスを再起動します。
# systemctl enable httpd.service # systemctl start httpd.service
1.4.4. Bare Metal Provisioning サービスの設定
本項では、/etc/ironic/ironic.conf
ファイルに必要な変更を加えます。
1.4.4.1. Bare Metal Provisioning がデータベースサーバーと通信するための設定
接続の設定キーの値を以下のように設定します。
# openstack-config --set /etc/ironic/ironic.conf \ database connection mysql+pymysql://ironic:PASSWORD@IP/ironic
ここで、PASSWORD はデータベースサーバーのパスワードに、IP はデータベースサーバーの IP アドレスまたはホスト名に変更します。
この接続設定キーに指定する IP アドレスまたはホスト名は、「Bare Metal Provisioning データベースの作成」の項で OpenStack Networking データベースを作成した際に Bare Metal Provisioning データベースユーザーがアクセスを許可された IP アドレスまたはホスト名と一致する必要があります。また、データベースがローカルでホストされ、Bare Metal Provisioning データベースの作成時に localhost
へのアクセス権を付与した場合には、localhost
と入力する必要があります。
1.4.4.2. Bare Metal Provisioning の認証の設定
Bare Metal Provisioning が認証に Identity を使用するように設定します。以下の手順に記載するステップはすべて、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/
IP は、Identity サーバーの IP アドレスまたはホスト名に置き換えます。
Bare Metal Provisioning が service テナントとして認証を行うように設定します。
# openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken admin_tenant_name service
Bare Metal Provisioning が ironic の管理ユーザーアカウントを使用して認証を行うように設定します。
# openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken admin_user ironic
Bare Metal Provisioning が正しい ironic 管理ユーザーアカウントのパスワードを使用するように設定します。
# openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken admin_password PASSWORD
PASSWORD は ironic ユーザーを作成した際に設定したパスワードに置き換えます。
1.4.4.3. Bare Metal Provisioning のための RabbitMQ Message Broker の設定
RabbitMQ はデフォルト (かつ推奨の) メッセージブローカーです。RabbitMQ メッセージングサービスは、rabbitmq-server パッケージにより提供されます。以下の手順で記載するステップはすべて、Bare Metal Provisioning をホストするコントローラーノードまたはコンピュートノードで root ユーザーとしてログインして実行する必要があります。
この手順は、RabbitMQ メッセージングサービスのインストールおよび設定が完了済みで、メッセージングサービスをホストするサーバー上で ironic ユーザーとそのパスワードが作成済みであることを前提とします。
RabbitMQ Message Broker を使用するための Bare Metal Provisioning の設定
RabbitMQ を RPC バックエンドとして設定します。
# openstack-config --set /etc/ironic/ironic.conf \ DEFAULT rpc_backend ironic.openstack.common.rpc.impl_kombu
Bare Metal Provisioning が RabbitMQ ホストに接続するように設定します。
# openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_host RABBITMQ_HOST
RABBITMQ_HOST は、メッセージブローカーをホストするサーバーの IP アドレスまたはホスト名に置き換えます。
メッセージブローカーのポートを 5672 に設定します。
# openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_port 5672
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
RABBIT_GUEST_PASSWORD はゲストユーザー用の RabbitMQ パスワードに置き換えます。
RabbitMQ の起動時に、全リソースに対するパーミッションが guest ユーザーに付与されています。リソースへのアクセスは、特別に仮想ホストを介して行われます。Bare Metal Provisioning がこの仮想ホストにアクセスするように設定します。
# openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_virtual_host /
1.4.4.4. Bare Metal Provisioning ドライバーの設定
Bare Metal Provisioning は、ベアメタルサーバーのデプロイと管理用の複数のドライバーをサポートします。一部のドライバーには、ハードウェア要件があり、追加の設定またはパッケージインストールが必要です。ドライバーについての詳しい情報は、「付録A Bare Metal Provisioning ドライバー」を参照してください。ドライバー名の前半はデプロイメントの方法 (例: PXE)、後半は電源管理の方法 (例: IPMI) を示しています。
Bare Metal Provisioning ドライバーの設定
ベアメタルサーバーのプロビジョニングに使用するドライバー (1 つまたは複数) を指定します。複数のドライバーを指定するには、コンマ区切りリストを使用します。
# openstack-config --set /etc/ironic/ironic.conf \ DEFAULT enabled_drivers DRIVER1,DRIVER2
次のドライバーがサポートされています。
PXE デプロイを使用する IPMI
-
pxe_ipmitool
-
PXE デプロイを使用する DRAC
-
pxe_drac
-
PXE デプロイを使用する iLO
-
pxe_ilo
-
PXE デプロイを使用する iBoot
-
pxe_iboot
-
PXE デプロイを使用する SSH
-
pxe_ssh
-
PXE を使用する iRMC
-
pxe_irmc
-
Bare Metal コンダクターサービスを再起動します。
# systemctl restart openstack-ironic-conductor.service
1.4.4.5. Bare Metal Provisioning サービスが PXE を使用するための設定
Bare Metal Provisioning サービスが PXE テンプレートを使用するように設定します。
# openstack-config --set /etc/ironic/ironic.conf \ pxe pxe_config_template \$pybasedir/drivers/modules/ipxe_config.template
Bare Metal Provisioning サービスが
tftp_server
を使用するように設定します。# openstack-config --set /etc/ironic/ironic.conf \ pxe tftp_server BARE_METAL_PROVISIONING_NETWORK_IP
PXE
tftp_root
を設定します。# openstack-config --set /etc/ironic/ironic.conf \ pxe tftp_root /tftpboot
PXE ブート用のファイルの名前を設定します。
# openstack-config --set /etc/ironic/ironic.conf \ pxe pxe_bootfile_name undionly.kpxe
Bare Metal Provisioning サービスが iPXE を使用するように有効化します。
# openstack-config --set /etc/ironic/ironic.conf \ pxe ipxe_enabled true
http
サーバーの URL を設定します。# openstack-config --set /etc/ironic/ironic.conf deploy http_url http://BARE_METAL_PROVISIONING_IP:8088
Bare Metal コンダクターサービスを再起動します。
# systemctl restart openstack-ironic-conductor.service
1.4.4.6. Bare Metal Provisioning が OpenStack Networking および OpenStack Image と通信するための設定
Bare Metal Provisioning は、DHCP とネットワークの設定には OpenStack Networking を使用し、物理マシンのブートに使用するイメージの管理には Image サービスを使用します。Bare Metal Provisioning が OpenStack Networking と Image サービスに接続して通信するように設定します。以下の手順に記載するステップはすべて、Bare Metal Provisioning をホストするサーバーに root ユーザーとしてログインして実行する必要があります。
Bare Metal Provisioning が OpenStack Networking および OpenStack Image と通信するための設定
Bare Metal Provisioning が OpenStack Networking エンドポイントを使用するように設定します。
# openstack-config --set /etc/ironic/ironic.conf \ neutron url http://NEUTRON_IP:9696
NEUTRON_IP は OpenStack Networking をホストするサーバーの IP アドレスまたはホスト名に置き換えます。
Bare Metal Provisioning が Image サービスと通信するように設定します。
# openstack-config --set /etc/ironic/ironic.conf \ glance glance_host GLANCE_IP
GLANCE_IP は、Image サービスをホストするサーバーの IP アドレスまたはホスト名に置き換えます。
Bare Metal Provisioning API サービスを起動して、ブート時に開始するように設定します。
# systemctl start openstack-ironic-api.service # systemctl enable openstack-ironic-api.service
Bare Metal Provisioning データベーステーブルを作成します。
# ironic-dbsync --config-file /etc/ironic/ironic.conf create_schema
Bare Metal Provisioning コンダクターサービスを起動して、ブート時に開始するように設定します。
# systemctl restart openstack-ironic-conductor.service # systemctl enable openstack-ironic-conductor.service
1.4.5. OpenStack Compute が Bare Metal Provisioning サービスを使用するための設定
本セクションでは、/etc/nova/nova.conf
ファイルを更新して、Compute サービスが Bare Metal Provisioning サービスを使用するように設定します。
OpenStack Compute が Bare Metal Provisioning を使用するための設定
Compute が Clustered Compute Manager を使用するように設定します。
# openstack-config --set /etc/nova/nova.conf \ DEFAULT compute_manager ironic.nova.compute.manager.ClusteredComputeManager
物理メモリーに対する仮想メモリーの割り当ての比率を設定します。
# openstack-config --set /etc/nova/nova.conf \ DEFAULT ram_allocation_ratio 1.0
ホスト用に確保するディスク容量を MB 単位で設定します。
# openstack-config --set /etc/nova/nova.conf \ DEFAULT reserved_host_memory_mb 0
OpenStack Compute が Bare Metal Provisioning ドライバーを使用するように設定します。
# openstack-config --set /etc/nova/nova.conf \ DEFAULT compute_driver nova.virt.ironic.IronicDriver
Compute が Bare Metal Provisioning の正しい認証情報を使用するように設定します。
# openstack-config --set /etc/nova/nova.conf \ ironic admin_username ironic # openstack-config --set /etc/nova/nova.conf \ ironic admin_password PASSWORD # openstack-config --set /etc/nova/nova.conf \ ironic admin_url http://IDENTITY_IP:35357/v2.0 # openstack-config --set /etc/nova/nova.conf \ ironic admin_tenant_name service # openstack-config --set /etc/nova/nova.conf \ ironic api_endpoint http://IRONIC_API_IP:6385/v1
以下の値を置き換えてください。
- PASSWORD は、Bare Metal Provisioning が Identity との認証で使用するパスワードに置き換えます。
- IDENTITY_IP は、Identity をホストするサーバーの IP アドレスまたはホスト名に置き換えます。
- IRONIC_API_IP は、Bare Metal Provisioning API サービスをホストするサーバーの IP アドレスまたはホスト名に置き換えます。
コンピュートコントローラーノードで、コンピュートスケジューラーサービスを再起動します。
# systemctl restart openstack-nova-scheduler.service
コンピュートノードで、Compute サービスを再起動します。
# systemctl restart openstack-nova-compute.service