第6章 オーバークラウドの高度なカスタマイズ設定
本章は「5章基本的なオーバークラウド要件の設定」の続きとなります。この時点では、director によりノードが登録され、オーバークラウドの作成に必要なサービスが設定されました。次に、本章の手法を使用して、オーバークラウドをカスタマイズすることができます。
注記
本章に記載する例は、オーバークラウドを設定するためのオプションのステップです。これらのステップは、オーバークラウドに追加の機能を提供する場合にのみ必要です。環境の要件に該当するステップのみを使用してください。
6.1. Heat テンプレートについての理解
本ガイドのカスタム設定では、Heat テンプレートと環境ファイルを使用して、ネットワークの分離やネットワークインターフェースの設定など、オーバークラウドの特定の機能を定義します。本項には、Red Hat OpenStack Platform director に関連した Heat テンプレートの構造や形式を理解するための基本的な説明を記載します。
6.1.1. Heat テンプレート
director は、Heat Orchestration Template (HOT) をオーバークラウドデプロイメントプランのテンプレート形式として使用します。HOT 形式のテンプレートの多くは、YAML 形式で表現されます。テンプレートの目的は、Heat が作成するリソースのコレクションと、リソースの設定が含まれる スタック を定義して作成することです。リソースとは、コンピュートリソース、ネットワーク設定、セキュリティーグループ、スケーリングルール、カスタムリソースなどの OpenStack のオブジェクトのことです。
Heat テンプレートは、3 つの主要なセクションで構成されます。
- パラメーター: Heat に渡す設定。値を渡さずにスタックやパラメーターのデフォルト値をカスタマイズする方法を提供します。これらは、テンプレートの
parameters
セクションで定義されます。 - リソース: スタックの一部として作成/設定する特定のオブジェクト。OpenStack には全コンポーネントに対応するコアのリソースセットが含まれています。これらは、テンプレートの
resources
セクションで定義されます。 - 出力: スタックの作成後に Heat から渡される値。これらの値は、Heat API またはクライアントツールを使用してアクセスすることができます。これらは、テンプレートの
output
セクションで定義されます。
以下に、基本的な Heat テンプレートの例を示します。
heat_template_version: 2013-05-23 description: > A very basic Heat template. parameters: key_name: type: string default: lars description: Name of an existing key pair to use for the instance flavor: type: string description: Instance type for the instance to be created default: m1.small image: type: string default: cirros description: ID or name of the image to use for the instance resources: my_instance: type: OS::Nova::Server properties: name: My Cirros Instance image: { get_param: image } flavor: { get_param: flavor } key_name: { get_param: key_name } output: instance_name: description: Get the instance's name value: { get_attr: [ my_instance, name ] }
このテンプレートは、リソース種別
type: OS::Nova::Server
を使用して、特定のフレーバー、イメージ、キーを使用する my_instance
と呼ばれるインスタンスを作成します。このスタックは、My Cirros Instance
と呼ばれる instance_name
の値を返すことができます。
Heat がテンプレートを処理する際には、テンプレートのスタックとリソーステンプレートの子スタックセットを作成します。これにより、テンプレートで定義したメインのスタックに基づいたスタックの階層が作成されます。以下のコマンドを使用して、スタック階層を表示することができます。
$ heat stack-list --show-nested
6.1.2. 環境ファイル
環境ファイルとは、Heat テンプレートをカスタマイズする特別な種類のテンプレートです。このファイルは、3 つの主要な部分で構成されます。
- リソースレジストリー: このセクションは、他の Heat テンプレートに関連付けられたカスタムのリソース名を定義します。基本的には、この設定により、コアリソースコレクションに存在しないカスタムのリソースを作成する方法が提供されます。これらは、環境ファイルの
resource_registry
セクションで定義されます。 - パラメーター: これらは、最上位のテンプレートのパラメーターに適用する共通の設定です。たとえば、リソースレジストリーマッピングなどのネストされたスタックをデプロイするテンプレートがある場合には、パラメーターは最上位のテンプレートにのみ適用され、ネストされたリソースのテンプレートには適用されません。パラメーターは、環境ファイルの
parameters
セクションで定義されます。 - パラメーターのデフォルト値: これらのパラメーターは、すべてのテンプレートのパラメーターのデフォルト値を変更します。たとえば、リソースレジストリーマッピングなどのネストされたスタックをデプロイするテンプレートがある場合には、パラメーターのデフォルト値は、最上位のテンプレートとすべてのネストされたリソースを定義するテンプレートなどすべてのテンプレートに適用されます。パラメーターのデフォルト値は環境ファイルの
parameter_defaults
セクションで定義されます。
重要
オーバークラウドのカスタムの環境ファイルを作成する場合には、
parameters
ではなく parameter_defaults
を使用することを推奨します。これは、パラメーターがオーバークラウドのスタックテンプレートすべてに適用されるからです。
以下に基本的な環境ファイルの例を示します。
resource_registry: OS::Nova::Server::MyServer: myserver.yaml parameter_defaults: NetworkName: my_network parameters: MyIP: 192.168.0.1
たとえば、特定の Heat テンプレート (
my_template.yaml
) からスタックを作成する場合に、このような環境ファイル (my_env.yaml
) を追加することができます。my_env.yaml
ファイルにより、OS::Nova::Server::MyServer
と呼ばれるリソース種別が作成されます。myserver.yaml
ファイルは、このリソース種別を実装して、組み込まれている種別を上書きする Heat テンプレートです。my_template.yaml
ファイルに OS::Nova::Server::MyServer
リソースを追加することができます。
MyIP
は、この環境ファイルと一緒にデプロイされるメインの Heat テンプレートにのみパラメーターを適用します。この例では、my_template.yaml
のパラメーターにのみ適用されます。
NetworkName
はメインの Heat テンプレート (上記の例では my_template.yaml
) とメインのテンプレートに関連付けられたテンプレート (上記の例では OS::Nova::Server::MyServer
リソースとその myserver.yaml
テンプレート) の両方に適用されます。
6.1.3. コアとなるオーバークラウドの Heat テンプレート
director には、オーバークラウドのコア Heat テンプレートコレクションが含まれます。このコレクションは、
/usr/share/openstack-tripleo-heat-templates
に保存されています。
このテンプレートコレクションには、多数の Heat テンプレートおよび環境ファイルが含まれますが、注意すべき主要なファイルおよびディレクトリーは以下のとおりです。
overcloud.yaml
: これはオーバークラウド環境を作成するために使用する主要なテンプレートファイルです。overcloud-resource-registry-puppet.yaml
: これは、オーバークラウド環境の作成に使用する主要な環境ファイルで、オーバークラウドイメージ上に保存される Puppet モジュールの設定セットを提供します。director により各ノードにオーバークラウドのイメージが書き込まれると、Heat は環境ファイルに登録されているリソースを使用して各ノードに Puppet の設定を開始します。environments
: オーバークラウドのデプロイメントに適用する環境ファイルのサンプルが含まれるディレクトリーです。