Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
9.2. Orchestration サービスの設定
Orchestration サービスを設定するには、以下のタスクを行う必要があります。
- Orchestration サービス用のデータベースの設定
- 各 Orchestration API サービスと対応する IP アドレスのバインド
- Orchestration サービス用のアイデンティティーレコードの作成/設定
- Orchestration サービスが Identity サービスを使用して認証を行う方法の設定
以下のセクションでは、これらの各手順について詳しく説明します。
9.2.1. Orchestration サービスのデータベース接続の設定
Orchestration サービスにより使用されるデータベースおよびデータベースユーザーを作成します。Orchestration サービスで使用されるデータベース接続文字列は、
/etc/heat/heat.conf
ファイルで定義されます。有効なデータベースサーバーを参照するように更新してから、サービスを起動する必要があります。以下の手順で記載のステップはすべて、データベースサーバーに root
ユーザーでログインして実行する必要があります。
手順9.1 Orchestration サービスのデータベースの接続の設定
- データベースサービスに接続します。
#
mysql -u root -p
heat
データベースを作成します。mysql>
CREATE DATABASE heat;heat
という名前のデータベースユーザーを作成して、heat
データベースへのアクセスを許可します。mysql>
GRANT ALL ON heat.* TO 'heat'@'%' IDENTIFIED BY 'PASSWORD';mysql>
GRANT ALL ON heat.* TO 'heat'@'localhost' IDENTIFIED BY 'PASSWORD';PASSWORD は、このユーザーとしてデータベースサーバーとの認証を行う際に使用するセキュアなパスワードに置き換えます。- データベースの特権をフラッシュして、設定が即時に反映されるようにします。
mysql>
FLUSH PRIVILEGES; - mysql クライアントを終了します。
mysql>
quit sql_connection
設定キーの値を設定します。#
openstack-config --set /etc/heat/heat.conf \
DEFAULT sql_connection mysql://heat:PASSWORD@IP/heat
以下の値を置き換えてください。- PASSWORD は
heat
データベースユーザーのパスワードに置き換えます。 - IP は、Identity サーバーの IP アドレスまたはホスト名に置き換えます。
heat
ユーザーとしてデータベースを同期します。#
runuser -s /bin/sh heat -c "heat-manage db_sync"
重要
この接続設定キーに指定する IP アドレスまたはホスト名は、Orchestration サービスのデータベースの作成時に Orchestration サービスのデータベースユーザーがアクセスを許可された IP アドレスまたはホスト名と一致する必要があります。また、データベースがローカルでホストされ、Orchestration サービスのデータベースの作成時に「localhost」へのアクセス権を付与した場合には、「localhost」と入力する必要があります。
9.2.2. 各 Orchestration API サービスのバインドアドレスの制限
データベースを設定した後には、各 Orchestration API サービスの
bind_host
設定を設定します。この設定は、サービスが受信接続に使用する必要のある IP アドレスを制御します。
各 Orchestration API サービスの
bind_host
設定を設定します。
#
openstack-config --set /etc/heat/heat.conf
heat_api bind_host IP
#
openstack-config --set /etc/heat/heat.conf
heat_api_cfn bind_host IP
#
openstack-config --set /etc/heat/heat.conf
heat_api_cloudwatch bind_host IP
IP は、対応する API が使用する必要のあるアドレスに置き換えます。
9.2.3. Orchestration サービス用のアイデンティティーレコードの作成
Orchestration サービスで必要な Identity サービスを作成して設定します。これらのエントリーは、Orchestration サービスによって提供されるボリューム機能を検索してアクセスを試みる他の OpenStack サービスを補助します。
以下の手順では、管理ユーザーと
services
テナントが作成済みであることを前提としています。詳しい説明は、以下のリンクを参照してください。
以下の手順は、Identity サービスサーバーまたは
keystonerc_admin
ファイルをコピーして keystone コマンドラインユーティリティーをインストールした任意のマシンで実行してください。
手順9.2 Orchestration サービス用のアイデンティティーレコードの作成
- Keystone に管理ユーザーとしてアクセスするためのシェルを設定します。
#
source ~/keystonerc_admin
heat
ユーザーを作成します。[(keystone_admin)]#
openstack user create --password PASSWORD heat
+----------+----------------------------------+ | Field | Value | +----------+----------------------------------+ | email | None | | enabled | True | | id | 5902673a8d3a4552b813dff31717476b | | name | heat | | username | heat | +----------+----------------------------------+PASSWORD は、Orchestration サービスが Identity サービスとの認証を行う際に使用するセキュアなパスワードに置き換えます。services
テナントのコンテキスト内で、heat
ユーザーとadmin
ロールを関連付けます。[(keystone_admin)]#
openstack role add --project services --user heat admin
heat
およびheat-cfn
のサービスエントリーを作成します。[(keystone_admin)]#
openstack service create --name heat orchestration
[(keystone_admin)]#
openstack service create --name heat-cfn cloudformation
heat
およびheat-cfn
のサービス用のエンドポイントエントリーを作成します。[(keystone_admin)]#
openstack endpoint create \
--publicurl 'HEAT_CFN_IP:8000/v1' \
--adminurl 'HEAT_CFN_IP:8000/v1' \
--internalurl 'HEAT_CFN_IP:8000/v1' \
--region RegionOne \
heat-cfn
[(keystone_admin)]#
openstack endpoint create \
--publicurl 'HEAT_IP:8004/v1/%(tenant_id)s' \
--adminurl 'HEAT_IP:8004/v1/%(tenant_id)s' \
--internalurl 'HEAT_IP:8004/v1/%(tenant_id)s' \
--region RegionOne \
heat
以下の値を置き換えてください。- HEAT_CFN_IP は、
heat-cfn
サービスをホストするシステムの IP アドレスまたはホスト名に置き換えます。 - HEAT_IP は、
heat
サービスをホストするシステムの IP アドレスまたはホスト名に置き換えます。
重要
HEAT_CFN_IP および HEAT_IP の値には、http://
プレフィックスを付けます。
9.2.3.1. Orchestration サービス用の必須 Identity ドメインの作成
Orchestration サービスは、独自の Identity ドメインが必要です。このドメインを利用して、ユーザーを作成して、
heat
スタックが所有するインスタンス内にデプロイされた認証情報を関連付けることができます。また、別のドメインを使用することで、インスタンスとスタックをデプロイするユーザーを分離することができます。これにより、一般ユーザーは管理者権限がなくとも、このような認証情報を必要とする heat
スタックをデプロイすることができます。
手順9.3 Orchestration サービス用の Identity サービスのドメインの作成
heat
ドメインを作成します。#
openstack --os-url=http://IDENTITY_IP:5000/v3 \
--os-identity-api-version=3 \
--description "Owns users and projects created by heat"
domain create heat
IP は、Identity サービスをホストするサーバーの IP アドレスまたはホスト名に置き換えます。このコマンドにより、heat
ドメインのドメイン ID が返されるはずです。この ID (HEAT_DOMAIN_ID) は次のステップで使用します。heat
ドメイン内で管理者権限を持つことのできるheat_domain_admin
という名前のユーザーを作成します。#
openstack --os-url=http://IDENTITY_IP:5000/v3 \
--os-identity-api-version=3 user create heat_domain_admin \
--password PASSWORD \
--domain HEAT_DOMAIN_ID \
--description "Manages users and projects created by heat"
PASSWORD は、このユーザーのパスワードに置き換えます。上記のコマンドによりユーザー ID (DOMAIN_ADMIN_ID) が返されます。この ID は、次のステップで使用します。heat_domain_admin
ユーザーに、heat
ドメイン内の管理者権限を付与します。#
openstack --os-url=http://IDENTITY_IP:5000/v3 \
--os-identity-api-version=3 role add --user DOMAIN_ADMIN_ID \
--domain HEAT_DOMAIN_ID admin
- Orchestration サービスをホストするサーバー上で、Orchestration サービスが
heat
ドメインとユーザーを使用するように設定します。#
openstack-config --set /etc/heat/heat.conf \
DEFAULT stack_domain_admin_password DOMAIN_PASSWORD
#
openstack-config --set /etc/heat/heat.conf \
DEFAULT stack_domain_admin heat_domain_admin
#
openstack-config --set /etc/heat/heat.conf \
DEFAULT stack_user_domain HEAT_DOMAIN_ID
9.2.4. Orchestration サービスの認証設定
Orchestration サービスが認証に Identity サービスを使用するように設定します。以下の手順に記載するステップはすべて、Orchestration サービスをホストする各システムに
root
ユーザーとしてログインして実行する必要があります。
手順9.4 Orchestration サービスが Identity サービスを使用して認証を行うための設定
- Orchestration サービスが正しいテナントとして認証を行うように設定します。
#
openstack-config --set /etc/heat/heat.conf \
keystone_authtoken admin_tenant_name services
services は、Orchestration サービスを使用するために作成したテナントの名前に置き換えます。本ガイドの例では、services
を使用しています。 - Orchestration サービスが
heat
管理ユーザーアカウントを使用して認証を行うように設定します。#
openstack-config --set /etc/heat/heat.conf \
keystone_authtoken admin_user heat
- Orchestration サービスが正しい
heat
管理ユーザーアカウントパスワードを使用するように設定します。#
openstack-config --set /etc/heat/heat.conf \
keystone_authtoken admin_password PASSWORD
PASSWORD は、heat
ユーザーの作成時に設定したパスワードに置き換えます。 - Orchestration サービスが使用する必要のある Identity サービスのホストを設定します。
#
openstack-config --set /etc/heat/heat.conf \
keystone_authtoken service_host KEYSTONE_HOST
#
openstack-config --set /etc/heat/heat.conf \
keystone_authtoken auth_host KEYSTONE_HOST
#
openstack-config --set /etc/heat/heat.conf \
keystone_authtoken auth_uri http://KEYSTONE_HOST:35357/v2.0
#
openstack-config --set /etc/heat/heat.conf \
keystone_authtoken keystone_ec2_uri http://KEYSTONE_HOST:35357/v2.0
KEYSTONE_HOST は、Identity サービスをホストするサーバーの IP アドレスまたはホスト名に置き換えます。Identity サービスが同じシステムでホストされている場合には、127.0.0.1
を使用してください。 - 仮想マシンインスタンスの接続先となる
heat-api-cfn
およびheat-api-cloudwatch
のサービスのホスト名を設定します。#
openstack-config --set /etc/heat/heat.conf \
DEFAULT heat_metadata_server_url HEAT_CFN_HOST:8000
#
openstack-config --set /etc/heat/heat.conf \
DEFAULT heat_waitcondition_server_url HEAT_CFN_HOST:8000/v1/waitcondition
#
openstack-config --set /etc/heat/heat.conf \
DEFAULT heat_watch_server_url HEAT_CLOUDWATCH_HOST:8003
以下の値を置き換えてください。- HEAT_CFN_HOST は、
heat-api-cfn
サービスをホストするサーバーの IP アドレスまたはホスト名に置き換えます。 - HEAT_CLOUDWATCH_HOST は、
heat-api-cloudwatch
サービスをホストするサーバーの IP アドレスまたはホスト名に置き換えます。
重要
全サービスが同じシステム上でホストされている場合でも、127.0.0.1
はどのサービスホスト名にも使用しないでください。この IP アドレスは、各インスタンスのローカルホストを参照するので、そのインスタンスが実際のサービスに到達できなくなります。 - アプリケーションテンプレートは、オーケストレーションに WaitCondition とシグナル送信を使用します。進捗データを受信するユーザーの Identity ロールを定義してください。デフォルトでは、このロールは
heat_stack_user
です。#
openstack-config --set /etc/heat/heat.conf \
DEFAULT heat_stack_user_role heat_stack_user
9.2.5. Orchestration サービスのための RabbitMQ メッセージブローカーの設定
RabbitMQ はデフォルト (かつ推奨の) メッセージブローカーです。RabbitMQ メッセージングサービスは、rabbitmq-server パッケージにより提供されます。以下の手順で記載する全ステップは、Orchestration コントローラーサービスをホストするシステムに
root
ユーザーとしてログインして実行する必要があります。
手順9.5 Orchestration サービスが RabbitMQ メッセージブローカーを使用するための設定
- RPC バックエンドとして RabbitMQ を設定します。
#
openstack-config --set /etc/heat/heat.conf \
DEFAULT rpc_backend heat.openstack.common.rpc.impl_kombu
- Orchestration サービスが RabbitMQ ホストに接続するように設定します。
#
openstack-config --set /etc/heat/heat.conf \
DEFAULT rabbit_host RABBITMQ_HOST
RABBITMQ_HOST は、メッセージブローカーの IP アドレスまたはホスト名に置き換えます。 - メッセージブローカーのポートを
5672
に設定します。#
openstack-config --set /etc/heat/heat.conf \
DEFAULT rabbit_port 5672
- RabbitMQ の設定時に Orchestration サービス用に作成した RabbitMQ ユーザー名とパスワードを設定します。
#
openstack-config --set /etc/heat/heat.conf \
DEFAULT rabbit_userid heat
#
openstack-config --set /etc/heat/heat.conf \
DEFAULT rabbit_password HEAT_PASS
heat
および HEAT_PASS は、Orchestration サービス用に作成した RabbitMQ ユーザー名とパスワードに置き換えます。 - RabbitMQ の起動時に、
heat
ユーザーに全リソースに対するパーミッションが付与されます。このアクセスは、特別に仮想ホスト/
を介して行われます。Orchestration サービスがこの仮想ホストに接続されるように設定します。#
openstack-config --set /etc/heat/heat.conf \
DEFAULT rabbit_virtual_host /
9.2.6. Orchestration サービスとメッセージブローカーとの間の SSL 通信の有効化
メッセージブローカーで SSL を有効化した場合は、Orchestration サービスも相応に設定する必要があります。以下の手順では、エクスポートしたクライアントの証明書とキーファイルが必要です。これらのファイルのエクスポートの方法に関する説明は、「クライアント用 SSL 証明書のエクスポート」を参照してください。
手順9.6 Orchestration サービスと RabbitMQ メッセージブローカーとの間の SSL 通信の有効化
- メッセージブローカーとの SSL 通信を有効化します。
#
openstack-config --set /etc/heat/heat.conf \
DEFAULT rabbit_use_ssl True
#
openstack-config --set /etc/heat/heat.conf \
DEFAULT kombu_ssl_certfile /path/to/client.crt
#
openstack-config --set /etc/heat/heat.conf \
DEFAULT kombu_ssl_keyfile /path/to/clientkeyfile.key
以下の値を置き換えてください。- /path/to/client.crt はエクスポートされたクライアント証明書の絶対パスに置き換えます。
- /path/to/clientkeyfile.key はエクスポートされたキーファイルの絶対パスに置き換えます。
- 証明書がサードパーティーの認証局 (CA) によって署名されている場合には、次のコマンドを実行する必要もあります。
#
openstack-config --set /etc/heat/heat.conf \
DEFAULT kombu_ssl_ca_certs /path/to/ca.crt
/path/to/ca.crt は、サードパーティー CA によって提供された CA ファイルの絶対パスに置き換えます (詳細は 「RabbitMQ メッセージブローカーでの SSL の有効化」 を参照)。