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 サービスのデータベースの接続の設定

  1. データベースサービスに接続します。
    # mysql -u root -p
  2. heat データベースを作成します。
    mysql> CREATE DATABASE heat;
  3. heat という名前のデータベースユーザーを作成して、heat データベースへのアクセスを許可します。
    mysql> GRANT ALL ON heat.* TO 'heat'@'%' IDENTIFIED BY 'PASSWORD';
    mysql> GRANT ALL ON heat.* TO 'heat'@'localhost' IDENTIFIED BY 'PASSWORD';
    PASSWORD は、このユーザーとしてデータベースサーバーとの認証を行う際に使用するセキュアなパスワードに置き換えます。
  4. データベースの特権をフラッシュして、設定が即時に反映されるようにします。
    mysql> FLUSH PRIVILEGES;
  5. mysql クライアントを終了します。
    mysql> quit
  6. sql_connection 設定キーの値を設定します。
    # openstack-config --set /etc/heat/heat.conf \
       DEFAULT sql_connection mysql://heat:PASSWORD@IP/heat
    以下の値を置き換えてください。
    • PASSWORDheat データベースユーザーのパスワードに置き換えます。
    • IP は、Identity サーバーの IP アドレスまたはホスト名に置き換えます。
  7. 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 サービス用のアイデンティティーレコードの作成

  1. Keystone に管理ユーザーとしてアクセスするためのシェルを設定します。
    # source ~/keystonerc_admin
  2. heat ユーザーを作成します。
    [(keystone_admin)]# openstack user create --password PASSWORD heat
    +----------+----------------------------------+
    | Field    | Value                            |
    +----------+----------------------------------+
    | email    | None                             |
    | enabled  | True                             |
    | id       | 5902673a8d3a4552b813dff31717476b |
    | name     | heat                             |
    | username | heat                             |
    +----------+----------------------------------+
    PASSWORD は、Orchestration サービスが Identity サービスとの認証を行う際に使用するセキュアなパスワードに置き換えます。
  3. services テナントのコンテキスト内で、heat ユーザーと admin ロールを関連付けます。
    [(keystone_admin)]# openstack role add --project services --user heat admin
  4. heat および heat-cfn のサービスエントリーを作成します。
    [(keystone_admin)]# openstack service create --name heat orchestration
    [(keystone_admin)]# openstack service create --name heat-cfn cloudformation
  5. 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 サービスのドメインの作成

  1. 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) は次のステップで使用します。
  2. 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 は、次のステップで使用します。
  3. 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
  4. 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 サービスを使用して認証を行うための設定

  1. Orchestration サービスが正しいテナントとして認証を行うように設定します。
    # openstack-config --set /etc/heat/heat.conf \
       keystone_authtoken admin_tenant_name services
    services は、Orchestration サービスを使用するために作成したテナントの名前に置き換えます。本ガイドの例では、services を使用しています。
  2. Orchestration サービスが heat 管理ユーザーアカウントを使用して認証を行うように設定します。
    # openstack-config --set /etc/heat/heat.conf \
       keystone_authtoken admin_user heat
  3. Orchestration サービスが正しい heat 管理ユーザーアカウントパスワードを使用するように設定します。
    # openstack-config --set /etc/heat/heat.conf \
       keystone_authtoken admin_password PASSWORD
    PASSWORD は、heat ユーザーの作成時に設定したパスワードに置き換えます。
  4. 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 を使用してください。
  5. 仮想マシンインスタンスの接続先となる 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 アドレスは、各インスタンスのローカルホストを参照するので、そのインスタンスが実際のサービスに到達できなくなります。
  6. アプリケーションテンプレートは、オーケストレーションに 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 メッセージブローカーを使用するための設定

  1. RPC バックエンドとして RabbitMQ を設定します。
    # openstack-config --set /etc/heat/heat.conf \
       DEFAULT rpc_backend heat.openstack.common.rpc.impl_kombu
  2. Orchestration サービスが RabbitMQ ホストに接続するように設定します。
    # openstack-config --set /etc/heat/heat.conf \
       DEFAULT rabbit_host RABBITMQ_HOST
    RABBITMQ_HOST は、メッセージブローカーの IP アドレスまたはホスト名に置き換えます。
  3. メッセージブローカーのポートを 5672 に設定します。
    # openstack-config --set /etc/heat/heat.conf \
       DEFAULT rabbit_port 5672
  4. 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 ユーザー名とパスワードに置き換えます。
  5. 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 通信の有効化

  1. メッセージブローカーとの 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 はエクスポートされたキーファイルの絶対パスに置き換えます。
  2. 証明書がサードパーティーの認証局 (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 の有効化」 を参照)。