4.3. 事前設定: 全オーバークラウドロールのカスタマイズ
オーバークラウドは、OpenStack コンポーネントのコア設定に Puppet を使用します。director の提供するフックを使用して、初回のブートが完了してコア設定が開始される前に、すべてのノード種別を設定することができます。
- OS::TripleO::NodeExtraConfig
- Puppet のコア設定前に全ノードロールに適用される追加の設定
以下の例では、各ノードの resolv.conf
ファイルに変数のネームサーバーを追加します。
手順
各ノードの
resolv.conf
に変数のネームサーバーを追加するスクリプトを実行するために、まず基本的な heat テンプレート (~/templates/nameserver.yaml
) を作成します。heat_template_version: 2014-10-16 description: > Extra hostname configuration parameters: server: type: string nameserver_ip: type: string DeployIdentifier: type: string resources: CustomExtraConfigPre: 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} CustomExtraDeploymentPre: type: OS::Heat::SoftwareDeployment properties: server: {get_param: server} config: {get_resource: CustomExtraConfigPre} actions: ['CREATE','UPDATE'] input_values: deploy_identifier: {get_param: DeployIdentifier} outputs: deploy_stdout: description: Deployment reference, used to trigger pre-deploy on changes value: {get_attr: [CustomExtraDeploymentPre, deploy_stdout]}
上記の例では、
resources
セクションには以下のパラメーターが含まれます。- CustomExtraConfigPre
-
このパラメーターは、ソフトウェア設定を定義します。上記の例では、Bash
スクリプト
を定義し、heat が_NAMESERVER_IP_
をnameserver_ip
パラメーターに保管された値に置き換えます。 - CustomExtraDeploymentPre
このパラメーターにより、
CustomExtraConfigPre
リソースで定義したソフトウェア設定を実行します。以下の点に注意してください。-
config
パラメーターはCustomExtraConfigPre
リソースを参照し、適用する設定を heat が理解できるようにします。 -
server
パラメーターは、オーバークラウドノードのマッピングを取得します。これは親テンプレートにより提供されるパラメーターで、このフックのテンプレートには必須です。 -
actions
パラメーターは、設定を適用するタイミングを定義します。上記の例では、オーバークラウドが作成または更新された時にのみ設定を適用します。設定可能なアクションはCREATE
、UPDATE
、DELETE
、SUSPEND
、およびRESUME
です。 -
input_values
パラメーターではdeploy_identifier
というサブパラメーターを定義し、親テンプレートからのDeployIdentifier
を格納します。このパラメーターにより、各デプロイメント更新のリソースにタイムスタンプが提供されます。これにより、これ以降のオーバークラウド更新時にリソースが再度適用されるようになります。
-
OS::TripleO::NodeExtraConfig
リソース種別として heat テンプレートを登録する環境ファイル (~/templates/pre_config.yaml
) を作成します。resource_registry: OS::TripleO::NodeExtraConfig: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1
その他の環境ファイルと共に環境ファイルをスタックに追加します。
$ openstack overcloud deploy --templates \ ... -e /home/stack/templates/pre_config.yaml \ ...
これにより、オーバークラウドの初回作成またはそれ以降の更新において、コア設定前にすべてのノードに設定が適用されます。
OS::TripleO::NodeExtraConfig
を登録することができるのは 1 つの heat テンプレートだけです。別の heat テンプレートに登録すると、使用する heat テンプレートがそのテンプレートに変わります。