OVN heat templates
authorBabu Shanmugam <bschanmu@redhat.com>
Fri, 1 Apr 2016 08:03:41 +0000 (08:03 +0000)
committerRussell Bryant <rbryant@redhat.com>
Thu, 1 Sep 2016 20:06:38 +0000 (16:06 -0400)
Installs and configures OVN databases and process and also configures
the neutron plugin for OVN.

Implements: blueprint tripleo-ovn
Change-Id: Ic3e415bb0587dd85b71f6c14a96f6b2c86a7b30f

environments/neutron-ml2-ovn.yaml [new file with mode: 0644]
overcloud-resource-registry-puppet.yaml
puppet/services/neutron-compute-plugin-ovn.yaml [new file with mode: 0644]
puppet/services/neutron-plugin-ml2-ovn.yaml [new file with mode: 0644]

diff --git a/environments/neutron-ml2-ovn.yaml b/environments/neutron-ml2-ovn.yaml
new file mode 100644 (file)
index 0000000..821ad0c
--- /dev/null
@@ -0,0 +1,18 @@
+# A Heat environment file which can be used to enable OVN
+# extensions, configured via puppet
+resource_registry:
+  OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
+  OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
+  OS::TripleO::Services::NeutronCorePlugin: OS::TripleO::Services::NeutronCorePluginML2OVN
+  OS::TripleO::Services::ComputeNeutronCorePlugin: ../puppet/services/neutron-compute-plugin-ovn.yaml
+
+parameter_defaults:
+  NeutronMechanismDrivers: ovn
+  OVNDbHost: '0.0.0.0'
+  OVNSouthboundServerPort: 6642
+  OVNNorthboundServerPort: 6641
+  OVNDbConnectionTimeout: 60
+  OVNVifType: ovs
+  OVNNeutronSyncMode: log
+  OVNQosDriver: ovn-qos
+  OVNTunnelEncapType: geneve
index 5739921..b073798 100644 (file)
@@ -161,6 +161,7 @@ resource_registry:
   # things where VMs run
   OS::TripleO::Services::ComputeNeutronCorePlugin: puppet/services/neutron-plugin-ml2.yaml
   # Neutron Core Plugin Vendors (these typically override NeutronCorePlugin)
+  OS::TripleO::Services::NeutronCorePluginML2OVN: puppet/services/neutron-plugin-ml2-ovn.yaml
   OS::TripleO::Services::NeutronCorePluginPlumgrid: puppet/services/neutron-plugin-plumgrid.yaml
   OS::TripleO::Services::NeutronCorePluginNuage: puppet/services/neutron-plugin-nuage.yaml
   OS::TripleO::Services::NeutronCorePluginOpencontrail: puppet/services/neutron-plugin-opencontrail.yaml
diff --git a/puppet/services/neutron-compute-plugin-ovn.yaml b/puppet/services/neutron-compute-plugin-ovn.yaml
new file mode 100644 (file)
index 0000000..95e05dd
--- /dev/null
@@ -0,0 +1,45 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Neutron Compute OVN agent
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  DefaultPasswords:
+    default: {}
+    type: json
+  ServiceNetMap:
+    default: {}
+    description: Mapping of service_name -> network name. Typically set
+                 via parameter_defaults in the resource registry.  This
+                 mapping overrides those in ServiceNetMapDefaults.
+    type: json
+  OVNDbHost:
+    description: IP address on which the OVN DB servers are listening
+    type: string
+  OVNSouthboundServerPort:
+    description: Port of the Southbound DB Server
+    type: number
+    default: 6642
+  OVNTunnelEncapType:
+    description: Tunnel encapsulation type
+    type: string
+    default: geneve
+
+
+outputs:
+  role_data:
+    description: Role data for the Neutron Compute OVN agent
+    value:
+      service_name: neutron_compute_plugin_ovn
+      config_settings:
+        tripleo::profile::base::neutron::agents::ovn::ovn_db_host: {get_param: OVNDbHost}
+        ovn::southbound::port: {get_param: OVNSouthboundServerPort}
+        ovn::southbound::encap_type: {get_param: OVNTunnelEncapType}
+        ovn::controller::ovn_encap_ip: {get_param: [ServiceNetMap, NeutronApiNetwork]}
+      step_config: |
+        include ::tripleo::profile::base::neutron::agents::ovn
diff --git a/puppet/services/neutron-plugin-ml2-ovn.yaml b/puppet/services/neutron-plugin-ml2-ovn.yaml
new file mode 100644 (file)
index 0000000..e98ed49
--- /dev/null
@@ -0,0 +1,79 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Neutron ML2/OVN plugin configured with Puppet
+
+parameters:
+  ServiceNetMap:
+    default: {}
+    description: Mapping of service_name -> network name. Typically set
+                 via parameter_defaults in the resource registry.  This
+                 mapping overrides those in ServiceNetMapDefaults.
+    type: json
+  DefaultPasswords:
+    default: {}
+    type: json
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  OVNDbHost:
+    description: IP address on which the OVN DB servers are listening
+    type: string
+  OVNNorthboundServerPort:
+    description: Port of the OVN Northbound DB server
+    type: number
+    default: 6641
+  OVNDbConnectionTimeout:
+    description: Timeout in seconds for the OVSDB connection transaction
+    type: number
+    default: 60
+  OVNVifType:
+    description: Type of VIF to be used for ports
+    type: string
+    default: ovs
+    constraints:
+      - allowed_values:
+          - ovs
+          - vhostuser
+  OVNNeutronSyncMode:
+    description: The synchronization mode of OVN with Neutron DB
+    type: string
+    default: log
+    constraints:
+      - allowed_values:
+          - log
+          - off
+          - repair
+  OVNQosDriver:
+    description: OVN notification driver for Neutron QOS service plugin
+    type: string
+    default: NULL
+
+resources:
+
+  NeutronMl2Base:
+    type: ./neutron-plugin-ml2.yaml
+    properties:
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Neutron ML2/OVN plugin.
+    value:
+      service_name: neutron_plugin_ml2_ovn
+      config_settings:
+        map_merge:
+          - get_attr: [NeutronMl2Base, role_data, config_settings]
+          - ovn::northbound::port: {get_param: OVNNorthboundServerPort}
+            tripleo::profile::base::neutron::plugins::ml2::ovn::ovn_db_host: {get_param: OVNDbHost}
+            neutron::plugins::ovn::ovsdb_connection_timeout: {get_param: OVNDbConnectionTimeout}
+            neutron::plugins::ovn::neutron_sync_mode: {get_param: OVNNeutronSyncMode}
+            neutron::plugins::ovn::ovn_l3_mode: true
+            neutron::plugins::ovn::vif_type: {get_param: OVNVifType}
+            neutron::server::qos_notification_drivers: {get_param: OVNQosDriver}
+      step_config: |
+        include ::tripleo::profile::base::neutron::plugins::ml2