第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 アドレスを使用してネームサーバーを更新します。

  1. 各ノードの 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}
  2. OS::TripleO::NodeUserData リソース種別として heat テンプレートを登録する環境ファイル (~/templates/firstboot.yaml) を作成します。

    resource_registry:
      OS::TripleO::NodeUserData: /home/stack/templates/nameserver.yaml
  3. オーバークラウドに初回ブートの設定を追加するには、その他の環境ファイルと共にこの環境ファイルをスタックに追加します。

    $ openstack overcloud deploy --templates \
        ...
        -e /home/stack/templates/firstboot.yaml \
        ...

    これにより、ノード作成後の初回起動時に設定がすべてのノードに追加されます。これ以降は (たとえば、オーバークラウドスタックの更新時)、これらのテンプレートを追加してもこれらのスクリプトは実行されません。

重要

NodeUserData リソースを登録することができるのは、1 つのリソースにつき 1 つの heat テンプレートだけです。別の heat テンプレートに登録すると、使用する heat テンプレートがそのテンプレートに変わります。