Compute: drive NW configuration via software conf

This example extends the compute software configuration
so that heat metadata is used to model the os-net-config
YAML (ultimately JSON) directly. The existing
os-net-config element already supports this format.

Configuring the physical network layer in this manner
would supplant the ever growing list of Heat parameters
that we have and is something that could be automatically
generated via tuskar.

The default is to use net-config-noop.yaml which
will pass no config metadata into the os-net-config
element which will essentially disable it in favor
of using parameters w/ init-neutron-ovs.

Change-Id: I30f325b1751caaef5624537e63ee27c2e418d5c8
This commit is contained in:
Dan Prince 2014-10-23 15:17:49 -04:00
parent 741df33386
commit 9df1991a80
5 changed files with 113 additions and 0 deletions

View File

@ -246,6 +246,19 @@ resources:
- network: ctlplane
user_data_format: SOFTWARE_CONFIG
NetworkConfig:
type: OS::TripleO::Net::SoftwareConfig
NetworkDeployment:
type: OS::TripleO::SoftwareDeployment
properties:
signal_transport: NO_SIGNAL
config: {get_attr: [NetworkConfig, config_id]}
server: {get_resource: NovaCompute}
input_values:
bridge_name: {get_param: NeutronPhysicalBridge}
interface_name: {get_param: NeutronPublicInterface}
NovaComputeConfig:
type: OS::TripleO::Compute::SoftwareConfig

44
net-config-bond.yaml Normal file
View File

@ -0,0 +1,44 @@
heat_template_version: 2014-10-16
description: >
Software Config to drive os-net-config with 2 bonded nics on a bridge.
resources:
OsNetConfigImpl:
type: OS::Heat::StructuredConfig
properties:
group: os-apply-config
config:
os_net_config:
network_config:
-
type: ovs_bridge
name: {get_input: bridge_name}
use_dhcp: true
# Can't do this yet: https://bugs.launchpad.net/heat/+bug/1344284
#ovs_extra:
# - list_join:
# - ' '
# - - br-set-external-id
# - {get_input: bridge_name}
# - bridge-id
# - {get_input: bridge_name}
members:
-
type: ovs_bond
name: bond1
use_dhcp: true
members:
# os-net-config translates nic1 => em1 (for example)
-
type: interface
name: nic1
-
type: interface
name: nic2
outputs:
config_id:
description: The ID of the OsNetConfigImpl resource.
value:
{get_resource: OsNetConfigImpl}

37
net-config-bridge.yaml Normal file
View File

@ -0,0 +1,37 @@
heat_template_version: 2014-10-16
description: >
Software Config to drive os-net-config for a simple bridge.
resources:
OsNetConfigImpl:
type: OS::Heat::StructuredConfig
properties:
group: os-apply-config
config:
os_net_config:
network_config:
-
type: ovs_bridge
name: {get_input: bridge_name}
use_dhcp: true
# Can't do this yet: https://bugs.launchpad.net/heat/+bug/1344284
#ovs_extra:
# - list_join:
# - ' '
# - - br-set-external-id
# - {get_input: bridge_name}
# - bridge-id
# - {get_input: bridge_name}
members:
-
type: interface
name: {get_input: interface_name}
# force the MAC address of the bridge to this interface
primary: true
outputs:
config_id:
description: The ID of the OsNetConfigImpl resource.
value:
{get_resource: OsNetConfigImpl}

18
net-config-noop.yaml Normal file
View File

@ -0,0 +1,18 @@
heat_template_version: 2014-10-16
description: >
Software Config to no-op for os-net-config. Using this will allow you
to use the parameter driven (init-neutron-ovs) configuration instead.
resources:
OsNetConfigImpl:
type: OS::Heat::StructuredConfig
properties:
group: os-apply-config
config:
outputs:
config_id:
description: The ID of the OsNetConfigImpl resource.
value:
{get_resource: OsNetConfigImpl}

View File

@ -3,5 +3,6 @@ resource_registry:
OS::TripleO::Compute: compute.yaml
OS::TripleO::Compute::SoftwareConfig: compute-config.yaml
OS::TripleO::SoftwareDeployment: OS::Heat::StructuredDeployment
OS::TripleO::Net::SoftwareConfig: net-config-noop.yaml
OS::TripleO::Controller: controller.yaml
OS::TripleO::ObjectStorage: swift-storage.yaml