10.2. オーバークラウドの設定前のカスタマイズ
オーバークラウドは、OpenStackコンポーネントのコア設定に Puppet を使用します。director は、初回のブートが完了してコア設定が開始する前に、カスタム設定を提供するリソースのセットを用意します。これには、以下のリソースが含まれます。
- OS::TripleO::ControllerExtraConfigPre
- Puppet のコア設定前にコントローラーノードに適用される追加の設定
- OS::TripleO::ComputeExtraConfigPre
- Puppet のコア設定前にコンピュートノードに適用される追加の設定
- OS::TripleO::CephStorageExtraConfigPre
- Puppet のコア設定前に CephStorage ノードに適用される追加の設定
- OS::TripleO::NodeExtraConfig
- Puppet のコア設定前に全ノードに適用される追加の設定
以下の例では、まず基本的な Heat テンプレート (
/home/stack/templates/nameserver.yaml) を作成します。このテンプレートは、変数のネームサーバーが指定された各ノードの resolv.conf を追加するスクリプトを実行します。
heat_template_version: 2014-10-16
description: >
Extra hostname configuration
parameters:
server:
type: string
nameserver_ip:
type: string
DeployIdentifier:
type: string
resources:
ExtraPreConfig:
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}
ExtraPreDeployment:
type: OS::Heat::SoftwareDeployment
properties:
config: {get_resource: ExtraPreConfig}
server: {get_param: server}
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: [ExtraPreDeployment, deploy_stdout]}
この例では、「resources」セクションに以下が含まれています。
- ExtraPreConfig
- これは、ソフトウェアの設定を定義します。上記の例では、Bash
scriptを定義しており、Heat は_NAMESERVER_IP_をnameserver_ipパラメーターに保存されている値に置き換えます。 - ExtraPreDeployments
- これは、
ExtraPreConfigリソースのソフトウェア設定で指定されているソフトウェアの設定を実行します。次の点に注意してください。serverパラメーターは親テンプレートにより提供され、このフックを使用するテンプレートでは必須です。input_valuesにはdeploy_identifierと呼ばれるパラメーターが含まれます。これは、親テンプレートからのDeployIdentifierを保存します。このパラメーターは、デプロイメントが更新される度にリソースにタイムスタンプを付けます。これにより、そのリソースは以降のオーバークラウドの更新に再度適用されるようになります。
次に、
OS::TripleO::NodeExtraConfig リソース種別として Heat テンプレートを登録する環境ファイル (/home/stack/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
このコマンドにより、オーバークラウドの初期作成またはその後の更新時にコア設定が開始する前に、全ノードに設定が追加されます。
重要
これらのリソースは、それぞれ 1 つの Heat テンプレートに対してのみ登録することが可能です。複数で使用すると、リソースごとに使用する Heat テンプレートが上書きされます。