4.4. 設定後: 全オーバークラウドロールのカスタマイズ
本書の以前のバージョンでは、OS::TripleO::Tasks::*PostConfig リソースを使用してロールごとに設定後フックを提供していました。heat テンプレートコレクションでは、これらのフックを特定の用途に使用する必要があるので、これらを個別の用途に使用すべきではありません。その代わりに、以下に概要を示す OS::TripleO::NodeExtraConfigPost フックを使用してください。
オーバークラウドの初回作成時または更新時において、オーバークラウドの作成が完了してからすべてのロールに設定の追加が必要となる可能性があります。このような場合には、以下の設定後フックを使用します。
- OS::TripleO::NodeExtraConfigPost
- Puppet のコア設定後に全ノードロールに適用される追加の設定
以下の例では、各ノードの resolv.conf ファイルに変数のネームサーバーを追加します。
手順
各ノードの
resolv.confに変数のネームサーバーを追加するスクリプトを実行するために、まず基本的な heat テンプレート (~/templates/nameserver.yaml) を作成します。heat_template_version: 2014-10-16 description: > Extra hostname configuration parameters: servers: type: json nameserver_ip: type: string DeployIdentifier: type: string EndpointMap: default: {} type: json resources: CustomExtraConfig: type: OS::Heat::SoftwareConfig properties: group: script config: str_replace: template: | #!/bin/sh echo "nameserver _NAMESERVER_IP_" >> /etc/resolv.conf params: _NAMESERVER_IP_: {get_param: nameserver_ip} CustomExtraDeployments: type: OS::Heat::SoftwareDeploymentGroup properties: servers: {get_param: servers} config: {get_resource: CustomExtraConfig} actions: ['CREATE','UPDATE'] input_values: deploy_identifier: {get_param: DeployIdentifier}上記の例では、
resourcesセクションには以下のパラメーターが含まれます。- CustomExtraConfig
-
ここでは、ソフトウェア設定を定義します。上記の例では、Bash
スクリプトを定義し、heat が_NAMESERVER_IP_をnameserver_ipパラメーターに保管された値に置き換えます。 - CustomExtraDeployments
この設定により、
CustomExtraConfigリソースで定義したソフトウェア設定を実行します。以下の点に注意してください。-
configパラメーターはCustomExtraConfigリソースを参照し、適用する設定を heat が理解できるようにします。 -
serversパラメーターは、オーバークラウドノードのマッピングを取得します。これは親テンプレートにより提供されるパラメーターで、このフックのテンプレートには必須です。 -
actionsパラメーターは、設定を適用するタイミングを定義します。設定可能なアクションには、デフォルトで設定されているCREATEおよびUPDATEが含まれます。上記の例では、オーバークラウドが作成または更新された時にのみ設定を適用します。 -
input_valuesではdeploy_identifierというパラメーターを定義し、親テンプレートからのDeployIdentifierを格納します。このパラメーターにより、各デプロイメント更新のリソースにタイムスタンプが提供されます。これにより、これ以降のオーバークラウド更新時にリソースが再度適用されるようになります。
-
OS::TripleO::NodeExtraConfigPost:リソース種別として heat テンプレートを登録する環境ファイル (~/templates/post_config.yaml) を作成します。resource_registry: OS::TripleO::NodeExtraConfigPost: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1その他の環境ファイルと共に環境ファイルをスタックに追加します。
$ openstack overcloud deploy --templates \ ... -e /home/stack/templates/post_config.yaml \ ...これにより、オーバークラウドの初回作成またはそれ以降の更新において、コア設定の完了後にすべてのノードに設定が適用されます。
OS::TripleO::NodeExtraConfigPost を登録することができるのは 1 つの heat テンプレートだけです。別の heat テンプレートに登録すると、使用する heat テンプレートがそのテンプレートに変わります。