第7章 オーバークラウドの作成
カスタム環境ファイルの作成が完了したら、それぞれのロールで使用するフレーバーおよびノードを指定し、続いてデプロイメントを実施することができます。以下のサブセクションで、両方の手順について詳細に説明します。
7.1. ロールへのノードとフレーバーの割り当て
オーバークラウドのデプロイメントのプランニングでは、各ロールに割り当てるノード数とフレーバーを指定する必要があります。すべての Heat テンプレートのパラメーターと同様に、これらのロールの仕様は環境ファイル (ここでは ~/templates/storage-config.yaml
) の parameter_defaults
セクションで宣言する必要があります。
この設定には、以下のパラメーターを使用します。
表7.1 オーバークラウドノードのロールとフレーバー
Heat テンプレートのパラメーター | 説明 |
---|---|
ControllerCount | スケールアウトするコントローラーノード数 |
OvercloudControlFlavor |
コントローラーノードに使用するフレーバー( |
ComputeCount | スケールアウトするコンピュートノード数 |
OvercloudComputeFlavor |
コンピュートノードに使用するフレーバー ( |
CephStorageCount | スケールアウトする Ceph Storage (OSD) ノード数 |
OvercloudCephStorageFlavor |
Ceph Storage (OSD) ノード ( |
CephMonCount | スケールアウトする専用の Ceph MON ノード数 |
OvercloudCephMonFlavor |
専用の Ceph MON ノード ( |
CephMdsCount | スケールアウトする専用の Ceph MDS ノード数 |
OvercloudCephMdsFlavor |
専用の Ceph MDS ノード ( |
(ceph-mon
および ceph-mds
フレーバーと共に) CephMonCount
、CephMdsCount
、OvercloudCephMonFlavor
、OvercloudCephMdsFlavor
のパラメーターは、「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 ノードで実行する必要はありません。例として記述した環境ファイルおよびノードの名前を、実際の環境に適した名前に置き換えてください。
手順
アンダークラウドノードに
stack
ユーザーとしてログインし、source コマンドでstackrc
認証情報ファイルを読み込みます。# source stackrc
新規ディスクが不足している 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-download
でansible-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
が実行されるためです。