Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
5.3. 初回起動: 初回起動設定のカスタマイズ
director は、オーバークラウドの初回作成時に全ノードに対して設定を行います。そのために、director は OS::TripleO::NodeUserData
リソース種別を使用して呼び出すことのできる cloud-init
を使用します。
以下の例では、全ノード上でカスタム 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 テンプレートを登録する環境ファイル (/home/stack/templates/firstboot.yaml
) を作成します。
resource_registry: OS::TripleO::NodeUserData: /home/stack/templates/nameserver.yaml
初回起動の設定を追加するには、最初にオーバークラウドを作成する際に、その他の環境ファイルと共にこの環境ファイルをスタックに追加します。以下に例を示します。
$ openstack overcloud deploy --templates \ ... -e /home/stack/templates/firstboot.yaml \ ...
-e
を使用して、オーバークラウドスタックに環境ファイルを適用します。
これにより、ノード作成後の初回起動時に設定がすべてのノードに追加されます。これ以降は (たとえば、オーバークラウドスタックの更新時)、これらのテンプレートを追加してもこれらのスクリプトは実行されません。
OS::TripleO::NodeUserData
を登録することができるのは 1 つの Heat テンプレートだけです。別の Heat テンプレートに登録すると、使用する Heat テンプレートがそのテンプレートに変わります。
これにより、以下の操作が実行されます。
-
OS::TripleO::NodeUserData
は、コレクション内の他のテンプレートで使用する director ベースの Heat リソースで、全ノードに対して初回起動の設定を適用します。このリソースは、cloud-init
で使用するデータを渡します。デフォルトのNodeUserData
は、空の値 (firstboot/userdata_default.yaml
) を指定する Heat テンプレートを参照します。この例では、firstboot.yaml
の環境ファイルは、このデフォルトを独自のnameserver.yaml
ファイルへの参照に置き換えます。 -
nameserver_config
は、初回起動で実行する Bash スクリプトを定義します。OS::Heat::SoftwareConfig
リソースは、適用する設定としてこれを定義します。 -
userdata
は、OS::Heat::MultipartMime
リソースを使用して、nameserver_config
から複数のパートからなる MIME メッセージに設定を変換します。 -
outputs
では、output パラメーターのOS::stack_id
が提供され、userdata
から MIME メッセージを呼び出している Heat テンプレート/リソースに渡します。
これにより、各ノードは初回起動時に以下の Bash スクリプトを実行します。
#!/bin/bash echo "nameserver 192.168.1.1" >> /etc/resolve.conf
この例では、Heat テンプレートがあるリソースから別のリソースに設定を渡して変更する方法を示しています。また、新規 Heat リソースの登録または既存のリソースの変更を行う環境ファイルの使用方法も説明します。