Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

8.9. メタデータサーバーのポーリング

デプロイメントは進行中ですが、CREATE_IN_PROGRESS の段階で一時停止されます。次のステップでは、オーバークラウドノードのオーケストレーションエージェントが director 上のメタデータサーバーをポーリングするように設定します。この操作には、2 つの方法があります。

重要

初期のデプロイメントの場合のみに自動設定を使用します。ノードをスケールアップする場合には自動設定を使用しないでください。

自動設定

director のコア Heat テンプレートコレクションには、オーバークラウドノード上で Heat エージェントの自動設定を行うスクリプトが含まれます。このスクリプトで、director との認証を行ってオーケストレーションサービスに対してクエリーを実行するには、stack ユーザーとして stackrc ファイルを読み込む必要があります。

[stack@director ~]$ source ~/stackrc

また、このスクリプトでは、追加の環境変数でノードのロールやその IP アドレスを定義する必要があります。これらの環境変数は以下のとおりです。

OVERCLOUD_ROLES
設定するロールのスペース区切りの一覧。これらのロールは、ロールデータファイルで定義したロールに相関します。
[ROLE]_hosts
ロールごとに、環境変数と、ロールに含まれるノードの IP アドレス (スペース区切りの一覧) が必要です。

以下のコマンドは、これらの環境変数の設定例です。

(undercloud) $ export OVERCLOUD_ROLES="ControllerDeployedServer ComputeDeployedServer"
(undercloud) $ export ControllerDeployedServer_hosts="192.168.100.2"
(undercloud) $ export ComputeDeployedServer_hosts="192.168.100.3"

スクリプトを実行して、各オーバークラウドノード上にオーケストレーションエージェントを設定します。

(undercloud) $ /usr/share/openstack-tripleo-heat-templates/deployed-server/scripts/get-occ-config.sh
注記

このスクリプトは、スクリプトを実行する同じユーザーを使用して SSH 経由で事前にプロビジョニングされたノードにアクセスします。今回の場合は、スクリプトは、stack ユーザーの認証を行います。

このスクリプトは、以下を行います。

  • 各ノードのメタデータ URL を確認するために director のオーケストレーションサービスにクエリーを実行します。
  • ノードにアクセスして、固有のメタデータ URL で各ノードのエージェントを設定します。
  • オーケストレーションエージェントサービスを再起動します。

スクリプトが完了したら、オーバークラウドノードは director 上でオーケストレーションサービスのポーリングを開始します。スタックのデプロイメントが続行されます。

手動による設定

事前にプロビジョニングされたノードでオーケストレーションエージェントを手動で設定する場合には、以下のコマンドを使用して、各ノードのメタデータ URL に関して director 上のオーケストレーションサービスにクエリーを実行します。

[stack@director ~]$ source ~/stackrc
(undercloud) $ for STACK in $(openstack stack resource list -n5 --filter name=deployed-server -c stack_name -f value overcloud) ; do STACKID=$(echo $STACK | cut -d '-' -f2,4 --output-delimiter " ") ; echo "== Metadata URL for $STACKID ==" ; openstack stack resource metadata $STACK deployed-server | jq -r '.["os-collect-config"].request.metadata_url' ; echo ; done

これにより、各ノードのスタック名やメタデータの URL が表示されます。

== Metadata URL for ControllerDeployedServer 0 ==
http://192.168.24.1:8080/v1/AUTH_6fce4e6019264a5b8283e7125f05b764/ov-edServer-ts6lr4tm5p44-deployed-server-td42md2tap4g/43d302fa-d4c2-40df-b3ac-624d6075ef27?temp_url_sig=58313e577a93de8f8d2367f8ce92dd7be7aac3a1&temp_url_expires=2147483586

== Metadata URL for ComputeDeployedServer 0 ==
http://192.168.24.1:8080/v1/AUTH_6fce4e6019264a5b8283e7125f05b764/ov-edServer-wdpk7upmz3eh-deployed-server-ghv7ptfikz2j/0a43e94b-fe02-427b-9bfe-71d2b7bb3126?temp_url_sig=8a50d8ed6502969f0063e79bb32592f4203a136e&temp_url_expires=2147483586

各オーバークラウドノード上で以下を行います。

  1. 既存の os-collect-config.conf テンプレートを削除します。これにより、手動の変更はエージェントにより上書きされなくなります。

    $ sudo /bin/rm -f /usr/libexec/os-apply-config/templates/etc/os-collect-config.conf
  2. /etc/os-collect-config.conf ファイルを対応するメタデータ URL を使用するように設定します。たとえば、コントローラーノードは以下を使用します。

    [DEFAULT]
    collectors=request
    command=os-refresh-config
    polling_interval=30
    
    [request]
    metadata_url=http://192.168.24.1:8080/v1/AUTH_6fce4e6019264a5b8283e7125f05b764/ov-edServer-ts6lr4tm5p44-deployed-server-td42md2tap4g/43d302fa-d4c2-40df-b3ac-624d6075ef27?temp_url_sig=58313e577a93de8f8d2367f8ce92dd7be7aac3a1&temp_url_expires=2147483586
  3. ファイルを保存します。
  4. os-collect-config サービスを再起動します。

    [stack@controller ~]$ sudo systemctl restart os-collect-config

サービスを設定して再起動した後に、オーケストレーションエージェントは director のオーケストレーションサービスをポーリングしてオーバークラウドの設定を行います。デプロイメントスタックは作成を続行して、各ノードのスタックは最終的に CREATE_COMPLETE に変わります。