composable neutron metadata service
authorDan Prince <dprince@redhat.com>
Fri, 8 Apr 2016 21:09:30 +0000 (17:09 -0400)
committerDan Prince <dprince@redhat.com>
Wed, 18 May 2016 12:26:09 +0000 (08:26 -0400)
Adds new puppet and puppet pacemaker specific services for
the Neutron Metadata agent.

Partially-implements: blueprint composable-services-within-roles

Change-Id: I25f026507e78f18594599b3621613a54f246545d

environments/neutron-nuage-config.yaml
environments/neutron-opencontrail.yaml
environments/neutron-plumgrid.yaml
environments/puppet-pacemaker.yaml
overcloud-resource-registry-puppet.yaml
overcloud.yaml
puppet/controller.yaml
puppet/manifests/overcloud_controller.pp
puppet/manifests/overcloud_controller_pacemaker.pp
puppet/services/neutron-metadata.yaml [new file with mode: 0644]
puppet/services/pacemaker/neutron-metadata.yaml [new file with mode: 0644]

index 8eb25cc..0cd49a2 100644 (file)
@@ -3,6 +3,7 @@
 resource_registry:
   OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/neutron-nuage.yaml
   OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
+  OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None
 
 parameter_defaults:
   NeutronNuageOSControllerIp: '0.0.0.0'
@@ -16,7 +17,6 @@ parameter_defaults:
   UseForwardedFor: true
   NeutronCorePlugin: 'neutron.plugins.nuage.plugin.NuagePlugin'
   NeutronEnableDHCPAgent: false
-  NeutronEnableMetadataAgent: false
   NeutronEnableOVSAgent: false
   NeutronServicePlugins: []
   NovaOVSBridge: 'alubr0'
index 0a832f4..ceccd13 100644 (file)
@@ -5,11 +5,11 @@ resource_registry:
   OS::TripleO::ComputeExtraConfigPre: ../puppet/extraconfig/pre_deploy/compute/neutron-opencontrail.yaml
   OS::TripleO::Services::NeutronDhcpAgent: OS::Heat::None
   OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
+  OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None
 
 parameter_defaults:
   NeutronCorePlugin: neutron_plugin_contrail.plugins.opencontrail.contrail_plugin.NeutronPluginContrailCoreV2
   NeutronServicePlugins: neutron_plugin_contrail.plugins.opencontrail.loadbalancer.plugin.LoadBalancerPlugin
-  NeutronEnableMetadataAgent: false
   NeutronEnableOVSAgent: false
   NeutronEnableTunnelling: false
 
index 47a6f29..19f51cf 100755 (executable)
@@ -2,9 +2,10 @@
 # extensions, configured via puppet
 resource_registry:
   OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/neutron-plumgrid.yaml
-  # PLUMgrid doesn't require dhcp and l3 agents
+  # PLUMgrid doesn't require dhcp, l3, and metadata agents
   OS::TripleO::Services::NeutronDhcpAgent: OS::Heat::None
   OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
+  OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None
 
 parameter_defaults:
   NeutronCorePlugin: networking_plumgrid.neutron.plugins.plugin.NeutronPluginPLUMgridV2
@@ -25,6 +26,5 @@ parameter_defaults:
   #PLUMgridNeutronPluginVersion: present
   #PLUMgridPlumlibVersion: present
 
-  # PLUMgrid doesn't require ovs and metadata agents
-  NeutronEnableMetadataAgent: false
+  # PLUMgrid doesn't require the ovs agent
   NeutronEnableOVSAgent: false
index a73b1b4..631b7b8 100644 (file)
@@ -14,3 +14,4 @@ resource_registry:
   OS::TripleO::Services::GlanceRegistry: ../puppet/services/pacemaker/glance-registry.yaml
   OS::TripleO::Services::NeutronDhcpAgent: ../puppet/services/pacemaker/neutron-dhcp.yaml
   OS::TripleO::Services::NeutronL3Agent: ../puppet/services/pacemaker/neutron-l3.yaml
+  OS::TripleO::Services::NeutronMetadataAgent: ../puppet/services/pacemaker/neutron-metadata.yaml
index 58db81d..433cc72 100644 (file)
@@ -128,6 +128,7 @@ resource_registry:
   OS::TripleO::Services::GlanceRegistry: puppet/services/glance-registry.yaml
   OS::TripleO::Services::NeutronDhcpAgent: puppet/services/neutron-dhcp.yaml
   OS::TripleO::Services::NeutronL3Agent: puppet/services/neutron-l3.yaml
+  OS::TripleO::Services::NeutronMetadataAgent: puppet/services/neutron-metadata.yaml
 
 parameter_defaults:
   EnablePackageInstall: false
index 3fbfbe5..fb1e53d 100644 (file)
@@ -665,6 +665,7 @@ parameters:
       - OS::TripleO::Services::GlanceRegistry
       - OS::TripleO::Services::NeutronDhcpAgent
       - OS::TripleO::Services::NeutronL3Agent
+      - OS::TripleO::Services::NeutronMetadataAgent
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the Controllers.
index 57c1c2a..9f183b9 100644 (file)
@@ -324,10 +324,6 @@ parameters:
       scripts or be sure to keep 'datacentre' as a mapping network name.
     type: comma_delimited_list
     default: "datacentre:br-ex"
-  NeutronEnableMetadataAgent:
-    description: Knob to enable/disable Metadata agent
-    type: boolean
-    default: true
   NeutronEnableOVSAgent:
     description: Knob to enable/disable OVS Agent
     type: boolean
@@ -968,7 +964,6 @@ resources:
             template: DRIVERS
             params:
               DRIVERS: {get_param: NeutronTypeDrivers}
-        neutron_enable_metadata_agent: {get_param: NeutronEnableMetadataAgent}
         neutron_enable_ovs_agent: {get_param: NeutronEnableOVSAgent}
         neutron_mechanism_drivers:
           str_replace:
@@ -1381,14 +1376,11 @@ resources:
                 neutron::agents::ml2::ovs::l2_population: {get_input: neutron_enable_l2pop}
                 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
                 neutron::plugins::ml2::flat_networks: {get_input: neutron_flat_networks}
-                neutron::agents::metadata::shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
                 neutron::agents::metadata::metadata_ip: {get_input: neutron_api_network}
-                neutron::agents::metadata::metadata_workers: {get_input: neutron_workers}
                 neutron_agent_mode: {get_input: neutron_agent_mode}
                 neutron_router_distributed: {get_input: neutron_router_distributed}
                 neutron::core_plugin: {get_input: neutron_core_plugin}
                 neutron::service_plugins: {get_input: neutron_service_plugins}
-                neutron::enable_metadata_agent: {get_input: neutron_enable_metadata_agent}
                 neutron::enable_ovs_agent: {get_input: neutron_enable_ovs_agent}
                 neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
                 neutron::plugins::ml2::mechanism_drivers: {get_input: neutron_mechanism_drivers}
@@ -1407,9 +1399,7 @@ resources:
                 neutron::agents::ml2::ovs::tunnel_types: {get_input: neutron_tunnel_types}
                 neutron::agents::ml2::ovs::extensions: {get_input: neutron_agent_extensions}
                 neutron::server::auth_password: {get_input: neutron_password}
-                neutron::agents::metadata::auth_password: {get_input: neutron_password}
                 neutron_dsn: {get_input: neutron_dsn}
-                neutron::agents::metadata::auth_url: {get_input: keystone_identity_uri}
                 neutron::db::mysql::password: {get_input: neutron_password}
                 neutron::keystone::auth::public_url: {get_input: neutron_public_url }
                 neutron::keystone::auth::internal_url: {get_input: neutron_internal_url }
index 79e0826..7ea9214 100644 (file)
@@ -305,7 +305,6 @@ if hiera('step') >= 4 {
       metadata_proxy_shared_secret => hiera('nova::api::neutron_metadata_proxy_shared_secret'),
     }
   } else {
-    include ::neutron::agents::metadata
 
     # If the value of core plugin is set to 'midonet',
     # skip all the ML2 configuration
index abb66c6..4e0d1c3 100644 (file)
@@ -592,12 +592,6 @@ if hiera('step') >= 4 or ( hiera('step') >= 3 and $sync_db ) {
       metadata_proxy_shared_secret => hiera('nova::api::neutron_metadata_proxy_shared_secret'),
     }
   }
-  if hiera('neutron::enable_metadata_agent',true) {
-    class { '::neutron::agents::metadata':
-      manage_service => false,
-      enabled        => false,
-    }
-  }
   include ::neutron::plugins::ml2
   class { '::neutron::agents::ml2::ovs':
     manage_service => false,
@@ -1131,11 +1125,6 @@ if hiera('step') >= 5 {
         clone_params => 'interleave=true',
       }
     }
-    if hiera('neutron::enable_metadata_agent', true) {
-      pacemaker::resource::service { $::neutron::params::metadata_agent_service:
-        clone_params => 'interleave=true',
-      }
-    }
     if hiera('neutron::enable_ovs_agent', true) {
       pacemaker::resource::ocf { $::neutron::params::ovs_cleanup_service:
         ocf_agent_name => 'neutron:OVSCleanup',
diff --git a/puppet/services/neutron-metadata.yaml b/puppet/services/neutron-metadata.yaml
new file mode 100644 (file)
index 0000000..1fe139f
--- /dev/null
@@ -0,0 +1,45 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Neutron Metadata agent configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  MysqlVirtualIPUri:
+    type: string
+    default: ''
+  NeutronMetadataProxySharedSecret:
+    description: Shared secret to prevent spoofing
+    type: string
+    hidden: true
+  NeutronWorkers:
+    default: 0
+    description: Number of workers for Neutron service.
+    type: number
+  NeutronPassword:
+    description: The password for the neutron service and db account, used by neutron agents.
+    type: string
+    hidden: true
+
+resources:
+
+  NeutronBase:
+    type: ./neutron-base.yaml
+
+outputs:
+  role_data:
+    description: Role data for the Neutron Metadata agent service.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [NeutronBase, role_data, config_settings]
+          - neutron::agents::metadata::shared_secret: {get_param: NeutronMetadataProxySharedSecret}
+            neutron::agents::metadata::metadata_workers: {get_param: NeutronWorkers}
+            neutron::agents::metadata::auth_password: {get_param: NeutronPassword}
+            neutron::agents::metadata::auth_url: { get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix] }
+      step_config: |
+        include tripleo::profile::base::neutron::metadata
diff --git a/puppet/services/pacemaker/neutron-metadata.yaml b/puppet/services/pacemaker/neutron-metadata.yaml
new file mode 100644 (file)
index 0000000..79baf1e
--- /dev/null
@@ -0,0 +1,33 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Neutron Metadata service with Pacemaker configured with Puppet.
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  MysqlVirtualIPUri:
+    type: string
+    default: ''
+
+resources:
+
+  NeutronMetadataBase:
+    type: ../neutron-metadata.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+      MysqlVirtualIPUri: {get_param: MysqlVirtualIPUri}
+
+outputs:
+  role_data:
+    description: Role data for the Neutron Metadata role.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [NeutronMetadataBase, role_data, config_settings]
+          - tripleo::profile::pacemaker::neutron::enable_metadata: True
+      step_config: |
+        include ::tripleo::profile::pacemaker::neutron::metadata