第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 サービスがどのように対話するかを示しています。

PXE プロビジョニングプロセス

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 ノードから設定するには、以下のステップを実行します。

  1. overcloudrc ファイルを読み込みます。

    # source ~stack/overcloudrc
  2. 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 はパスワードに置き換えます。

  3. OpenStack Bare Metal Provisioning サービスを作成します。

    # openstack service create --name ironic --description "Ironic bare metal provisioning service" baremetal
  4. 他の OpenStack が使用している仮想 IP (VIP) アドレスを確認します。

    # openstack endpoint list -c "Service Name" -c "PublicURL" --long

    このコマンドの出力には、指定したサービスとその Public URL が一覧表示されます。これらは通常すべて同じサーバー上にあり、同じ IP アドレスを使用します。

  5. Bare Metal Provisioning サービスのインストール先となるコンピュートノードの内部 API ネットワークのアドレスを取得します。

    # route -n

    このコマンドの出力には、IP ルーティングテーブルが IP アドレスと各 IP アドレス用の インターフェース とともに一覧表示されます。

    内部 API ネットワークのアドレスは、次にサービスエンドポイントの作成に使用されます。

  6. 以下のコマンドを実行すると、内部および管理用の URL に使用する NIC に関連付けられた IP アドレスをチェックすることができます。

    # ifconfig INTERFACE
  7. サービスエンドポイントを作成します。

    # 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_IDservice create コマンドを使用して作成した Bare Metal Provisioning サービスの ID に置き換えます。

次に、HAProxy を設定して、以前の手順で作成したエンドポイントのパブリック URL に対する要求を確実に受信するようにします。HAProxy の値を設定するには、コントローラーノードに root ユーザーとしてログインしてください。

  1. /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 回連続で成功すると、そのサーバーは利用可能と見なされます。
  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 デプロイメントが到達可能であることを確認する必要があります。

  1. 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 統合ブリッジには新規ブリッジへのパッチがないことが分かるはずです。

  2. 統合ブリッジに新規ブリッジを追加するには、以下のプラグインファイルを更新する必要があります。

    1. 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)。
    2. /etc/neutron/plugins/ml2/openvswitch_agent.ini ファイルで bridge_mappings パラメーターを見つけて以下のように更新します。

      bridge_mappings =datacentre:br-ex,ironicnet:br-ironic

      このコンマ区切りのキー/値のペアは、ベアメタルプロビジョニングネットワークの名前を、そのネットワークに接続された物理デバイスにマッピングします。

  3. neutron-openvswitch-agent.service を再起動して br-ironic ブリッジが統合ブリッジの一部になっていることを確認します。

    # systemctl restart neutron-openvswitch-agent.service
  4. neutron-server.service を再起動して、新規接続を検出します。

    # systemctl restart neutron-server.service
    注記

    このステップを実行しなかった場合には、OpenStack Networking サービス内でベアメタルプロビジョニングネットワークの作成を試みても、flat ネットワークが存在しないというメッセージが表示されて操作は失敗します。

1.3.1. Bare Metal Provisioning データベースの作成

Bare Metal Provisioning が使用するデータベースとデータベースユーザーを作成します。以下の手順のステップはすべて、データベースサーバーに root ユーザーとしてログインして実行する必要があります。

Bare Metal Provisioning データベースの作成

  1. データベースサービスに接続します。

    # mysql -u root
  2. ironic データベースを作成します。

    mysql> CREATE DATABASE ironic CHARACTER SET utf8;
  3. 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 は、このユーザーとしてデータベースサーバーとの認証を行う際に使用するセキュアなパスワードに置き換えます。

  4. データベースの特権をフラッシュして、設定が即時に反映されるようにします。

    mysql> FLUSH PRIVILEGES;
  5. 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 の設定

  1. OpenStack Compute が Bare Metal Provisioning スケジューラーホストマネージャーを使用するように設定します。

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT scheduler_host_manager nova.scheduler.ironic_host_manager.IronicHostManager
  2. コンピュートのスケジューラーがインスタンスの変更をトラッキングする機能を無効にします。

    # openstack-config --set /etc/nova/nova.conf DEFAULT scheduler_tracks_instance_changes false
  3. デフォルトのフィルターを以下のように設定します。

    # openstack-config --set /etc/nova/nova.conf DEFAULT baremetal_scheduler_default_filters AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter
  4. Compute がデフォルトの Bare Metal Provisioning スケジューリングフィルターを使用するように設定します。

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT scheduler_use_baremetal_filters True
  5. 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 アドレスまたはホスト名に置き換えます。
  6. nova データベースの認証情報を ironic コンピュートノードで設定します。

    # openstack-config --set /etc/nova/nova.conf database connection "mysql+pymysql://nova:NOVA_DB_PASSWORD@DB_IP/nova"
  7. コンピュートコントローラーノードで、コンピュートスケジューラーサービスを再起動します。

    # systemctl restart openstack-nova-scheduler.service
  8. コンピュートノードで、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 エントリーを追加することによって行うことができます。

  1. オーバークラウドコントローラーで DHCP エージェントが使用している dnsmasq ファイルを確認します。

    # grep ^dnsmasq_config_file /etc/neutron/dhcp_agent.ini
    
    dnsmasq_config_file =/etc/neutron/dnsmasq-neutron.conf
  2. このファイルを編集して、ファイルの末尾に以下の行を追記します。

    # Create the "ipxe" tag if request comes from iPXE user class
    
    dhcp-userclass=set:ipxe,iPXE
  3. ファイルを保存してから OpenStack Networking DHCP エージェントサービスを再起動します。

    # systemctl restart neutron-dhcp-agent.service

1.4. Bare Metal Provisioning に向けたコンピュートノードの設定

以下の手順は、Bare Metal Provisioning サービスを実行するコンピュートノードのみに適用します。これらのステップはコンピュートノード上で root ユーザーとして実行する必要があります。

コンピュートノードには、Bare Metal Provisioning 用の NIC (例: eth6) が設定されています。この手順は、以下を目的とします。

  1. Bare Metal Provisioning 用の NIC (この例では eth6) を Open vSwitch に接続します。
  2. ベアメタルサーバーは、iPXE プロセスの一環としてベアメタルノードからブートイメージをダウンロードする必要があるため、この接続に IP アドレスを割り当てます。

Open vSwitch への eth6 の接続

  1. 「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) には接続しません。

  2. 接続を作成するには、OpenStack Networking プラグインのファイルを以下のように更新する必要があります。

    1. 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)。
    2. /etc/neutron/plugins/ml2/openvswitch_agent.ini ファイルで bridge_mappings パラメーターを見つけて以下のように更新します。

      bridge_mappings =datacentre:br-ex,ironicnet:br-ironic

      このコンマ区切りのキー/値のペアは、ベアメタルプロビジョニングネットワークの名前を、そのネットワークに接続された物理デバイスにマッピングします。

  3. OpenStack Networking Open vSwitch エージェントサービスを再起動します。

    # systemctl restart neutron-openvswitch-agent.service

これで、本手順の最初の目的が達成されました。次は br-ironic ブリッジに IP アドレスを割り当てて、再起動後も永続するように設定します。

Bare Metal サーバーへの IP アドレスの割り当て

  1. /etc/sysconfig/network-scripts の場所に標準の設定ファイルを作成します。テナントネットワークですでに利用可能な ifcfg* ファイルをコピーして、deviceipaddrovs_bridgebridge name と、br-ironic および eth6MAC アドレスの値を編集します。新規ファイルの更新完了後には、以下のような値が設定されるはずです。

    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
  2. ネットワークブリッジを再起動して、IP アドレスを ping できる状態にします。

    # ifup br-ironic
    注記

    ネットワークサービスの再起動時にノードからの接続が切断された場合には、サーバーを再起動してください。

1.4.1. 必要なチャンネルのサブスクライブ

Bare Metal Provisioning のパッケージをインストールするには、サーバーを Red Hat サブスクリプションマネージャーに登録して、必要なチャンネルをサブスクライブする必要があります。コンピュートノードに Bare Metal Provisioning をインストールする場合は、サーバーはすでに適切にサブスクライブされている可能性があります。yum repolist コマンドを実行して、以下の手順に記載しているチャンネルが有効化されているかどうかを確認してください。

必要なチャンネルのサブスクライブ

  1. コンテンツ配信ネットワークにシステムを登録します。プロンプトが表示されたら、カスタマーポータルのユーザー名とパスワードを入力します。

    # subscription-manager register
  2. Bare Metal Provisioning のインストールに必要なチャンネルが含まれたエンタイトルメントプールを特定します。

    # subscription-manager list --available | grep -A13 "Red Hat Enterprise Linux Server"
    # subscription-manager list --available | grep -A13 "Red Hat OpenStack Platform"
  3. 上記のステップで特定したプール ID を使用して、Red Hat Enterprise Linux 7 Server および Red Hat OpenStack Platform のエンタイトルメントをアタッチします。

    # subscription-manager attach --pool=POOL_ID
  4. 必要なチャンネルを有効にします。

    # 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 の設定

  1. 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
  2. デフォルトでは、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
  3. 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 に送られるようにドキュメントルートを設定します。

  4. このファイルを保存してから、コンピュートノードで 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 で認証を行うための設定

  1. 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 アドレスまたはホスト名に置き換えます。

  2. Bare Metal Provisioning が service テナントとして認証を行うように設定します。

    # openstack-config --set /etc/ironic/ironic.conf \
       keystone_authtoken admin_tenant_name service
  3. Bare Metal Provisioning が ironic の管理ユーザーアカウントを使用して認証を行うように設定します。

    # openstack-config --set /etc/ironic/ironic.conf \
       keystone_authtoken admin_user ironic
  4. Bare Metal Provisioning が正しい ironic 管理ユーザーアカウントのパスワードを使用するように設定します。

    # openstack-config --set /etc/ironic/ironic.conf \
       keystone_authtoken admin_password PASSWORD

    PASSWORDironic ユーザーを作成した際に設定したパスワードに置き換えます。

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 の設定

  1. RabbitMQ を RPC バックエンドとして設定します。

    # openstack-config --set /etc/ironic/ironic.conf \
       DEFAULT rpc_backend ironic.openstack.common.rpc.impl_kombu
  2. Bare Metal Provisioning が RabbitMQ ホストに接続するように設定します。

    # openstack-config --set /etc/ironic/ironic.conf \
       oslo_messaging_rabbit rabbit_host RABBITMQ_HOST

    RABBITMQ_HOST は、メッセージブローカーをホストするサーバーの IP アドレスまたはホスト名に置き換えます。

  3. メッセージブローカーのポートを 5672 に設定します。

    # openstack-config --set /etc/ironic/ironic.conf \
       oslo_messaging_rabbit rabbit_port 5672
  4. 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 パスワードに置き換えます。

  5. 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. ベアメタルサーバーのプロビジョニングに使用するドライバー (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
  2. Bare Metal コンダクターサービスを再起動します。

    # systemctl restart openstack-ironic-conductor.service

1.4.4.5. Bare Metal Provisioning サービスが PXE を使用するための設定

  1. Bare Metal Provisioning サービスが PXE テンプレートを使用するように設定します。

    # openstack-config --set /etc/ironic/ironic.conf \
    pxe pxe_config_template \$pybasedir/drivers/modules/ipxe_config.template
  2. Bare Metal Provisioning サービスが tftp_server を使用するように設定します。

    # openstack-config --set /etc/ironic/ironic.conf \
    pxe tftp_server BARE_METAL_PROVISIONING_NETWORK_IP
  3. PXE tftp_root を設定します。

    # openstack-config --set /etc/ironic/ironic.conf \
    pxe tftp_root /tftpboot
  4. PXE ブート用のファイルの名前を設定します。

    # openstack-config --set /etc/ironic/ironic.conf \
    pxe pxe_bootfile_name undionly.kpxe
  5. Bare Metal Provisioning サービスが iPXE を使用するように有効化します。

    # openstack-config --set /etc/ironic/ironic.conf \
    pxe ipxe_enabled true
  6. http サーバーの URL を設定します。

    # openstack-config --set /etc/ironic/ironic.conf deploy http_url http://BARE_METAL_PROVISIONING_IP:8088
  7. 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 と通信するための設定

  1. Bare Metal Provisioning が OpenStack Networking エンドポイントを使用するように設定します。

    # openstack-config --set /etc/ironic/ironic.conf \
       neutron url http://NEUTRON_IP:9696

    NEUTRON_IP は OpenStack Networking をホストするサーバーの IP アドレスまたはホスト名に置き換えます。

  2. Bare Metal Provisioning が Image サービスと通信するように設定します。

    # openstack-config --set /etc/ironic/ironic.conf \
       glance glance_host GLANCE_IP

    GLANCE_IP は、Image サービスをホストするサーバーの IP アドレスまたはホスト名に置き換えます。

  3. Bare Metal Provisioning API サービスを起動して、ブート時に開始するように設定します。

    # systemctl start openstack-ironic-api.service
    # systemctl enable openstack-ironic-api.service
  4. Bare Metal Provisioning データベーステーブルを作成します。

    # ironic-dbsync --config-file /etc/ironic/ironic.conf create_schema
  5. 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 を使用するための設定

  1. Compute が Clustered Compute Manager を使用するように設定します。

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT compute_manager ironic.nova.compute.manager.ClusteredComputeManager
  2. 物理メモリーに対する仮想メモリーの割り当ての比率を設定します。

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT ram_allocation_ratio 1.0
  3. ホスト用に確保するディスク容量を MB 単位で設定します。

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT reserved_host_memory_mb 0
  4. OpenStack Compute が Bare Metal Provisioning ドライバーを使用するように設定します。

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT compute_driver nova.virt.ironic.IronicDriver
  5. 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 アドレスまたはホスト名に置き換えます。
  6. コンピュートコントローラーノードで、コンピュートスケジューラーサービスを再起動します。

    # systemctl restart openstack-nova-scheduler.service
  7. コンピュートノードで、Compute サービスを再起動します。

    # systemctl restart openstack-nova-compute.service