From b84513c8d16cd19b57993575c6f54c9eda6f473f Mon Sep 17 00:00:00 2001 From: Robert Collins Date: Wed, 16 Apr 2014 16:08:45 +1200 Subject: Add passthrough configuration glue. This provides a means for users to pass configuration through to the machines they are deploying without us modelling that. Change-Id: I7134eb0c6be2d5cb1795b2f03cfba4afb69dc837 blueprint: passthrough-config --- nova-compute-config.yaml | 4 ++++ nova-compute-instance.yaml | 45 +++++++++++++++++++++++++++++++++++ overcloud-source.yaml | 58 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+) diff --git a/nova-compute-config.yaml b/nova-compute-config.yaml index 1500a2e0..02d8e002 100644 --- a/nova-compute-config.yaml +++ b/nova-compute-config.yaml @@ -45,3 +45,7 @@ Resources: base_image_id: {get_input: nova_image} live_update_image_id: {get_input: live_update_compute_image} completion-signal: {get_input: deploy_signal_id} + NovaComputePassthrough: + Type: OS::Heat::StructuredConfig + Properties: + config: {get_input: passthrough_config} diff --git a/nova-compute-instance.yaml b/nova-compute-instance.yaml index 99c2e11c..71e47ccc 100644 --- a/nova-compute-instance.yaml +++ b/nova-compute-instance.yaml @@ -6,6 +6,43 @@ Parameters: Description: The password for the keystone admin account, used for monitoring, querying neutron etc. Type: String NoEcho: true + ExtraConfig: + Description: | + Additional configuration to inject into the cluster. The JSON should have + the following structure: + {"FILEKEY": + {"config": + [{"section": "SECTIONNAME", + "values": + [{"option": "OPTIONNAME", + "value": "VALUENAME" + } + ] + } + ] + } + } + For instance: + {"nova": + {"config": + [{"section": "default", + "values": + [{"option": "compute_manager", + "value": "ironic.nova.compute.manager.ClusterComputeManager" + } + ] + }, + {"section": "cells", + "values": + [{"option": "driver", + "value": "nova.cells.rpc_driver.CellsRPCDriver" + } + ] + } + ] + } + } + Type: Json KeyName: Description: Name of an existing EC2 KeyPair to enable SSH access to the instances Type: String @@ -163,3 +200,11 @@ Resources: live_update_tenant_name: {Ref: LiveUpdateTenantName} nova_image: {Ref: NovaImage} live_update_image_id: {Ref: LiveUpdateComputeImage} + NovaCompute0Passthrough: + Type: OS::Heat::StructuredDeployment + Properties: + config: {Ref: NovaComputePassthrough} + server: {Ref: NovaCompute0} + signal_transport: NO_SIGNAL + input_values: + passthrough_config: {Ref: ExtraConfig} diff --git a/overcloud-source.yaml b/overcloud-source.yaml index f215e3be..ecdf05c0 100644 --- a/overcloud-source.yaml +++ b/overcloud-source.yaml @@ -21,6 +21,44 @@ Parameters: Default: tgtadm Description: The iSCSI helper to use with cinder. Type: String + ExtraConfig: + Default: {} + Description: | + Additional configuration to inject into the cluster. The JSON should have + the following structure: + {"FILEKEY": + {"config": + [{"section": "SECTIONNAME", + "values": + [{"option": "OPTIONNAME", + "value": "VALUENAME" + } + ] + } + ] + } + } + For instance: + {"nova": + {"config": + [{"section": "default", + "values": + [{"option": "compute_manager", + "value": "ironic.nova.compute.manager.ClusterComputeManager" + } + ] + }, + {"section": "cells", + "values": + [{"option": "driver", + "value": "nova.cells.rpc_driver.CellsRPCDriver" + } + ] + } + ] + } + } + Type: Json OvercloudControlFlavor: Default: baremetal Description: Flavor for control nodes to request when deploying. @@ -246,6 +284,14 @@ Resources: - {Ref: CloudName} # If CloudName is unset, make the hosts line still valid - unused + NovaCompute0Passthrough: + Type: OS::Heat::StructuredDeployment + Properties: + config: {Ref: NovaComputePassthrough} + server: {Ref: NovaCompute0} + signal_transport: NO_SIGNAL + input_values: + passthrough_config: {Ref: ExtraConfig} NovaCompute0: Type: FileInclude Path: nova-compute-instance.yaml @@ -354,6 +400,10 @@ Resources: ntp: servers: - {server: {Ref: NtpServer}, fudge: "stratum 0"} + controllerPassthrough: + Type: OS::Heat::StructuredConfig + Properties: + config: {get_input: passthrough_config} controller0: Type: OS::Nova::Server Properties: @@ -412,6 +462,14 @@ Resources: input_values: ssl_certificate: {Ref: SSLCertificate} ssl_key: {Ref: SSLKey} + controller0Passthrough: + Type: OS::Heat::StructuredDeployment + Properties: + config: {Ref: controllerPassthrough} + server: {Ref: controller0} + signal_transport: NO_SIGNAL + input_values: + passthrough_config: {Ref: ExtraConfig} Outputs: KeystoneURL: Description: URL for the Overcloud Keystone service -- cgit 1.2.3-korg