第4章 アンダークラウドのインストール

Red Hat OpenStack Platform 環境の構築では、最初にアンダークラウドシステムに director をインストールします。これには、必要なサブスクリプションやリポジトリーを有効化するために複数の手順を実行する必要があります。

4.1. director のインストールユーザーの作成

director のインストールプロセスでは、root 以外のユーザーがコマンドを実行する必要があります。以下のコマンドを使用して、stack という名前のユーザーを作成して、パスワードを設定します。

[root@director ~]# useradd stack
[root@director ~]# passwd stack  # specify a password

sudo を使用する際に、このユーザーがパスワードを要求されないようにします。

[root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack
[root@director ~]# chmod 0440 /etc/sudoers.d/stack

新規作成した stack ユーザーに切り替えます。

[root@director ~]# su - stack
[stack@director ~]$

stack ユーザーで director のインストールを続行します。

4.2. テンプレートとイメージ用のディレクトリーの作成

director はシステムのイメージと Heat テンプレートを使用して、オーバークラウド環境を構築します。これらのファイルを整理するには、イメージとテンプレート用にディレクトリーを作成するように推奨します。

$ mkdir ~/images
$ mkdir ~/templates

本ガイドのその他のセクションでは、この 2 つのディレクトリーを使用して特定のファイルを保存します。

4.3. システムのホスト名の設定

director には、インストールと設定プロセス用に完全修飾ドメイン名が必要です。これは、director のホストのホスト名を設定する必要がある場合があることを意味します。ホストのホスト名を確認します。

$ hostname    # Checks the base hostname
$ hostname -f # Checks the long hostname (FQDN)

どちらかのコマンドで正しいホスト名が出力されない、またはエラーが表示される場合には、hostnamectl でホスト名を設定します。

$ sudo hostnamectl set-hostname manager.example.com
$ sudo hostnamectl set-hostname --transient manager.example.com

director では、/etc/hosts にシステムのホスト名とベース名も入力する必要があります。たとえば、システムの名前が manager.example.com の場合は、/etc/hosts に以下のように入力する必要があります。

127.0.0.1   manager.example.com manager localhost localhost.localdomain localhost4 localhost4.localdomain4

4.4. システムの登録

Red Hat OpenStack Platform director をインストールするには、まず Red Hat Subscription Manager を使用してホストシステムを登録し、必要なチャンネルをサブスクライブします。

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

$ sudo subscription-manager register

Red Hat OpenStack Platform director のエンタイトルメントプール ID を検索します。以下に例を示します。

$ sudo subscription-manager list --available --all --matches="*OpenStack*"
Subscription Name:   Name of SKU
Provides:            Red Hat Single Sign-On
                     Red Hat Enterprise Linux Workstation
                     Red Hat CloudForms
                     Red Hat OpenStack
                     Red Hat Software Collections (for RHEL Workstation)
                     Red Hat Virtualization
SKU:                 SKU-Number
Contract:            Contract-Number
Pool ID:             Valid-Pool-Number-123456
Provides Management: Yes
Available:           1
Suggested:           1
Service Level:       Support-level
Service Type:        Service-Type
Subscription Type:   Sub-type
Ends:                End-date
System Type:         Physical

Pool ID の値を特定して、Red Hat OpenStack Platform 10 のエンタイトルメントをアタッチします。

$ sudo subscription-manager attach --pool=Valid-Pool-Number-123456

デフォルトのリポジトリーをすべて無効にしてから、必要な Red Hat Enterprise Linux リポジトリーを有効にします。

$ sudo subscription-manager repos --disable=*
$ sudo subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-extras-rpms --enable=rhel-7-server-rh-common-rpms --enable=rhel-ha-for-rhel-7-server-rpms --enable=rhel-7-server-openstack-10-rpms

これらのリポジトリーには、director のインストールに必要なパッケージが含まれます。

重要

「リポジトリーの要件」でリストしたリポジトリーのみを有効にします。追加のリポジトリーを使用すると、パッケージとソフトウェアの競合が発生する場合があります。他のリポジトリーは有効にしないでください。

システムで更新を実行して、ベースシステムパッケージを最新の状態にします。

$ sudo yum update -y
$ sudo reboot

システムは、director をインストールできる状態になりました。

4.5. director パッケージのインストール

以下のコマンドを使用して、director のインストールと設定に必要なコマンドラインツールをインストールします。

$ sudo yum install -y python-tripleoclient

これにより、director のインストールに必要なパッケージがすべてインストールされます。

4.6. director の設定

director のインストールプロセスには、ネットワーク設定を判断する特定の設定が必要です。この設定は、stack ユーザーのホームディレクトリーに undercloud.conf として配置されているテンプレートに保存されています。

Red Hat は、インストールに必要な設定を判断しやすいように、基本テンプレートを提供しています。このテンプレートを stack ユーザーのホームディレクトリーにコピーします。

$ cp /usr/share/instack-undercloud/undercloud.conf.sample ~/undercloud.conf

undercloud.conf ファイルには、アンダークラウドを設定するための設定値が含まれています。パラメーターを省略したり、コメントアウトした場合には、アンダークラウドのインストールでデフォルト値が使用されます。

テンプレートには [DEFAULT] および [auth] の 2 つのセクションが含まれます。[DEFAULT] セクションには以下のパラメーターが含まれます。

undercloud_hostname
アンダークラウドの完全修飾ホスト名を定義します。設定すると、アンダークラウドのインストールで全システムのホスト名が設定されます。未設定のままにすると、アンダークラウドは現在のホスト名を使用しますが、ユーザーは適切に全システムのホスト名の設定を行う必要があります。
local_ip
director のプロビジョニング NIC 用に定義する IP アドレス。これは、director が DHCP および PXE ブートサービスに使用する IP アドレスでもあります。環境内の既存の IP アドレスまたはサブネットと競合するなど、プロビジョニングネットワークに別のサブネットを使用する場合以外は、この値はデフォルトの 192.0.2.1/24 のままにします。
network_gateway

オーバークラウドインスタンスのゲートウェイ。外部ネットワークにトラフィックを転送するアンダークラウドのホストです。director に別の IP アドレスを使用する場合または外部ゲートウェイを直接使用する場合以外は、この値はデフォルト (192.0.2.1) のままにします。

注記

director の設定スクリプトは、適切な sysctl カーネルパラメーターを使用して IP フォワーディングを自動的に有効にする操作も行います。

undercloud_public_vip
SSL/TLS 経由の director のパブリック API エンドポイントに定義する IP アドレスまたはホスト名。director の設定により、IP アドレスは /32 ネットマスクを使用するルーティングされた IP アドレスとして director のソフトウェアブリッジに接続されます。
undercloud_admin_vip
SSL/TLS 経由の director の管理 API エンドポイントに定義する IP アドレスまたはホスト名。director の設定により、IP アドレスは /32 ネットマスクを使用するルーティングされた IP アドレスとして director のソフトウェアブリッジに接続されます。
undercloud_service_certificate
OpenStack SSL 通信の証明書の場所とファイル名。理想的には、信頼できる認証局から、この証明書を取得します。それ以外の場合は、「付録A SSL/TLS 証明書の設定」のガイドラインを使用して独自の自己署名の証明書を作成します。これらのガイドラインには、自己署名の証明書か認証局からの証明書に拘らず、証明書の SELinux コンテキストを設定する方法が含まれています。
generate_service_certificate
アンダークラウドのインストール時に SSL 証明書を生成するかどうかを定義します。これは undercloud_service_certificate パラメーターに使用します。アンダークラウドのインストールで、作成された証明書 /etc/pki/tls/certs/undercloud-[undercloud_public_vip].pem を保存します。certificate_generation_ca パラメーターで定義される CA はこの証明書に署名します。
certificate_generation_ca
要求した証明書に署名する CA の certmonger のニックネーム。generate_service_certificate パラメーターを設定した場合のみこのオプションを使用します。local CA を選択する場合は、certmonger はローカルの CA 証明書を /etc/pki/ca-trust/source/anchors/cm-local-ca.pem に抽出して、トラストチェーンに追加します。
service_principal
この証明書を使用するサービスの Kerberos プリンシパル。CA で FreeIPA などの Kerberos プリンシパルが必要な場合にのみ使用します。
local_interface

director のプロビジョニング NIC 用に選択するインターフェース。これは、director が DHCP および PXE ブートサービスに使用するデバイスでもあります。この値を選択したデバイスに変更します。接続されているデバイスを確認するには、ip addr コマンドを使用します。ip addr コマンドの出力結果の例を、以下に示します。

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:75:24:09 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.178/24 brd 192.168.122.255 scope global dynamic eth0
       valid_lft 3462sec preferred_lft 3462sec
    inet6 fe80::5054:ff:fe75:2409/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noop state DOWN
    link/ether 42:0b:c2:a5:c1:26 brd ff:ff:ff:ff:ff:ff

この例では、外部 NIC は eth0 を、プロビジョニング NIC は未設定の eth1 を使用します。今回は、local_interfaceeth1 に設定します。この設定スクリプトにより、このインターフェースが inspection_interface パラメーターで定義したカスタムのブリッジにアタッチされます。

local_mtu
local_interface に使用する MTU。
network_cidr
オーバークラウドインスタンスの管理に director が使用するネットワーク。これは、アンダークラウドの neutron サービスが管理するプロビジョニングネットワークです。プロビジョニングネットワークに別のサブネットを使用しない限り、この値はデフォルト (192.0.2.0/24) のままにします。
masquerade_network
外部アクセスのためにマスカレードするネットワークを定義します。このパラメーターにより、director 経由で外部ネットワークにアクセスすることができるように、プロビジョニングネットワークにネットワークアドレス変換 (NAT) の一部メカニズムが提供されます。プロビジョニングネットワークに別のサブネットを使用しない限り、この値はデフォルト (192.0.2.0/24) のままにします。
dhcp_start、dhcp_end
オーバークラウドノードの DHCP 割り当て範囲 (開始アドレスと終了アドレス)。ノードを割り当てるのに十分な IP アドレスがこの範囲に含まれるようにします。
hieradata_override
hieradata オーバーライドファイルへのパス。設定すると、アンダークラウドのインストールでこのファイルが /etc/puppet/hieradata にコピーされ、階層の最初のファイルに設定されます。これを使用して、undercloud.conf パラメーター以外のカスタム設定をサービスに指定します。
net_config_override
ネットワーク設定のオーバーライドテンプレートへのパス。これを設定すると、アンダークラウドは JSON 形式のテンプレートを使用して os-net-config でネットワークを設定します。これは、undercloud.conf に設定されているネットワークパラメーターを無視します。/usr/share/instack-undercloud/templates/net-config.json.template の例を参照してください。
inspection_interface
ノードのイントロスペクションに director が使用するブリッジ。これは、director の設定により作成されるカスタムのブリッジです。LOCAL_INTERFACE でこのブリッジをアタッチします。これは、デフォルトの br-ctlplane のままにします。
inspection_iprange
director のイントロスペクションサービスが PXE ブートとプロビジョニングプロセスの際に使用する IP アドレス範囲。コンマ区切りの値を使用して、開始アドレスと終了アドレスを定義します。たとえば、192.0.2.100,192.0.2.120 のように指定します。この範囲には、使用するノードに十分な数の IP アドレスが含まれるようにし、dhcp_startdhcp_end の範囲とは競合しないように設定してください。
inspection_extras
イントロスペクション時に追加のハードウェアコレクションを有効化するかどうかを定義します。イントロスペクションイメージでは python-hardware または python-hardware-detect パッケージが必要です。
inspection_runbench
ノードイントロスペクション時に一連のベンチマークを実行します。有効にするには、true に設定します。このオプションは、登録ノードのハードウェアを検査する際にベンチマーク分析を実行する場合に必要です。詳しくは、「ノードのハードウェアの検査」を参照してください。
inspection_enable_uefi
UEFI のみのファームウェアを使用するノードのイントロスペクションをサポートするかどうかを定義します。詳しい情報は、「付録D 代替ブートモード」を参照してください。
undercloud_debug
アンダークラウドサービスのログレベルを DEBUG に設定します。この値を true に設定して有効にします。
enable_tempest
検証ツールをインストールするかどうかを定義します。デフォルトは、false に設定されていますが、true で有効化することができます。
enable_mistral
アンダークラウドに OpenStack Workflow サービス (mistral) をインストールするかどうかを定義します。
enable_zaqar
アンダークラウドに OpenStack Messaging サービス (zaqar) をインストールするかどうかを定義します。
ipxe_enabled
iPXE か標準の PXE のいずれを使用するか定義します。デフォルトは true で iPXE を有効化します。false に指定すると、標準の PXE に設定されます。詳しい情報は、「付録D 代替ブートモード」を参照してください。
enable_telemetry
アンダークラウドに OpenStack Telemetry (ceilometer、aodh) サービスをインストールするかどうかを定義します。デフォルト値は false で、アンダークラウド上の telemetry が無効になります。このパラメーターは、Red Hat CloudForms などのメトリックデータを消費する他の製品を使用している場合に必要です。
enable_ui
director の Web UI をインストールするかどうかを定義します。これにより、グラフィカル Web インターフェースを使用して、オーバークラウドのプランニングやデプロイメントが可能になります。詳しい情報は、「6章Web UI を使用した基本的なオーバークラウド要件の設定」を参照してください。UI は、undercloud_service_certificate または generate_service_certificate のいずれかを使用して SSL/TLS を有効化している場合にのみ使用できる点にご注意ください。
enable_validations
検証の実行に必要なアイテムをインストールするかどうかを定義します。
store_events
アンダークラウドに OpenStack Telemetry (ceilomete) のイベントを保管するかどうかを定義します。
scheduler_max_attempts
スケジューラーがインスタンスのデプロイを試行する最大回数。これは、スケジューリング時に競合状態にならないように、1 度にデプロイする予定のベアメタルノードの数以上に指定するようにしてください。

[auth] セクションには以下のパラメーターが含まれます。

undercloud_db_password、undercloud_admin_token、undercloud_admin_password、undercloud_glance_passwm など

残りのパラメーターは、全 director サービスのアクセス詳細を指定します。値を変更する必要はありません。undercloud.conf で空欄になっている場合には、これらの値は director の設定スクリプトによって自動的に生成されます。設定スクリプトの完了後には、すべての値を取得することができます。

重要

これらのパラメーターの設定ファイルの例では、プレースホルダーの値に <None> を使用しています。これらの値を <None> に設定すると、デプロイメントでエラーが発生します。

これらのパラメーターの値は、ネットワークに応じて変更してください。完了したら、ファイルを保存して以下のコマンドを実行します。

$ openstack undercloud install

このコマンドで、director の設定スクリプトを起動します。director により、追加のパッケージがインストールされ、undercloud.conf の設定に合わせてサービスを設定します。このスクリプトは、完了までに数分かかります。

設定スクリプトにより、完了時には 2 つのファイルが生成されます。

  • undercloud-passwords.conf: director サービスの全パスワード一覧
  • stackrc: director のコマンドラインツールへアクセスできるようにする初期化変数セット

この設定により、OpenStack Platform のすべてのサービスも自動的に起動します。以下のコマンドを使用して、有効化されたサービスを確認してください。

$ sudo systemctl list-units openstack-*

stack ユーザーを初期化してコマンドラインツールを使用するには、以下のコマンドを実行します。

$ source ~/stackrc

これで、director のコマンドラインツールが使用できるようになりました。

4.7. オーバークラウドノードのイメージの取得

director では、オーバークラウドのノードをプロビジョニングする際に、複数のディスクが必要です。必要なディスクは以下のとおりです。

  • イントロスペクションのカーネルおよび ramdisk: PXE ブートでベアメタルシステムのイントロスペクションに使用
  • デプロイメントカーネルおよび ramdisk: システムのプロビジョニングおよびデプロイメントに使用
  • オーバークラウドカーネル、ramdisk、完全なイメージ: ノードのハードディスクに書き込まれるベースのオーバークラウドシステム

rhosp-director-images および rhosp-director-images-ipa パッケージからこれらのイメージを取得します。

$ sudo yum install rhosp-director-images rhosp-director-images-ipa

stack ユーザーのホーム (/home/stack/images) の images ディレクトリーにアーカイブを展開します。

$ cd ~/images
$ for i in /usr/share/rhosp-director-images/overcloud-full-latest-10.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-10.0.tar; do tar -xvf $i; done

これらのイメージを director にインポートします。

$ openstack overcloud image upload --image-path /home/stack/images/

このコマンドにより、bm-deploy-kernelbm-deploy-ramdiskovercloud-fullovercloud-full-initrdovercloud-full-vmlinuz のイメージが director にアップロードされますこれらは、デプロイメントとオーバークラウド用のイメージです。スクリプトにより、director の PXE サーバー上にイントロスペクションイメージもインストールされます。

CLI でイメージ一覧を表示します。

$ openstack image list
+--------------------------------------+------------------------+
| ID                                   | Name                   |
+--------------------------------------+------------------------+
| 765a46af-4417-4592-91e5-a300ead3faf6 | bm-deploy-ramdisk      |
| 09b40e3d-0382-4925-a356-3a4b4f36b514 | bm-deploy-kernel       |
| ef793cd0-e65c-456a-a675-63cd57610bd5 | overcloud-full         |
| 9a51a6cb-4670-40de-b64b-b70f4dd44152 | overcloud-full-initrd  |
| 4f7e33f4-d617-47c1-b36f-cbe90f132e5d | overcloud-full-vmlinuz |
+--------------------------------------+------------------------+

この一覧には、イントロスペクションの PXE イメージは表示されません。director は、これらのファイルを /httpboot にコピーします。

[stack@host1 ~]$ ls -l /httpboot
total 341460
-rwxr-xr-x. 1 root root   5153184 Mar 31 06:58 agent.kernel
-rw-r--r--. 1 root root 344491465 Mar 31 06:59 agent.ramdisk
-rw-r--r--. 1 root root       337 Mar 31 06:23 inspector.ipxe
注記

デフォルトの overcloud-full.qcow2 イメージは、フラットなパーティションイメージです。ただし、完全なディスクイメージをインポートして使用することも可能です。詳しくは、「付録C 完全なディスクイメージ」を参照してください。

4.8. アンダークラウドの Neutron サブネットでのネームサーバーの設定

オーバークラウドで cdn.redhat.com などの外部のホスト名を解決する予定の場合は、オーバークラウドノード上にネームサーバーを設定することを推奨します。ネットワークを分離していない標準のオーバークラウドの場合には、ネームサーバーはアンダークラウドの neutron サブネットを使用して定義されます。環境でネームサーバーを定義するには、以下のコマンドを使用します。

$ openstack subnet list
$ openstack subnet set --dns-nameserver [nameserver1-ip] --dns-nameserver [nameserver2-ip] [subnet-uuid]

サブネットを表示してネームサーバーを確認します。

$ openstack subnet show [subnet-uuid]
+-------------------+-----------------------------------------------+
| Field             | Value                                         |
+-------------------+-----------------------------------------------+
| ...               |                                               |
| dns_nameservers   | 8.8.8.8                                       |
| ...               |                                               |
+-------------------+-----------------------------------------------+
重要

サービストラフィックを別のネットワークに分離する場合は、オーバークラウドのノードはネットワーク環境ファイルの DnsServer パラメーターを使用します。

4.9. アンダークラウドのバックアップ

Red Hat では、アンダークラウドホストおよび Red Hat OpenStack Platform director から重要なデータのバックアップを作成するプロセスを提供しています。アンダークラウドのバックアップについての詳しい情報は、『director のアンダークラウドのバックアップと復元』を参照してください。

4.10. アンダークラウド設定の完了

これで アンダークラウドの設定が完了しました。次の章では、ノードの登録、検査、さまざまなノードロールのタグ付けなど、オーバークラウドの基本的な設定について説明します。