第4章 設定フック
設定フックを使用して、オーバークラウドのデプロイメントプロセスに独自のカスタム設定関数を挿入します。メインのオーバークラウドサービスの設定前後にカスタム設定を挿入するためのフックや、Puppet ベースの設定を変更/追加するためのフックを作成することができます。
4.1. 初回ブート: 初回ブート設定のカスタマイズ
オーバークラウドの初回作成後に、director は cloud-init
を使用して全ノードで設定を行います。NodeUserData
リソースタイプを使用して cloud-init
を呼び出すことができます。
- OS::TripleO::NodeUserData
-
すべてのノードに適用する
cloud-init
設定 - OS::TripleO::Controller::NodeUserData
-
コントローラーノードに適用する
cloud-init
設定 - OS::TripleO::Compute::NodeUserData
-
コンピュートノードに適用する
cloud-init
設定 - OS::TripleO::CephStorage::NodeUserData
-
Ceph Storage ノードに適用する
cloud-init
設定 - OS::TripleO::ObjectStorage::NodeUserData
-
オブジェクトストレージノードに適用する
cloud-init
設定 - OS::TripleO::BlockStorage::NodeUserData
-
ブロックストレージノードに適用する
cloud-init
設定 - OS::TripleO::[ROLE]::NodeUserData
-
カスタムノードに適用する
cloud-init
設定。[ROLE]
をコンポーザブルロール名に置き換えてください。
以下の例では、全ノード上でカスタム IP アドレスを使用してネームサーバーを更新します。
手順
各ノードの
resolv.conf
に特定のネームサーバーを追加するスクリプトを実行するために、まず基本的な heat テンプレート (~/templates/nameserver.yaml
) を作成します。OS::TripleO::MultipartMime
リソース種別を使用して、この設定スクリプトを送信することができます。heat_template_version: 2014-10-16 description: > Extra hostname configuration resources: userdata: type: OS::Heat::MultipartMime properties: parts: - config: {get_resource: nameserver_config} nameserver_config: type: OS::Heat::SoftwareConfig properties: config: | #!/bin/bash echo "nameserver 192.168.1.1" >> /etc/resolv.conf outputs: OS::stack_id: value: {get_resource: userdata}
OS::TripleO::NodeUserData
リソース種別として heat テンプレートを登録する環境ファイル (~/templates/firstboot.yaml
) を作成します。resource_registry: OS::TripleO::NodeUserData: /home/stack/templates/nameserver.yaml
オーバークラウドに初回ブートの設定を追加するには、その他の環境ファイルと共にこの環境ファイルをスタックに追加します。
$ openstack overcloud deploy --templates \ ... -e /home/stack/templates/firstboot.yaml \ ...
これにより、ノード作成後の初回起動時に設定がすべてのノードに追加されます。これ以降は (たとえば、オーバークラウドスタックの更新時)、これらのテンプレートを追加してもこれらのスクリプトは実行されません。
NodeUserData
リソースを登録することができるのは、1 つのリソースにつき 1 つの heat テンプレートだけです。別の heat テンプレートに登録すると、使用する heat テンプレートがそのテンプレートに変わります。