第5章 オーケストレーション
director は、Heat Orchestration Template (HOT) をオーバークラウドデプロイメントプランのテンプレート形式として使用します。HOT 形式のテンプレートは、通常 YAML 形式で表現されます。テンプレートの目的は、Heat が作成するリソースのコレクションである スタック およびリソースの設定を定義/作成することです。リソースとは、コンピュートリソース、ネットワーク設定、セキュリティーグループ、スケーリングルール、カスタムリソースなどの OpenStack のオブジェクトを指します。
Heat テンプレートファイルの拡張子は、.yaml
または .template
にする必要があります。そうでないと、カスタムテンプレートリソースとして処理されません。
本章では、独自のテンプレートファイルを作成できるように HOT 構文を理解するための基本を説明します。
5.1. Heat テンプレートの基礎知識
5.1.1. Heat テンプレートの概要
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_template_version
パラメーターも必要とします。詳しい情報は Heat の正式なドキュメント を参照してください。
5.1.2. 環境ファイルの理解
環境ファイルとは、Heat テンプレートをカスタマイズする特別な種類のテンプレートです。このファイルは、3 つの主要な部分で構成されます。
- リソースレジストリー
-
このセクションでは、他の Heat テンプレートにリンクしたカスタムのリソース名を定義します。これにより、コアリソースコレクションに存在しないカスタムのリソースを作成することができます。この設定は、環境ファイルの
resource_registry
セクションで定義されます。 - パラメーター
-
これらは、最上位のテンプレートのパラメーターに適用する共通設定です。たとえば、入れ子状のスタックをデプロイするテンプレートの場合には (リソースレジストリーマッピングなど)、パラメーターは最上位のテンプレートにのみ適用され、入れ子状のリソースのテンプレートには適用されません。これらの設定は、環境ファイルの
parameters
セクションで定義します。 - パラメーターのデフォルト
-
これらのパラメーターは、全テンプレートのパラメーターのデフォルト値を変更します。たとえば、入れ子状のスタックをデプロイする Heat テンプレートの場合には (リソースレジストリーマッピング等)、パラメーターのデフォルト値がすべてのテンプレートに適用されます。パラメーターのデフォルト値は、環境ファイルの
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
テンプレート) の両方に適用されます。
環境ファイルの拡張子は、.yaml
または.template
にする必要があります。そうでないと、カスタムテンプレートリソースとして処理されません。