summaryrefslogtreecommitdiffstats
path: root/puppet
diff options
context:
space:
mode:
Diffstat (limited to 'puppet')
-rw-r--r--puppet/controller-config-pacemaker.yaml5
-rw-r--r--puppet/controller-config.yaml5
-rw-r--r--puppet/controller-post.yaml7
-rw-r--r--puppet/controller.yaml7
-rwxr-xr-xpuppet/extraconfig/pre_deploy/controller/neutron-plumgrid.yaml113
-rw-r--r--puppet/hieradata/controller.yaml1
-rw-r--r--puppet/manifests/overcloud_compute.pp24
-rw-r--r--puppet/manifests/overcloud_controller.pp14
-rw-r--r--puppet/manifests/overcloud_controller_pacemaker.pp10
-rw-r--r--puppet/services/README.rst50
-rw-r--r--puppet/services/services.yaml40
11 files changed, 271 insertions, 5 deletions
diff --git a/puppet/controller-config-pacemaker.yaml b/puppet/controller-config-pacemaker.yaml
index 21db825a..dfebcf82 100644
--- a/puppet/controller-config-pacemaker.yaml
+++ b/puppet/controller-config-pacemaker.yaml
@@ -8,6 +8,10 @@ parameters:
default: false
description: Whether to run config management (e.g. Puppet) in debug mode.
type: boolean
+ StepConfig:
+ type: string
+ description: Config manifests that will be used to step through the deployment.
+ default: ''
resources:
@@ -26,6 +30,7 @@ resources:
- ''
- - get_file: manifests/overcloud_controller_pacemaker.pp
- get_file: manifests/ringbuilder.pp
+ - {get_param: StepConfig}
outputs:
OS::stack_id:
diff --git a/puppet/controller-config.yaml b/puppet/controller-config.yaml
index f7a6a56d..458aff32 100644
--- a/puppet/controller-config.yaml
+++ b/puppet/controller-config.yaml
@@ -8,6 +8,10 @@ parameters:
default: false
description: Whether to run config management (e.g. Puppet) in debug mode.
type: boolean
+ StepConfig:
+ type: string
+ description: Config manifests that will be used to step through the deployment.
+ default: ''
resources:
@@ -26,6 +30,7 @@ resources:
- ''
- - get_file: manifests/overcloud_controller.pp
- get_file: manifests/ringbuilder.pp
+ - {get_param: StepConfig}
outputs:
OS::stack_id:
diff --git a/puppet/controller-post.yaml b/puppet/controller-post.yaml
index 04f20b61..80b08a06 100644
--- a/puppet/controller-post.yaml
+++ b/puppet/controller-post.yaml
@@ -13,7 +13,10 @@ parameters:
NodeConfigIdentifiers:
type: json
description: Value which changes if the node configuration may need to be re-applied
-
+ StepConfig:
+ type: string
+ description: Config manifests that will be used to step through the deployment.
+ default: ''
resources:
@@ -35,6 +38,8 @@ resources:
ControllerPuppetConfig:
type: OS::TripleO::ControllerConfig
+ properties:
+ StepConfig: {get_param: StepConfig}
# Step through a series of Puppet runs using the same manifest.
# NOTE: To enable stepping through the deployments via heat hooks,
diff --git a/puppet/controller.yaml b/puppet/controller.yaml
index 9b362a85..d966700f 100644
--- a/puppet/controller.yaml
+++ b/puppet/controller.yaml
@@ -790,6 +790,9 @@ parameters:
type: json
description: Optional scheduler hints to pass to nova
default: {}
+ ServiceConfigSettings:
+ type: json
+ default: {}
resources:
@@ -1294,6 +1297,7 @@ resources:
- heat_config_%{::deploy_config_name}
- controller_extraconfig
- extraconfig
+ - service_configs
- controller
- database
- object
@@ -1314,7 +1318,10 @@ resources:
- neutron_nuage_data # Optionally provided by ControllerExtraConfigPre
- midonet_data #Optionally provided by AllNodesExtraConfig
- neutron_opencontrail_data # Optionally provided by ControllerExtraConfigPre
+ - neutron_plumgrid_data # Optionally provided by ControllerExtraConfigPre
datafiles:
+ service_configs:
+ mapped_data: {get_param: ServiceConfigSettings}
controller_extraconfig:
mapped_data: {get_param: ControllerExtraConfig}
extraconfig:
diff --git a/puppet/extraconfig/pre_deploy/controller/neutron-plumgrid.yaml b/puppet/extraconfig/pre_deploy/controller/neutron-plumgrid.yaml
new file mode 100755
index 00000000..7c0a7ad2
--- /dev/null
+++ b/puppet/extraconfig/pre_deploy/controller/neutron-plumgrid.yaml
@@ -0,0 +1,113 @@
+heat_template_version: 2015-04-30
+
+description: Controller hieradata for Neutron PLUMgrid configuration
+
+parameters:
+ server:
+ description: ID of the controller node to apply this config to
+ type: string
+ PLUMgridDirectorServer:
+ description: IP address of the PLUMgrid Director Server
+ type: string
+ default: 127.0.0.1
+ PLUMgridDirectorServerPort:
+ description: Port of the PLUMgrid Director Server
+ type: string
+ default: 443
+ PLUMgridUsername:
+ description: Username for PLUMgrid platform
+ type: string
+ PLUMgridPassword:
+ description: Password for PLUMgrid platform
+ type: string
+ hidden: true
+ PLUMgridServerTimeOut:
+ description: Request timeout duration (seconds) to PLUMgrid platform
+ type: string
+ default: 99
+ PLUMgridNovaMetadataIP:
+ description: IP address of Nova Metadata
+ type: string
+ default: 169.254.169.254
+ PLUMgridNovaMetadataPort:
+ description: Port of Nova Metadata
+ type: string
+ default: 8775
+ PLUMgridL2GatewayVendor:
+ description: Vendor for L2 Gateway Switch
+ type: string
+ default: vendor
+ PLUMgridL2GatewayUsername:
+ description: Username for L2 Gateway Switch
+ type: string
+ default: username
+ PLUMgridL2GatewayPassword:
+ description: Password for L2 Gateway Switch
+ type: string
+ hidden: true
+ PLUMgridIdentityVersion:
+ description: Keystone Identity version
+ type: string
+ default: v2.0
+ PLUMgridConnectorType:
+ description: Neutron Network Connector Type
+ type: string
+ default: distributed
+ PLUMgridNeutronPluginVersion:
+ description: PLUMgrid Neutron Plugin version
+ type: string
+ default: present
+ PLUMgridPlumlibVersion:
+ description: PLUMgrid Plumlib version
+ type: string
+ default: present
+
+
+resources:
+ ControllerPLUMgridConfig:
+ type: OS::Heat::StructuredConfig
+ properties:
+ group: os-apply-config
+ config:
+ hiera:
+ datafiles:
+ neutron_plumgrid_data:
+ mapped_data:
+ neutron::plugins::plumgrid::director_server: {get_input: plumgrid_director_server}
+ neutron::plugins::plumgrid::director_server_port: {get_input: plumgrid_director_server_port}
+ neutron::plugins::plumgrid::username: {get_input: plumgrid_username}
+ neutron::plugins::plumgrid::password: {get_input: plumgrid_password}
+ neutron::plugins::plumgrid::nova_metadata_ip: {get_input: plumgrid_nova_metadata_ip}
+ neutron::plugins::plumgrid::nova_metadata_port: {get_input: plumgrid_nova_metadata_port}
+ neutron::plugins::plumgrid::l2gateway_vendor: {get_input: plumgrid_l2gateway_vendor}
+ neutron::plugins::plumgrid::l2gateway_sw_username: {get_input: plumgrid_l2gateway_sw_username}
+ neutron::plugins::plumgrid::l2gateway_sw_password: {get_input: plumgrid_l2gateway_sw_password}
+ neutron::plugins::plumgrid::connector_type: {get_input: plumgrid_connector_type}
+ neutron::plugins::plumgrid::identity_version: {get_input: plumgrid_identity_version}
+ neutron::plugins::plumgrid::package_ensure: {get_input: plumgrid_neutron_plugin_version}
+ neutron::plugins::plumgrid::plumlib_package_ensure: {get_input: plumgrid_plumlib_version}
+
+ ControllerPLUMgridDeployment:
+ type: OS::Heat::StructuredDeployment
+ properties:
+ config: {get_resource: ControllerPLUMgridConfig}
+ server: {get_param: server}
+ input_values:
+ plumgrid_director_server: {get_param: PLUMgridDirectorServer}
+ plumgrid_director_server_port: {get_param: PLUMgridDirectorServerPort}
+ plumgrid_username: {get_param: PLUMgridUsername}
+ plumgrid_password: {get_param: PLUMgridPassword}
+ plumgrid_nova_metadata_ip: {get_param: PLUMgridNovaMetadataIP}
+ plumgrid_nova_metadata_port: {get_param: PLUMgridNovaMetadataPort}
+ plumgrid_l2gateway_vendor: {get_param: PLUMgridL2GatewayVendor}
+ plumgrid_l2gateway_sw_username: {get_param: PLUMgridL2GatewayUsername}
+ plumgrid_l2gateway_sw_password: {get_param: PLUMgridL2GatewayPassword}
+ plumgrid_identity_version: {get_param: PLUMgridIdentityVersion}
+ plumgrid_connector_type: {get_param: PLUMgridConnectorType}
+ plumgrid_neutron_plugin_version: {get_param: PLUMgridNeutronPluginVersion}
+ plumgrid_plumlib_version: {get_param: PLUMgridPlumlibVersion}
+
+outputs:
+ deploy_stdout:
+ description: Deployment reference, used to trigger puppet apply on changes
+ value: {get_attr: [ControllerPLUMgridDeployment, deploy_stdout]}
diff --git a/puppet/hieradata/controller.yaml b/puppet/hieradata/controller.yaml
index 3e523f1b..5e87793a 100644
--- a/puppet/hieradata/controller.yaml
+++ b/puppet/hieradata/controller.yaml
@@ -90,7 +90,6 @@ neutron::agents::dhcp::dnsmasq_config_file: /etc/neutron/dnsmasq-neutron.conf
# nova
nova::notify_on_state_change: 'vm_and_task_state'
nova::api::default_floating_pool: 'public'
-nova::api::osapi_v3: true
nova::api::sync_db_api: true
nova::scheduler::filter::ram_allocation_ratio: '1.0'
nova::cron::archive_deleted_rows::hour: '*/12'
diff --git a/puppet/manifests/overcloud_compute.pp b/puppet/manifests/overcloud_compute.pp
index 13ae31c5..cc58cb14 100644
--- a/puppet/manifests/overcloud_compute.pp
+++ b/puppet/manifests/overcloud_compute.pp
@@ -152,8 +152,32 @@ elsif hiera('neutron::core_plugin') == 'neutron_plugin_contrail.plugins.opencont
# require => Class['contrail::vrouter'],
#}
}
+elsif hiera('neutron::core_plugin') == 'networking_plumgrid.neutron.plugins.plugin.NeutronPluginPLUMgridV2' {
+ # forward all ipv4 traffic
+ # this is required for the vms to pass through the gateways public interface
+ sysctl::value { 'net.ipv4.ip_forward': value => '1' }
+
+ # ifc_ctl_pp needs to be invoked by root as part of the vif.py when a VM is powered on
+ file { '/etc/sudoers.d/ifc_ctl_sudoers':
+ ensure => file,
+ owner => root,
+ group => root,
+ mode => '0440',
+ content => "nova ALL=(root) NOPASSWD: /opt/pg/bin/ifc_ctl_pp *\n",
+ }
+}
else {
+ # NOTE: this code won't live in puppet-neutron until Neutron OVS agent
+ # can be gracefully restarted. See https://review.openstack.org/#/c/297211
+ # In the meantime, it's safe to restart the agent on each change in neutron.conf,
+ # because Puppet changes are supposed to be done during bootstrap and upgrades.
+ # Some resource managed by Neutron_config (like messaging and logging options) require
+ # a restart of OVS agent. This code does it.
+ # In Newton, OVS agent will be able to be restarted gracefully so we'll drop the code
+ # from here and fix it in puppet-neutron.
+ Neutron_config<||> ~> Service['neutron-ovs-agent-service']
+
include ::neutron::plugins::ml2
include ::neutron::agents::ml2::ovs
diff --git a/puppet/manifests/overcloud_controller.pp b/puppet/manifests/overcloud_controller.pp
index ff2264cf..c6667ae6 100644
--- a/puppet/manifests/overcloud_controller.pp
+++ b/puppet/manifests/overcloud_controller.pp
@@ -344,13 +344,21 @@ if hiera('step') >= 4 {
include ::neutron::server
include ::neutron::server::notifications
- # If the value of core plugin is set to 'nuage' or 'opencontrail',
- # include nuage or opencontrail core plugins, and it does not
- # need the l3, dhcp and metadata agents
+ # If the value of core plugin is set to 'nuage' or'opencontrail' or 'plumgrid',
+ # include nuage or opencontrail or plumgrid core plugins
+ # else use the default value of 'ml2'
if hiera('neutron::core_plugin') == 'neutron.plugins.nuage.plugin.NuagePlugin' {
include ::neutron::plugins::nuage
} elsif hiera('neutron::core_plugin') == 'neutron_plugin_contrail.plugins.opencontrail.contrail_plugin.NeutronPluginContrailCoreV2' {
include ::neutron::plugins::opencontrail
+ }
+ elsif hiera('neutron::core_plugin') == 'networking_plumgrid.neutron.plugins.plugin.NeutronPluginPLUMgridV2' {
+ class { '::neutron::plugins::plumgrid' :
+ connection => hiera('neutron::server::database_connection'),
+ controller_priv_host => hiera('keystone_admin_api_vip'),
+ admin_password => hiera('admin_password'),
+ metadata_proxy_shared_secret => hiera('nova::api::neutron_metadata_proxy_shared_secret'),
+ }
} else {
include ::neutron::agents::l3
include ::neutron::agents::dhcp
diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp
index b271114f..f1092321 100644
--- a/puppet/manifests/overcloud_controller_pacemaker.pp
+++ b/puppet/manifests/overcloud_controller_pacemaker.pp
@@ -185,8 +185,10 @@ if hiera('step') >= 1 {
'bind-address' => $::hostname,
'max_connections' => hiera('mysql_max_connections'),
'open_files_limit' => '-1',
+ 'wsrep_on' => 'ON',
'wsrep_provider' => '/usr/lib64/galera/libgalera_smm.so',
'wsrep_cluster_name' => 'galera_cluster',
+ 'wsrep_cluster_address' => "gcomm://${galera_nodes}",
'wsrep_slave_threads' => '1',
'wsrep_certify_nonPK' => '1',
'wsrep_max_ws_rows' => '131072',
@@ -792,6 +794,14 @@ if hiera('step') >= 4 {
keystone_password => hiera('neutron::server::auth_password')
}
}
+ if hiera('neutron::core_plugin') == 'networking_plumgrid.neutron.plugins.plugin.NeutronPluginPLUMgridV2' {
+ class { '::neutron::plugins::plumgrid' :
+ connection => hiera('neutron::server::database_connection'),
+ controller_priv_host => hiera('keystone_admin_api_vip'),
+ admin_password => hiera('admin_password'),
+ metadata_proxy_shared_secret => hiera('nova::api::neutron_metadata_proxy_shared_secret'),
+ }
+ }
if hiera('neutron::enable_dhcp_agent',true) {
class { '::neutron::agents::dhcp' :
manage_service => false,
diff --git a/puppet/services/README.rst b/puppet/services/README.rst
new file mode 100644
index 00000000..38d2ac64
--- /dev/null
+++ b/puppet/services/README.rst
@@ -0,0 +1,50 @@
+========
+services
+========
+
+A TripleO nested stack Heat template that encapsulates generic configuration
+data to configure a specific service. This generally includes everything
+needed to configure the service excluding the local bind ports which
+are still managed in the per-node role templates directly (controller.yaml,
+compute.yaml, etc.). All other (global) service settings go into
+the puppet/service templates.
+
+Input Parameters
+----------------
+
+Each service may define its own input parameters and defaults.
+Operators will use the parameter_defaults section of any Heat
+environment to set per service parameters.
+
+Config Settings
+---------------
+
+Each service may define a config_settings output variable which returns
+Hiera settings to be configured.
+
+Steps
+-----
+
+Each service may define an output variable which returns a puppet manifest
+snippet that will run at each of the following steps. Earlier manifests
+are re-asserted when applying latter ones.
+
+ * config_settings: Custom hiera settings for this service.
+
+ * step_config: A puppet manifest that is used to step through the deployment
+ sequence. Each sequence is given a "step" (via hiera('step') that provides
+ information for when puppet classes should activate themselves.
+
+ Steps correlate to the following:
+
+ 1) Load Balancer configuration
+
+ 2) Core Services (Database/Rabbit/NTP/etc.)
+
+ 3) Early Openstack Service setup (Ringbuilder, etc.)
+
+ 4) General OpenStack Services
+
+ 5) Service activation (Pacemaker)
+
+ 6) Fencing (Pacemaker)
diff --git a/puppet/services/services.yaml b/puppet/services/services.yaml
new file mode 100644
index 00000000..f9681634
--- /dev/null
+++ b/puppet/services/services.yaml
@@ -0,0 +1,40 @@
+heat_template_version: 2016-04-08
+
+description: >
+ Utility stack to convert an array of services into a set of combined
+ role configs.
+
+parameters:
+ Services:
+ default: []
+ description: |
+ List nested stack service templates.
+ type: comma_delimited_list
+ EndpointMap:
+ default: {}
+ description: Mapping of service endpoint -> protocol. Typically set
+ via parameter_defaults in the resource registry.
+ type: json
+ MysqlVirtualIPUri:
+ default: ''
+ type: string
+ description: The URI virtual IP for the MySQL service.
+
+resources:
+
+ ServiceChain:
+ type: OS::Heat::ResourceChain
+ properties:
+ resources: {get_param: Services}
+ concurrent: true
+ resource_properties:
+ EndpointMap: {get_param: EndpointMap}
+ MysqlVirtualIPUri: {get_param: MysqlVirtualIPUri}
+
+outputs:
+ config_settings:
+ description: Configuration settings.
+ value: {map_merge: {get_attr: [ServiceChain, role_data, config_settings]}}
+ step_config:
+ description: Step configuration.
+ value: {list_join: ["\n", {get_attr: [ServiceChain, role_data, step_config]}]}