diff options
Diffstat (limited to 'build')
-rwxr-xr-x | build/instack.sh | 30 | ||||
-rw-r--r-- | build/opnfv-tripleo-heat-templates.patch (renamed from build/opendaylight-tripleo-heat-templates.patch) | 315 |
2 files changed, 300 insertions, 45 deletions
diff --git a/build/instack.sh b/build/instack.sh index 958681ba..f3a366a0 100755 --- a/build/instack.sh +++ b/build/instack.sh @@ -4,6 +4,7 @@ declare -i CNT #rdo_images_uri=https://repos.fedorapeople.org/repos/openstack-m/rdo-images-centos-liberty-opnfv rdo_images_uri=file:///stable-images +onos_artifacts_uri=file:///stable-images/onos vm_index=4 RDO_RELEASE=liberty @@ -235,7 +236,7 @@ pushd stack # make a copy of the cached overcloud-full image cp overcloud-full.qcow2 overcloud-full-odl.qcow2 -# remove unnessesary packages and install nessesary packages +# remove unnecessary packages and install necessary packages LIBGUESTFS_BACKEND=direct virt-customize --run-command "yum remove -y openstack-neutron-openvswitch" \ --upload /etc/yum.repos.d/opendaylight.repo:/etc/yum.repos.d/opendaylight.repo \ --install opendaylight,python-networking-odl -a overcloud-full-odl.qcow2 @@ -253,8 +254,8 @@ LIBGUESTFS_BACKEND=direct virt-customize --upload puppet-opendaylight.tar.gz:/et --run-command "cd /etc/puppet/modules/ && tar xzf puppet-opendaylight.tar.gz" -a overcloud-full-odl.qcow2 # Patch in OpenDaylight installation and configuration -LIBGUESTFS_BACKEND=direct virt-customize --upload ../opendaylight-tripleo-heat-templates.patch:/tmp \ - --run-command "cd /usr/share/openstack-tripleo-heat-templates/ && patch -Np1 < /tmp/opendaylight-tripleo-heat-templates.patch" \ +LIBGUESTFS_BACKEND=direct virt-customize --upload ../opnfv-tripleo-heat-templates.patch:/tmp \ + --run-command "cd /usr/share/openstack-tripleo-heat-templates/ && patch -Np1 < /tmp/opnfv-tripleo-heat-templates.patch" \ -a instack.qcow2 LIBGUESTFS_BACKEND=direct virt-customize --upload ../opendaylight-puppet-neutron.patch:/tmp \ --run-command "cd /etc/puppet/modules/neutron && patch -Np1 < /tmp/opendaylight-puppet-neutron.patch" \ @@ -262,6 +263,29 @@ LIBGUESTFS_BACKEND=direct virt-customize --upload ../opendaylight-puppet-neutron ## END WORK AROUND popd +## WORK AROUND +## when ONOS lands in upstream OPNFV artifacts this can be removed + +# upload the onos puppet module +pushd stack + +rm -rf puppet-onos +git clone https://github.com/bobzhouHW/puppet-onos.git +pushd puppet-onos +# download jdk, onos and maven dependancy packages. +pushd files +curl ${onos_artifacts_uri}/jdk-8u51-linux-x64.tar.gz -o ./jdk-8u51-linux-x64.tar.gz +curl ${onos_artifacts_uri}/onos-1.3.0.tar.gz -o ./onos-1.3.0.tar.gz +curl ${onos_artifacts_uri}/repository.tar -o ./repository.tar +popd +git archive --format=tar.gz --prefix=onos/ HEAD > ../puppet-onos.tar.gz +popd +LIBGUESTFS_BACKEND=direct virt-customize --upload puppet-onos.tar.gz:/etc/puppet/modules/ \ + --run-command "cd /etc/puppet/modules/ && tar xzf puppet-onos.tar.gz" -a overcloud-full-odl.qcow2 + +## END WORK AROUND +popd + # move and Sanitize private keys from instack.json file mv stack/instackenv.json instackenv-virt.json sed -i '/pm_password/c\ "pm_password": "INSERT_STACK_USER_PRIV_KEY",' instackenv-virt.json diff --git a/build/opendaylight-tripleo-heat-templates.patch b/build/opnfv-tripleo-heat-templates.patch index e163b452..be40742e 100644 --- a/build/opendaylight-tripleo-heat-templates.patch +++ b/build/opnfv-tripleo-heat-templates.patch @@ -1,4 +1,4 @@ -From 94df637aa818881118c52b6e25d3266e0fa6b853 Mon Sep 17 00:00:00 2001 +From 63f8b6412f526ba245d86f40eb6b1ae1ee06485d Mon Sep 17 00:00:00 2001 From: Dan Radez <dradez@redhat.com> Date: Sun, 13 Dec 2015 21:20:40 -0500 Subject: [PATCH] Adds OpenDaylight support @@ -6,25 +6,43 @@ Subject: [PATCH] Adds OpenDaylight support To enable OpenDaylight on controllers use environments/opendaylight.yaml To enable OpenDaylight on external node use environments/opendaylight-external.yaml + +Adds onos support --- - environments/opendaylight-external.yaml | 25 +++ - environments/opendaylight.yaml | 25 +++ + environments/onos.yaml | 8 + + environments/opendaylight-external.yaml | 25 ++ + environments/opendaylight.yaml | 25 ++ overcloud-resource-registry-puppet.yaml | 3 + - overcloud-without-mergepy.yaml | 62 ++++++ + overcloud-without-mergepy.yaml | 62 +++++ puppet/all-nodes-config.yaml | 6 + - puppet/compute.yaml | 19 ++ - puppet/controller.yaml | 27 +++ - puppet/manifests/overcloud_compute.pp | 27 ++- - puppet/manifests/overcloud_controller.pp | 47 ++++- - puppet/manifests/overcloud_controller_pacemaker.pp | 184 +++++++++++------- - puppet/manifests/overcloud_opendaylight.pp | 26 +++ - puppet/opendaylight-puppet.yaml | 209 +++++++++++++++++++++ - 12 files changed, 580 insertions(+), 80 deletions(-) + puppet/compute.yaml | 25 ++ + puppet/controller.yaml | 35 +++ + puppet/manifests/overcloud_compute.pp | 33 ++- + puppet/manifests/overcloud_controller.pp | 80 +++++- + puppet/manifests/overcloud_controller_pacemaker.pp | 299 +++++++++++++-------- + puppet/manifests/overcloud_opendaylight.pp | 26 ++ + puppet/opendaylight-puppet.yaml | 209 ++++++++++++++ + 13 files changed, 712 insertions(+), 124 deletions(-) + create mode 100644 environments/onos.yaml create mode 100644 environments/opendaylight-external.yaml create mode 100644 environments/opendaylight.yaml create mode 100644 puppet/manifests/overcloud_opendaylight.pp create mode 100644 puppet/opendaylight-puppet.yaml +diff --git a/environments/onos.yaml b/environments/onos.yaml +new file mode 100644 +index 0000000..510aca9 +--- /dev/null ++++ b/environments/onos.yaml +@@ -0,0 +1,8 @@ ++parameters: ++ #This a bug for odl deployment. Once bug fixed OpenDaylightCount can be remove. ++ OpenDaylightCount: 0 ++ NeutronL3HA: false ++ ExtraConfig: ++ neutron_service_plugins: ['onos_router'] ++ neutron_mechanism_drivers: ['onos_ml2'] ++ neutron_tenant_network_type: vxlan diff --git a/environments/opendaylight-external.yaml b/environments/opendaylight-external.yaml new file mode 100644 index 0000000..411df21 @@ -241,10 +259,10 @@ index 2bc519b..98283c2 100644 list_join: - ',' diff --git a/puppet/compute.yaml b/puppet/compute.yaml -index e259cff..d2184bd 100644 +index e259cff..5527669 100644 --- a/puppet/compute.yaml +++ b/puppet/compute.yaml -@@ -213,6 +213,19 @@ parameters: +@@ -213,6 +213,23 @@ parameters: NtpServer: type: string default: '' @@ -261,34 +279,40 @@ index e259cff..d2184bd 100644 + type: string + description: The password for the opendaylight server. + hidden: true ++ ONOSPort: ++ default: 8181 ++ description: Set onos service port ++ type: number RabbitHost: type: string default: '' # Has to be here because of the ignored empty value bug -@@ -415,6 +428,9 @@ resources: +@@ -415,6 +432,10 @@ resources: neutron::rabbit_user: {get_input: rabbit_username} neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl} neutron::rabbit_port: {get_input: rabbit_client_port} + opendaylight_port: {get_input: opendaylight_port} + opendaylight_username: {get_input: opendaylight_username} + opendaylight_password: {get_input: opendaylight_password} ++ onos_port: {get_input: onos_port} neutron_flat_networks: {get_input: neutron_flat_networks} neutron_host: {get_input: neutron_host} neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip} -@@ -468,6 +484,9 @@ resources: +@@ -468,6 +489,10 @@ resources: snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName} snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword} glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]} + opendaylight_port: {get_param: OpenDaylightPort} + opendaylight_username: {get_param: OpenDaylightUsername} + opendaylight_password: {get_param: OpenDaylightPassword} ++ onos_port: {get_param: ONOSPort} neutron_flat_networks: {get_param: NeutronFlatNetworks} neutron_host: {get_param: NeutronHost} neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]} diff --git a/puppet/controller.yaml b/puppet/controller.yaml -index fdc1821..955fdc4 100644 +index fdc1821..865a838 100644 --- a/puppet/controller.yaml +++ b/puppet/controller.yaml -@@ -443,6 +443,23 @@ parameters: +@@ -443,6 +443,27 @@ parameters: NtpServer: type: string default: '' @@ -309,10 +333,14 @@ index fdc1821..955fdc4 100644 + type: string + description: The password for the opendaylight server. + hidden: true ++ ONOSPort: ++ default: 8181 ++ description: Set onos service port ++ type: number PcsdPassword: type: string description: The password for the 'pcsd' user. -@@ -819,6 +836,10 @@ resources: +@@ -819,6 +840,11 @@ resources: template: tripleo-CLUSTER params: CLUSTER: {get_param: MysqlClusterUniquePart} @@ -320,10 +348,11 @@ index fdc1821..955fdc4 100644 + opendaylight_install: {get_param: OpenDaylightInstall} + opendaylight_username: {get_param: OpenDaylightUsername} + opendaylight_password: {get_param: OpenDaylightPassword} ++ onos_port: {get_param: ONOSPort} neutron_flat_networks: {get_param: NeutronFlatNetworks} neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret} neutron_agent_mode: {get_param: NeutronAgentMode} -@@ -1151,6 +1172,12 @@ resources: +@@ -1151,6 +1177,15 @@ resources: mysql_bind_host: {get_input: mysql_network} mysql_virtual_ip: {get_input: mysql_virtual_ip} @@ -332,15 +361,18 @@ index fdc1821..955fdc4 100644 + opendaylight_install: {get_input: opendaylight_install} + opendaylight_username: {get_input: opendaylight_username} + opendaylight_password: {get_input: opendaylight_password} ++ ++ # ONOS ++ onos_port: {get_input: onos_port} + # Neutron neutron::bind_host: {get_input: neutron_api_network} neutron::rabbit_password: {get_input: rabbit_password} diff --git a/puppet/manifests/overcloud_compute.pp b/puppet/manifests/overcloud_compute.pp -index cd41cc7..a81f88d 100644 +index cd41cc7..b8336ee 100644 --- a/puppet/manifests/overcloud_compute.pp +++ b/puppet/manifests/overcloud_compute.pp -@@ -75,9 +75,30 @@ class { '::neutron::plugins::ml2': +@@ -75,9 +75,36 @@ class { '::neutron::plugins::ml2': tenant_network_types => [hiera('neutron_tenant_network_type')], } @@ -366,6 +398,12 @@ index cd41cc7..a81f88d 100644 + } + } + ++} elsif 'onos_ml2' in hiera('neutron_mechanism_drivers') { ++ $controller_ips = split(hiera('controller_node_ips'), ',') ++ class {'onos::ovs_computer': ++ manager_ip => $controller_ips[0] ++ } ++ +} else { + class { 'neutron::agents::ml2::ovs': + bridge_mappings => split(hiera('neutron_bridge_mappings'), ','), @@ -375,10 +413,10 @@ index cd41cc7..a81f88d 100644 if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') { diff --git a/puppet/manifests/overcloud_controller.pp b/puppet/manifests/overcloud_controller.pp -index 1b0429b..9f99e45 100644 +index 1b0429b..d3f3d2d 100644 --- a/puppet/manifests/overcloud_controller.pp +++ b/puppet/manifests/overcloud_controller.pp -@@ -30,6 +30,13 @@ if hiera('step') >= 1 { +@@ -30,6 +30,20 @@ if hiera('step') >= 1 { if hiera('step') >= 2 { @@ -388,11 +426,43 @@ index 1b0429b..9f99e45 100644 + odl_rest_port => hiera('opendaylight_port'), + } + } ++ ++ if 'onos_ml2' in hiera('neutron_mechanism_drivers') { ++ # install onos and config ovs ++ class {"onos": ++ controllers_ip => $controller_node_ips ++ } ++ } + if count(hiera('ntp::servers')) > 0 { include ::ntp } -@@ -243,10 +250,43 @@ if hiera('step') >= 3 { +@@ -223,9 +237,7 @@ + include ::nova::scheduler + include ::nova::scheduler::filter + +- include ::neutron + include ::neutron::server +- include ::neutron::agents::l3 + include ::neutron::agents::dhcp + include ::neutron::agents::metadata + +@@ -238,15 +250,71 @@ if hiera('step') >= 3 { + require => Package['neutron'], + } + ++ if 'onos_ml2' in hiera('neutron_mechanism_drivers') { ++ # config neutron service_plugins to onos driver ++ class { '::neutron': ++ service_plugins => [hiera('neutron_service_plugins')] ++ } ++ } else { ++ include ::neutron ++ include ::neutron::agents::l3 ++ } ++ + class { '::neutron::plugins::ml2': + flat_networks => split(hiera('neutron_flat_networks'), ','), tenant_network_types => [hiera('neutron_tenant_network_type')], mechanism_drivers => [hiera('neutron_mechanism_drivers')], } @@ -425,6 +495,18 @@ index 1b0429b..9f99e45 100644 + odl_password => hiera('opendaylight_password'), + } + } ++ Service['neutron-server'] -> Service['neutron-l3'] ++ ++ } elsif 'onos_ml2' in hiera('neutron_mechanism_drivers') { ++ #config ml2_conf.ini with onos url address ++ $onos_port = hiera('onos_port') ++ $private_ip = hiera('neutron::agents::ml2::ovs::local_ip') ++ ++ neutron_plugin_ml2 { ++ 'onos/username': value => 'admin'; ++ 'onos/password': value => 'admin'; ++ 'onos/url_path': value => "http://${controller_node_ips[0]}:${onos_port}/onos/vtn"; ++ } + + } else { + @@ -434,24 +516,26 @@ index 1b0429b..9f99e45 100644 + } + + Service['neutron-server'] -> Service['neutron-ovs-agent-service'] ++ Service['neutron-server'] -> Service['neutron-l3'] } + if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') { include ::neutron::plugins::ml2::cisco::nexus1000v -@@ -282,7 +322,6 @@ if hiera('step') >= 3 { +@@ -281,8 +349,6 @@ if hiera('step') >= 3 { + } Service['neutron-server'] -> Service['neutron-dhcp-service'] - Service['neutron-server'] -> Service['neutron-l3'] +- Service['neutron-server'] -> Service['neutron-l3'] - Service['neutron-server'] -> Service['neutron-ovs-agent-service'] Service['neutron-server'] -> Service['neutron-metadata'] include ::cinder diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp -index 863cc5f..1a99985 100644 +index 863cc5f..5b1c37a 100644 --- a/puppet/manifests/overcloud_controller_pacemaker.pp +++ b/puppet/manifests/overcloud_controller_pacemaker.pp -@@ -380,6 +380,13 @@ if hiera('step') >= 2 { +@@ -380,6 +380,20 @@ if hiera('step') >= 2 { } @@ -462,10 +546,50 @@ index 863cc5f..1a99985 100644 + } + } + ++ if 'onos_ml2' in hiera('neutron_mechanism_drivers') { ++ # install onos and config ovs ++ class {"onos": ++ controllers_ip => $controller_node_ips ++ } ++ } ++ exec { 'galera-ready' : command => '/usr/bin/clustercheck >/dev/null', timeout => 30, -@@ -615,13 +622,43 @@ if hiera('step') >= 3 { +@@ -584,7 +598,14 @@ if hiera('step') >= 3 { + include ::nova::network::neutron + + # Neutron class definitions +- include ::neutron ++ if 'onos_ml2' in hiera('neutron_mechanism_drivers') { ++ # config neutron service_plugins to onos driver ++ class { '::neutron': ++ service_plugins => [hiera('neutron_service_plugins')] ++ } ++ } else { ++ include ::neutron ++ } + class { '::neutron::server' : + sync_db => $sync_db, + manage_service => false, +@@ -595,10 +616,6 @@ if hiera('step') >= 3 { + manage_service => false, + enabled => false, + } +- class { '::neutron::agents::l3' : +- manage_service => false, +- enabled => false, +- } + class { '::neutron::agents::metadata': + manage_service => false, + enabled => false, +@@ -610,18 +627,66 @@ if hiera('step') >= 3 { + notify => Service['neutron-dhcp-service'], + require => Package['neutron'], + } ++ + class { '::neutron::plugins::ml2': + flat_networks => split(hiera('neutron_flat_networks'), ','), tenant_network_types => [hiera('neutron_tenant_network_type')], mechanism_drivers => [hiera('neutron_mechanism_drivers')], } @@ -502,9 +626,26 @@ index 863cc5f..1a99985 100644 + odl_password => hiera('opendaylight_password'), + } + } ++ class { '::neutron::agents::l3' : ++ manage_service => false, ++ enabled => false, ++ } ++ } elsif 'onos_ml2' in hiera('neutron_mechanism_drivers') { ++ #config ml2_conf.ini with onos url address ++ $onos_port = hiera('onos_port') ++ $private_ip = hiera('neutron::agents::ml2::ovs::local_ip') + -+ } else { ++ neutron_plugin_ml2 { ++ 'onos/username': value => 'admin'; ++ 'onos/password': value => 'admin'; ++ 'onos/url_path': value => "http://${controller_node_ips[0]}:${onos_port}/onos/vtn"; ++ } ++ } else { ++ class { '::neutron::agents::l3' : ++ manage_service => false, ++ enabled => false, ++ } + class { 'neutron::agents::ml2::ovs': + manage_service => false, + enabled => false, @@ -515,7 +656,30 @@ index 863cc5f..1a99985 100644 if 'cisco_ucsm' in hiera('neutron_mechanism_drivers') { include ::neutron::plugins::ml2::cisco::ucsm } -@@ -1079,56 +1116,13 @@ if hiera('step') >= 4 { +@@ -646,8 +711,10 @@ if hiera('step') >= 3 { + if hiera('neutron_enable_bigswitch_ml2', false) { + include ::neutron::plugins::ml2::bigswitch::restproxy + } +- neutron_l3_agent_config { +- 'DEFAULT/ovs_use_veth': value => hiera('neutron_ovs_use_veth', false); ++ if !('onos_ml2' in hiera('neutron_mechanism_drivers')) { ++ neutron_l3_agent_config { ++ 'DEFAULT/ovs_use_veth': value => hiera('neutron_ovs_use_veth', false); ++ } + } + neutron_dhcp_agent_config { + 'DEFAULT/ovs_use_veth': value => hiera('neutron_ovs_use_veth', false); +@@ -1073,62 +1140,21 @@ if hiera('step') >= 4 { + require => Pacemaker::Resource::Service[$::keystone::params::service_name] + } + } +- pacemaker::resource::service { $::neutron::params::l3_agent_service: +- clone_params => 'interleave=true', ++ if !('onos_ml2' in hiera('neutron_mechanism_drivers')) { ++ pacemaker::resource::service { $::neutron::params::l3_agent_service: ++ clone_params => 'interleave=true', ++ } + } pacemaker::resource::service { $::neutron::params::dhcp_agent_service: clone_params => 'interleave=true', } @@ -572,7 +736,7 @@ index 863cc5f..1a99985 100644 pacemaker::constraint::base { 'keystone-to-neutron-server-constraint': constraint_type => 'order', first_resource => "${::keystone::params::service_name}-clone", -@@ -1138,31 +1132,75 @@ if hiera('step') >= 4 { +@@ -1138,65 +1164,110 @@ if hiera('step') >= 4 { require => [Pacemaker::Resource::Service[$::keystone::params::service_name], Pacemaker::Resource::Service[$::neutron::params::server_service]], } @@ -635,13 +799,6 @@ index 863cc5f..1a99985 100644 + Pacemaker::Resource::Service["${::neutron::params::ovs_agent_service}"]], + } -- } -- pacemaker::constraint::colocation { 'neutron-openvswitch-agent-to-dhcp-agent-colocation': -- source => "${::neutron::params::dhcp_agent_service}-clone", -- target => "${::neutron::params::ovs_agent_service}-clone", -- score => 'INFINITY', -- require => [Pacemaker::Resource::Service[$::neutron::params::ovs_agent_service], -- Pacemaker::Resource::Service[$::neutron::params::dhcp_agent_service]], + #another chain keystone-->neutron-server-->ovs-agent-->dhcp-->l3 + pacemaker::constraint::base { 'neutron-server-to-openvswitch-agent-constraint': + constraint_type => "order", @@ -670,8 +827,82 @@ index 863cc5f..1a99985 100644 + Pacemaker::Resource::Service["${::neutron::params::dhcp_agent_service}"]], + } } - pacemaker::constraint::base { 'neutron-dhcp-agent-to-l3-agent-constraint': - constraint_type => 'order', +- pacemaker::constraint::colocation { 'neutron-openvswitch-agent-to-dhcp-agent-colocation': +- source => "${::neutron::params::dhcp_agent_service}-clone", +- target => "${::neutron::params::ovs_agent_service}-clone", +- score => 'INFINITY', +- require => [Pacemaker::Resource::Service[$::neutron::params::ovs_agent_service], +- Pacemaker::Resource::Service[$::neutron::params::dhcp_agent_service]], +- } +- pacemaker::constraint::base { 'neutron-dhcp-agent-to-l3-agent-constraint': +- constraint_type => 'order', +- first_resource => "${::neutron::params::dhcp_agent_service}-clone", +- second_resource => "${::neutron::params::l3_agent_service}-clone", +- first_action => 'start', +- second_action => 'start', +- require => [Pacemaker::Resource::Service[$::neutron::params::dhcp_agent_service], +- Pacemaker::Resource::Service[$::neutron::params::l3_agent_service]], +- } +- pacemaker::constraint::colocation { 'neutron-dhcp-agent-to-l3-agent-colocation': +- source => "${::neutron::params::l3_agent_service}-clone", +- target => "${::neutron::params::dhcp_agent_service}-clone", +- score => 'INFINITY', +- require => [Pacemaker::Resource::Service[$::neutron::params::dhcp_agent_service], +- Pacemaker::Resource::Service[$::neutron::params::l3_agent_service]], +- } +- pacemaker::constraint::base { 'neutron-l3-agent-to-metadata-agent-constraint': +- constraint_type => 'order', +- first_resource => "${::neutron::params::l3_agent_service}-clone", +- second_resource => "${::neutron::params::metadata_agent_service}-clone", +- first_action => 'start', +- second_action => 'start', +- require => [Pacemaker::Resource::Service[$::neutron::params::l3_agent_service], +- Pacemaker::Resource::Service[$::neutron::params::metadata_agent_service]], +- } +- pacemaker::constraint::colocation { 'neutron-l3-agent-to-metadata-agent-colocation': +- source => "${::neutron::params::metadata_agent_service}-clone", +- target => "${::neutron::params::l3_agent_service}-clone", +- score => 'INFINITY', +- require => [Pacemaker::Resource::Service[$::neutron::params::l3_agent_service], +- Pacemaker::Resource::Service[$::neutron::params::metadata_agent_service]], ++ if !('onos_ml2' in hiera('neutron_mechanism_drivers')) { ++ pacemaker::constraint::base { 'neutron-dhcp-agent-to-l3-agent-constraint': ++ constraint_type => 'order', ++ first_resource => "${::neutron::params::dhcp_agent_service}-clone", ++ second_resource => "${::neutron::params::l3_agent_service}-clone", ++ first_action => 'start', ++ second_action => 'start', ++ require => [Pacemaker::Resource::Service[$::neutron::params::dhcp_agent_service], ++ Pacemaker::Resource::Service[$::neutron::params::l3_agent_service]], ++ } ++ pacemaker::constraint::colocation { 'neutron-dhcp-agent-to-l3-agent-colocation': ++ source => "${::neutron::params::l3_agent_service}-clone", ++ target => "${::neutron::params::dhcp_agent_service}-clone", ++ score => 'INFINITY', ++ require => [Pacemaker::Resource::Service[$::neutron::params::dhcp_agent_service], ++ Pacemaker::Resource::Service[$::neutron::params::l3_agent_service]], ++ } ++ pacemaker::constraint::base { 'neutron-l3-agent-to-metadata-agent-constraint': ++ constraint_type => 'order', ++ first_resource => "${::neutron::params::l3_agent_service}-clone", ++ second_resource => "${::neutron::params::metadata_agent_service}-clone", ++ first_action => 'start', ++ second_action => 'start', ++ require => [Pacemaker::Resource::Service[$::neutron::params::l3_agent_service], ++ Pacemaker::Resource::Service[$::neutron::params::metadata_agent_service]], ++ } ++ pacemaker::constraint::colocation { 'neutron-l3-agent-to-metadata-agent-colocation': ++ source => "${::neutron::params::metadata_agent_service}-clone", ++ target => "${::neutron::params::l3_agent_service}-clone", ++ score => 'INFINITY', ++ require => [Pacemaker::Resource::Service[$::neutron::params::l3_agent_service], ++ Pacemaker::Resource::Service[$::neutron::params::metadata_agent_service]], ++ } + } +- + # Nova + pacemaker::resource::service { $::nova::params::api_service_name : + clone_params => 'interleave=true', diff --git a/puppet/manifests/overcloud_opendaylight.pp b/puppet/manifests/overcloud_opendaylight.pp new file mode 100644 index 0000000..aea6568 |