第7章 オーバークラウドの作成

カスタム環境ファイルの作成が完了したら、それぞれのロールで使用するフレーバーおよびノードを指定し、続いてデプロイメントを実施することができます。以下のサブセクションで、両方の手順について詳細に説明します。

7.1. ロールへのノードとフレーバーの割り当て

オーバークラウドのデプロイメントのプランニングでは、各ロールに割り当てるノード数とフレーバーを指定する必要があります。すべての Heat テンプレートのパラメーターと同様に、これらのロールの仕様は環境ファイル (ここでは ~/templates/storage-config.yaml) の parameter_defaults セクションで宣言する必要があります。

この設定には、以下のパラメーターを使用します。

表7.1 オーバークラウドノードのロールとフレーバー

Heat テンプレートのパラメーター説明

ControllerCount

スケールアウトするコントローラーノード数

OvercloudControlFlavor

コントローラーノードに使用するフレーバー(control)

ComputeCount

スケールアウトするコンピュートノード数

OvercloudComputeFlavor

コンピュートノードに使用するフレーバー (compute)

CephStorageCount

スケールアウトする Ceph Storage (OSD) ノード数

OvercloudCephStorageFlavor

Ceph Storage (OSD) ノード (ceph-storage) に使用するフレーバー

CephMonCount

スケールアウトする専用の Ceph MON ノード数

OvercloudCephMonFlavor

専用の Ceph MON ノード (ceph-mon) に使用するフレーバー

CephMdsCount

スケールアウトする専用の Ceph MDS ノード数

OvercloudCephMdsFlavor

専用の Ceph MDS ノード (ceph-mds) に使用するフレーバー

重要

(ceph-mon および ceph-mds フレーバーと共に) CephMonCountCephMdsCountOvercloudCephMonFlavorOvercloudCephMdsFlavor のパラメーターは、「3章専用ノード上での Ceph サービスのデプロイ」に記載のように、カスタムの CephMON および CephMds ロールを作成した場合のみ有効となります。

たとえば、オーバークラウドが各ロール (Controller、Compute、Ceph-Storage、CephMon) に 3 つずつノードをデプロイするように設定するには、parameter_defaults に以下の設定を追加します。

parameter_defaults:
  ControllerCount: 3
  OvercloudControlFlavor: control
  ComputeCount: 3
  OvercloudComputeFlavor: compute
  CephStorageCount: 3
  OvercloudCephStorageFlavor: ceph-storage
  CephMonCount: 3
  OvercloudCephMonFlavor: ceph-mon
  CephMdsCount: 3
  OvercloudCephMdsFlavor: ceph-mds
注記

Heat テンプレートのパラメーターのより詳細な一覧は、『director のインストールと使用方法』ガイドの「Creating the Overcloud with the CLI Tools」を参照してください。

7.2. オーバークラウドデプロイメントの開始

注記

アンダークラウドのインストール時に、undercloud.conf ファイルに generate_service_certificate=false を設定します。設定しない場合は、『オーバークラウドの高度なカスタマイズ』ガイドの「オーバークラウドのパブリックエンドポイントでの SSL/TLS の有効化」で説明したように、オーバークラウドのデプロイ時にトラストアンカーを挿入する必要があります。

注記
オーバークラウドのデプロイメント中に Ceph Dashboard を追加する場合は、「8章Red Hat Ceph Storage Dashboard のオーバークラウドデプロイメントへの追加」を参照してください。

オーバークラウドの作成には、openstack overcloud deploy コマンドに追加の引数を指定する必要があります。以下に例を示します。

$ openstack overcloud deploy --templates -r /home/stack/templates/roles_data_custom.yaml \
  -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \
  -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-rgw.yaml \
  -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-mds.yaml
  -e /usr/share/openstack-tripleo-heat-templates/environments/cinder-backup.yaml \
  -e /home/stack/templates/storage-config.yaml \
  -e /home/stack/templates/ceph-config.yaml \
  --ntp-server pool.ntp.org

上記のコマンドは、以下のオプションを使用します。

  • --templates: デフォルトの Heat テンプレートコレクション (/usr/share/openstack-tripleo-heat-templates/) からオーバークラウドを作成します。
  • -r /home/stack/templates/roles_data_custom.yaml:「3章専用ノード上での Ceph サービスのデプロイ」でカスタマイズしたロールの定義ファイルを指定し、カスタムロールを Ceph MON サービスまたは Ceph MDS サービスに追加します。これらのロールにより、いずれかのサービスを専用のノードにインストールすることができます。
  • -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml: Ceph クラスターを作成するように director を設定します。この環境ファイルは、特に コンテナー化された Ceph Storage ノードを持つ Ceph クラスターをデプロイします。
  • -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-rgw.yaml:「Ceph Object Gateway の有効化」で説明するように、Ceph Object Gateway を有効にします。
  • -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-mds.yaml:「Ceph Metadata Server の有効化」で説明するように、Ceph Metadata Server を有効にします。
  • -e /usr/share/openstack-tripleo-heat-templates/environments/cinder-backup.yaml:「バックアップサービスで Ceph を使用する設定」で説明するように、Block Storage Backup サービス (cinder-backup) を有効にします。
  • -e /home/stack/templates/storage-config.yaml: Ceph Storage のカスタム設定が含まれる環境ファイルを追加します。
  • -e /home/stack/templates/ceph-config.yaml:「5章Ceph Storage クラスターのカスタマイズ」で説明するように、Ceph クラスターのカスタム設定が含まれる環境ファイルを追加します。
  • --ntp-server pool.ntp.org: NTP サーバーを設定します。
ヒント

アンサーファイル を使用して、すべてのテンプレートおよび環境ファイルを呼び出すこともできます。たとえば、以下のコマンドを使用して、同一のオーバークラウドをデプロイすることができます。

$ openstack overcloud deploy -r /home/stack/templates/roles_data_custom.yaml \
  --answers-file /home/stack/templates/answers.yaml --ntp-server pool.ntp.org

この場合、アンサーファイル /home/stack/templates/answers.yamlの内容は以下のようになります。

templates: /usr/share/openstack-tripleo-heat-templates/
environments:
  - /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml
  - /usr/share/openstack-tripleo-heat-templates/environments/ceph-rgw.yaml
  - /usr/share/openstack-tripleo-heat-templates/environments/ceph-mds.yaml
  - /usr/share/openstack-tripleo-heat-templates/environments/cinder-backup.yaml
  - /home/stack/templates/storage-config.yaml
  - /home/stack/templates/ceph-config.yaml

詳細は、「オーバークラウドデプロイメントへの環境ファイルの追加」を参照してください。

オプションの完全な一覧を表示するには、以下のコマンドを入力します。

$ openstack help overcloud deploy

詳細は、『director のインストールと使用方法』ガイドの「CLI ツールを使用した基本的なオーバークラウドの設定」を参照してください。

オーバークラウドの作成プロセスが開始され、director によりノードがプロビジョニングされます。このプロセスは完了するまで多少時間がかかります。オーバークラウドの作成のステータスを確認するには、stack ユーザーとして別のターミナルを開き、以下のコマンドを入力します。

$ source ~/stackrc
$ openstack stack list --nested

7.2.1. ceph-ansible を実行するノードの限定

ceph-ansible を実行するノードを限定することで、デプロイメントの更新時間を短縮することができます。Red Hat OpenStack Platform (RHOSP) で Ceph の設定に config-download が使用されている場合、デプロイメント全体に対して config-download および ceph-ansible を実行する代わりに、--limit オプションを使用してノードの一覧を指定することができます。この機能は、たとえばオーバークラウドをスケールアップする場合や障害の発生したディスクを置き換える場合に役立ちます。このようなシナリオでは、環境に追加する新規ノードでのみデプロイメントを実行することができます。

障害の発生したディスクの置き換え時に --limit を使用するシナリオの例

以下の手順例では、Ceph ストレージノード oc0-cephstorage-0 でディスク障害が発生したため、ベンダーでフォーマット済みの新規ディスクを受け入れます。新しいディスクを OSD として使用することができるように、Ansible を oc0-cephstorage-0 ノード上で実行する必要があります。しかし、その他すべての Ceph Storage ノードで実行する必要はありません。例として記述した環境ファイルおよびノードの名前を、実際の環境に適した名前に置き換えてください。

手順

  1. アンダークラウドノードに stack ユーザーとしてログインし、source コマンドで stackrc 認証情報ファイルを読み込みます。

    # source stackrc
  2. 新規ディスクが不足している OSD を起動するのに使用されるように、以下の手順の 1 つを実施します。

    • --limit オプションを使用して ceph-ansible を実行するノードを指定し、スタックの更新を実行する。

      $ openstack overcloud deploy --templates \
        -r /home/stack/roles_data.yaml \
        -n /usr/share/openstack-tripleo-heat-templates/network_data_dashboard.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \
        -e ~/my-ceph-settings.yaml \
        -e <other-environment_files> \
        --limit oc0-controller-0:oc0-controller-2:oc0-controller-1:oc0-cephstorage-0:undercloud

      この例では、Ceph mon の OSD 定義を変更するのに Ansible が必要なため、コントローラーが含まれています。

    • config-downloadansible-playbook-command.sh スクリプトが生成されている場合は、--limit オプションを指定してスクリプトを実行して、指定したノードを ceph-ansible に渡すこともできます。

      ./ansible-playbook-command.sh --limit oc0-controller-0:oc0-controller-2:oc0-controller-1:oc0-cephstorage-0:undercloud
      警告
      必ずアンダークラウドを制限一覧に含める必要があります。含めないと、--limit を使用する際に ceph-ansible を実行することができません。この注意が必要なのは、アンダークラウドでのみ実行される external_deploy_steps_tasks Playbook によりceph-ansible が実行されるためです。