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」へのアクセス権を付与した場合には、「localost」と入力する必要があります。
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)]# keystone user-create --name heat --pass PASSWORD +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | | | enabled | True | | id | 96cd855e5bfe471ce4066794bbafb615 | | name | heat | | username | heat | +----------+----------------------------------+PASSWORD は、Orchestration サービスが Identity サービスとの認証を行う際に使用するセキュアなパスワードに置き換えます。servicesテナントのコンテキスト内で、heatユーザーとadminロールを関連付けます。[(keystone_admin)]# keystone user-role-add --user heat --role admin --tenant servicesheatおよびheat-cfnのサービスエントリーを作成します。[(keystone_admin)]# keystone service-create --name heat \ --type orchestration # keystone service-create --name heat-cfn \ --type cloudformationheatおよびheat-cfnのサービス用のエンドポイントエントリーを作成します。[(keystone_admin)]# keystone endpoint-create \ --service heat-cfn \ --publicurl 'HEAT_CFN_IP:8000/v1' \ --adminurl 'HEAT_CFN_IP:8000/v1' \ --internalurl 'HEAT_CFN_IP:8000/v1' \ --region 'RegionOne' [(keystone_admin)]# keystone endpoint-create \ --service heat \ --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_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 サービスのドメインの作成
- Identity サービスが使用する管理トークンを取得します。このトークンは、Identity サーバーの
/etc/keystone/keystone.confファイル内のadmin_token設定キーです。# cat /etc/keystone/keystone.conf | grep admin_token admin_token = 0292d404a88c4f269383ff28a3839ab4管理トークンは、管理者の認証情報を必要とする全アクションを実行する際に使用します。 - ドメインの作成/設定に使用する Red Hat Enterprise Linux 7.1 ホストに python-openstackclient パッケージをインストールします。
# yum install python-openstackclientRed Hat Enterprise Linux 7.1 から、本手順の残りのステップを実行します。 heatドメインを作成します。# openstack --os-token ADMIN_TOKEN --os-url=IDENTITY_IP:5000/v3 \ --os-identity-api-version=3 domain create heat \ --description "Owns users and projects created by heat"以下の値を置き換えてください。- ADMIN_TOKEN は、管理トークンに置き換えます。
- IP は、Identity サービスをホストするサーバーの IP アドレスまたはホスト名に置き換えます。
このコマンドにより、heatドメインのドメイン ID が返されるはずです。この ID (HEAT_DOMAIN_ID) は次のステップで使用します。heatドメイン内で管理者権限を持つことのできるheat_domain_adminという名前のユーザーを作成します。# openstack --os-token ADMIN_TOKEN --os-url=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-token ADMIN_TOKEN --os-url=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 servicesservices は、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 PASSWORDPASSWORD は、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.0KEYSTONE_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_HOSTRABBITMQ_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_PASSheatおよび 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 の有効化」 を参照)。