summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbuild/instack.sh2
-rw-r--r--build/opnfv-apex-common.spec4
-rw-r--r--build/opnfv-tripleo-heat-templates.patch244
-rwxr-xr-xci/deploy.sh45
-rw-r--r--config/deploy/network/network_settings.yaml57
-rw-r--r--config/deploy/os-odl_l2-sfc-noha.yaml (renamed from config/deploy/os-odl_l2-sfc-ha.yaml)2
-rw-r--r--docs/configguide/baremetalinstall.rst (renamed from docs/installation-instructions/baremetalinstall.rst)0
-rw-r--r--docs/configguide/introduction.rst41
-rw-r--r--docs/installation-instructions/baremetal.rst2
-rw-r--r--docs/installation-instructions/index.rst6
-rw-r--r--docs/installation-instructions/introduction.rst41
11 files changed, 300 insertions, 144 deletions
diff --git a/build/instack.sh b/build/instack.sh
index 8b00bbe4..52384689 100755
--- a/build/instack.sh
+++ b/build/instack.sh
@@ -368,7 +368,7 @@ cp overcloud-full-opendaylight.qcow2 overcloud-full-opendaylight-sfc.qcow2
# upload the opendaylight puppet module
rm -rf puppet-opendaylight
-git clone -b 3.0.0 https://github.com/dfarrell07/puppet-opendaylight
+git clone -b 3.0.1 https://github.com/dfarrell07/puppet-opendaylight
pushd puppet-opendaylight
git archive --format=tar.gz --prefix=opendaylight/ HEAD > ../puppet-opendaylight.tar.gz
popd
diff --git a/build/opnfv-apex-common.spec b/build/opnfv-apex-common.spec
index 752ce2e0..e0fd475a 100644
--- a/build/opnfv-apex-common.spec
+++ b/build/opnfv-apex-common.spec
@@ -31,7 +31,7 @@ install ci/clean.sh %{buildroot}%{_bindir}/opnfv-clean
mkdir -p %{buildroot}%{_sysconfdir}/opnfv-apex/
install config/deploy/os-nosdn-nofeature-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-nosdn-nofeature-ha.yaml
install config/deploy/os-odl_l2-nofeature-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l2-nofeature-ha.yaml
-install config/deploy/os-odl_l2-sfc-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l2-sfc-ha.yaml
+install config/deploy/os-odl_l2-sfc-noha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l2-sfc-noha.yaml
install config/deploy/os-odl_l3-nofeature-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-odl_l3-nofeature-ha.yaml
install config/deploy/os-onos-nofeature-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-onos-nofeature-ha.yaml
install config/deploy/os-opencontrail-nofeature-ha.yaml %{buildroot}%{_sysconfdir}/opnfv-apex/os-opencontrail-nofeature-ha.yaml
@@ -59,7 +59,7 @@ install config/inventory/pod_example_settings.yaml %{buildroot}%{_docdir}/opnfv/
%{_var}/opt/opnfv/lib/installer/onos/onos_gw_mac_update.sh
%{_sysconfdir}/opnfv-apex/os-nosdn-nofeature-ha.yaml
%{_sysconfdir}/opnfv-apex/os-odl_l2-nofeature-ha.yaml
-%{_sysconfdir}/opnfv-apex/os-odl_l2-sfc-ha.yaml
+%{_sysconfdir}/opnfv-apex/os-odl_l2-sfc-noha.yaml
%{_sysconfdir}/opnfv-apex/os-odl_l3-nofeature-ha.yaml
%{_sysconfdir}/opnfv-apex/os-onos-nofeature-ha.yaml
%{_sysconfdir}/opnfv-apex/os-opencontrail-nofeature-ha.yaml
diff --git a/build/opnfv-tripleo-heat-templates.patch b/build/opnfv-tripleo-heat-templates.patch
index c456a365..10ae0a71 100644
--- a/build/opnfv-tripleo-heat-templates.patch
+++ b/build/opnfv-tripleo-heat-templates.patch
@@ -1,4 +1,4 @@
-From b4edc1dff23217add43d92cac3c2906dcd1c74d1 Mon Sep 17 00:00:00 2001
+From 966d6b67fa0452bffb01f0d7a4c4935f82f84c5b Mon Sep 17 00:00:00 2001
From: Tim Rozet <tdrozet@gmail.com>
Date: Tue, 12 Jan 2016 16:49:57 -0500
Subject: [PATCH] Adds current opnfv patch with ODL and ONOS support
@@ -8,24 +8,26 @@ Subject: [PATCH] Adds current opnfv patch with ODL and ONOS support
environments/opendaylight-external.yaml | 25 ++
environments/opendaylight.yaml | 25 ++
environments/opendaylight_l3.yaml | 9 +
+ environments/opendaylight_sfc.yaml | 28 ++
network/endpoints/endpoint_map.yaml | 31 ++
overcloud-resource-registry-puppet.yaml | 3 +
- overcloud-without-mergepy.yaml | 87 +++++
+ overcloud-without-mergepy.yaml | 93 +++++
puppet/all-nodes-config.yaml | 17 +
puppet/compute.yaml | 35 ++
- puppet/controller.yaml | 87 ++++-
+ puppet/controller.yaml | 93 ++++-
puppet/hieradata/common.yaml | 1 +
puppet/hieradata/controller.yaml | 3 +
- puppet/manifests/overcloud_compute.pp | 33 +-
- puppet/manifests/overcloud_controller.pp | 104 ++++-
- puppet/manifests/overcloud_controller_pacemaker.pp | 434 ++++++++++++++-------
+ puppet/manifests/overcloud_compute.pp | 31 +-
+ puppet/manifests/overcloud_controller.pp | 128 +++++-
+ puppet/manifests/overcloud_controller_pacemaker.pp | 444 ++++++++++++++-------
puppet/manifests/overcloud_opendaylight.pp | 27 ++
- puppet/opendaylight-puppet.yaml | 217 +++++++++++
- 17 files changed, 986 insertions(+), 160 deletions(-)
+ puppet/opendaylight-puppet.yaml | 223 +++++++++++
+ 18 files changed, 1063 insertions(+), 161 deletions(-)
create mode 100644 environments/onos.yaml
create mode 100644 environments/opendaylight-external.yaml
create mode 100644 environments/opendaylight.yaml
create mode 100644 environments/opendaylight_l3.yaml
+ create mode 100644 environments/opendaylight_sfc.yaml
create mode 100644 puppet/manifests/overcloud_opendaylight.pp
create mode 100644 puppet/opendaylight-puppet.yaml
@@ -120,6 +122,40 @@ index 0000000..05c0aff
+ neutron_mechanism_drivers: ['opendaylight']
+ neutron_tenant_network_type: vxlan
+ opendaylight_install: true
+diff --git a/environments/opendaylight_sfc.yaml b/environments/opendaylight_sfc.yaml
+new file mode 100644
+index 0000000..3dd1e13
+--- /dev/null
++++ b/environments/opendaylight_sfc.yaml
+@@ -0,0 +1,28 @@
++# Environment file used to enable OpenDaylight
++# Currently uses overcloud image that is assumed
++# to be virt-customized with ODL RPM already on it
++
++# These parameters customize the OpenDaylight Node
++# The user name and password are for the ODL service
++# Defaults are included here for reference
++#parameter_defaults:
++# OpenDaylightFlavor: baremetal
++# OpenDaylightHostname: opendaylight-server
++# OpenDaylightImage: overcloud-full
++# OpenDaylightUsername: admin
++# OpenDaylightPassword: admin
++
++parameters:
++ # increase this if you need more ODL nodes
++ # OpenDaylightCount: 1
++ ControllerEnableSwiftStorage: false
++ OpenDaylightFeatures: "odl-ovsdb-sfc-rest"
++ NeutronL3HA: false
++ ExtraConfig:
++ tripleo::ringbuilder::build_ring: False
++ neutron_mechanism_drivers: ['opendaylight']
++ neutron_tenant_network_type: vxlan
++ # Enable this if you want OpenDaylight on the contollers
++ # reduce OpenDaylightCount to 0 if you don't want any
++ # OpenDaylight only nodes
++ opendaylight_install: true
diff --git a/network/endpoints/endpoint_map.yaml b/network/endpoints/endpoint_map.yaml
index 0521401..7caa91b 100644
--- a/network/endpoints/endpoint_map.yaml
@@ -198,7 +234,7 @@ index 4cfed6b..adecc79 100644
# NodeUserData == Cloud-init additional user-data, e.g cloud-config
# ControllerExtraConfigPre == Controller configuration pre service deployment
diff --git a/overcloud-without-mergepy.yaml b/overcloud-without-mergepy.yaml
-index a532c2f..5206004 100644
+index a532c2f..965ca4c 100644
--- a/overcloud-without-mergepy.yaml
+++ b/overcloud-without-mergepy.yaml
@@ -15,6 +15,11 @@ parameters:
@@ -224,7 +260,7 @@ index a532c2f..5206004 100644
NeutronEnableTunnelling:
type: string
default: "True"
-@@ -227,6 +236,27 @@ parameters:
+@@ -227,6 +236,31 @@ parameters:
default: false
description: Should MongoDb journaling be disabled
type: boolean
@@ -236,6 +272,10 @@ index a532c2f..5206004 100644
+ description: Knob to enable/disable ODL L3
+ type: string
+ default: 'no'
++ OpenDaylightFeatures:
++ description: List of features to install with ODL
++ type: comma_delimited_list
++ default: "odl-ovsdb-openstack"
+ OpenDaylightInstall:
+ default: false
+ description: Whether to install OpenDaylight on the control nodes.
@@ -252,7 +292,7 @@ index a532c2f..5206004 100644
PublicVirtualFixedIPs:
default: []
description: >
-@@ -575,6 +605,7 @@ parameters:
+@@ -575,6 +609,7 @@ parameters:
default:
NeutronTenantNetwork: tenant
CeilometerApiNetwork: internal_api
@@ -260,7 +300,7 @@ index a532c2f..5206004 100644
MongoDbNetwork: internal_api
CinderApiNetwork: internal_api
CinderIscsiNetwork: storage
-@@ -664,6 +695,18 @@ parameters:
+@@ -664,6 +699,18 @@ parameters:
structure as ExtraConfig.
type: json
@@ -279,7 +319,7 @@ index a532c2f..5206004 100644
# Hostname format for each role
# Note %index% is translated into the index of the node, e.g 0/1/2 etc
# and %stackname% is replaced with OS::stack_name in the template below.
-@@ -688,6 +731,10 @@ parameters:
+@@ -688,6 +735,10 @@ parameters:
type: string
description: Format for CephStorage node hostnames
default: '%stackname%-cephstorage-%index%'
@@ -290,7 +330,7 @@ index a532c2f..5206004 100644
# Identifiers to trigger tasks on nodes
UpdateIdentifier:
-@@ -758,6 +805,7 @@ resources:
+@@ -758,6 +809,7 @@ resources:
properties:
CloudName: {get_param: CloudName}
CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
@@ -298,7 +338,7 @@ index a532c2f..5206004 100644
CinderApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
GlanceRegistryVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
-@@ -770,6 +818,28 @@ resources:
+@@ -770,6 +822,29 @@ resources:
SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
PublicVirtualIP: {get_attr: [VipMap, net_ip_map, external]}
@@ -316,6 +356,7 @@ index a532c2f..5206004 100644
+ OpenDaylightImage: {get_param: OpenDaylightImage}
+ OpenDaylightPort: {get_param: OpenDaylightPort}
+ OpenDaylightUsername: {get_param: OpenDaylightUsername}
++ OpenDaylightFeatures: {get_param: OpenDaylightFeatures}
+ OpenDaylightPassword: {get_param: OpenDaylightPassword}
+ OpenDaylightEnableL3: {get_param: OpenDaylightEnableL3}
+ OpenDaylightHostname:
@@ -327,7 +368,7 @@ index a532c2f..5206004 100644
Controller:
type: OS::Heat::ResourceGroup
depends_on: Networks
-@@ -781,6 +851,7 @@ resources:
+@@ -781,6 +856,7 @@ resources:
properties:
AdminPassword: {get_param: AdminPassword}
AdminToken: {get_param: AdminToken}
@@ -335,7 +376,7 @@ index a532c2f..5206004 100644
CeilometerBackend: {get_param: CeilometerBackend}
CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
CeilometerPassword: {get_param: CeilometerPassword}
-@@ -832,6 +903,7 @@ resources:
+@@ -832,6 +908,7 @@ resources:
NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
NeutronExternalNetworkBridge: {get_param: NeutronExternalNetworkBridge}
NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
@@ -343,19 +384,20 @@ index a532c2f..5206004 100644
NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
NeutronPublicInterface: {get_param: NeutronPublicInterface}
NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
-@@ -853,6 +925,11 @@ resources:
+@@ -853,6 +930,12 @@ resources:
NovaPassword: {get_param: NovaPassword}
NtpServer: {get_param: NtpServer}
MongoDbNoJournal: {get_param: MongoDbNoJournal}
+ OpenDaylightPort: {get_param: OpenDaylightPort}
+ OpenDaylightInstall: {get_param: OpenDaylightInstall}
+ OpenDaylightUsername: {get_param: OpenDaylightUsername}
++ OpenDaylightFeatures: {get_param: OpenDaylightFeatures}
+ OpenDaylightPassword: {get_param: OpenDaylightPassword}
+ OpenDaylightEnableL3: {get_param: OpenDaylightEnableL3}
PcsdPassword: {get_resource: PcsdPassword}
PublicVirtualInterface: {get_param: PublicVirtualInterface}
RabbitPassword: {get_param: RabbitPassword}
-@@ -878,6 +955,7 @@ resources:
+@@ -878,6 +961,7 @@ resources:
ServiceNetMap: {get_param: ServiceNetMap}
EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
@@ -363,7 +405,7 @@ index a532c2f..5206004 100644
CinderApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
-@@ -948,6 +1026,9 @@ resources:
+@@ -948,6 +1032,9 @@ resources:
NovaPublicIP: {get_attr: [PublicVirtualIP, ip_address]}
NovaPassword: {get_param: NovaPassword}
NtpServer: {get_param: NtpServer}
@@ -373,7 +415,7 @@ index a532c2f..5206004 100644
RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
RabbitPassword: {get_param: RabbitPassword}
RabbitUserName: {get_param: RabbitUserName}
-@@ -1068,6 +1149,7 @@ resources:
+@@ -1068,6 +1155,7 @@ resources:
compute_hosts: {get_attr: [Compute, hosts_entry]}
controller_hosts: {get_attr: [Controller, hosts_entry]}
controller_ips: {get_attr: [Controller, ip_address]}
@@ -381,7 +423,7 @@ index a532c2f..5206004 100644
block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
-@@ -1081,6 +1163,7 @@ resources:
+@@ -1081,6 +1169,7 @@ resources:
heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
@@ -389,7 +431,7 @@ index a532c2f..5206004 100644
nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
-@@ -1189,6 +1272,7 @@ resources:
+@@ -1189,6 +1278,7 @@ resources:
nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
@@ -397,7 +439,7 @@ index a532c2f..5206004 100644
heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
-@@ -1434,6 +1518,9 @@ outputs:
+@@ -1434,6 +1524,9 @@ outputs:
PublicVip:
description: Controller VIP for public API endpoints
value: {get_attr: [PublicVirtualIP, ip_address]}
@@ -552,7 +594,7 @@ index 70c7403..13fd4f6 100644
description: Hostname of the server
value: {get_attr: [NovaCompute, name]}
diff --git a/puppet/controller.yaml b/puppet/controller.yaml
-index ea0b3af..1e6539b 100644
+index ea0b3af..bd82e93 100644
--- a/puppet/controller.yaml
+++ b/puppet/controller.yaml
@@ -14,6 +14,14 @@ parameters:
@@ -581,7 +623,7 @@ index ea0b3af..1e6539b 100644
NeutronEnableTunnelling:
type: string
default: "True"
-@@ -443,6 +455,31 @@ parameters:
+@@ -443,6 +455,35 @@ parameters:
NtpServer:
type: string
default: ''
@@ -606,6 +648,10 @@ index ea0b3af..1e6539b 100644
+ description: Knob to enable/disable ODL L3
+ type: string
+ default: 'no'
++ OpenDaylightFeatures:
++ description: List of features to install with ODL
++ type: comma_delimited_list
++ default: "odl-ovsdb-openstack"
+ ONOSPort:
+ default: 8181
+ description: Set onos service port
@@ -613,7 +659,7 @@ index ea0b3af..1e6539b 100644
PcsdPassword:
type: string
description: The password for the 'pcsd' user.
-@@ -696,6 +733,7 @@ resources:
+@@ -696,6 +737,7 @@ resources:
input_values:
bootstack_nodeid: {get_attr: [Controller, name]}
neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
@@ -621,7 +667,7 @@ index ea0b3af..1e6539b 100644
haproxy_log_address: {get_param: HAProxySyslogAddress}
heat.watch_server_url:
list_join:
-@@ -774,6 +812,7 @@ resources:
+@@ -774,6 +816,7 @@ resources:
- {get_param: MysqlVirtualIP}
- '/heat'
keystone_ca_certificate: {get_param: KeystoneCACertificate}
@@ -629,7 +675,7 @@ index ea0b3af..1e6539b 100644
keystone_signing_key: {get_param: KeystoneSigningKey}
keystone_signing_certificate: {get_param: KeystoneSigningCertificate}
keystone_ssl_certificate: {get_param: KeystoneSSLCertificate}
-@@ -805,6 +844,12 @@ resources:
+@@ -805,6 +848,13 @@ resources:
template: tripleo-CLUSTER
params:
CLUSTER: {get_param: MysqlClusterUniquePart}
@@ -638,11 +684,12 @@ index ea0b3af..1e6539b 100644
+ opendaylight_username: {get_param: OpenDaylightUsername}
+ opendaylight_password: {get_param: OpenDaylightPassword}
+ opendaylight_enable_l3: {get_param: OpenDaylightEnableL3}
++ opendaylight_features: {get_param: OpenDaylightFeatures}
+ 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}
-@@ -879,6 +924,7 @@ resources:
+@@ -879,6 +929,7 @@ resources:
ceilometer_backend: {get_param: CeilometerBackend}
ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
ceilometer_password: {get_param: CeilometerPassword}
@@ -650,7 +697,7 @@ index ea0b3af..1e6539b 100644
ceilometer_coordination_url:
list_join:
- ''
-@@ -891,6 +937,12 @@ resources:
+@@ -891,6 +942,12 @@ resources:
- - 'mysql://ceilometer:unset@'
- {get_param: MysqlVirtualIP}
- '/ceilometer'
@@ -663,7 +710,7 @@ index ea0b3af..1e6539b 100644
snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
nova_password: {get_param: NovaPassword}
-@@ -948,6 +1000,7 @@ resources:
+@@ -948,6 +1005,7 @@ resources:
neutron_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
ceilometer_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
@@ -671,7 +718,7 @@ index ea0b3af..1e6539b 100644
nova_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
nova_metadata_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
horizon_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
-@@ -1041,7 +1094,7 @@ resources:
+@@ -1041,7 +1099,7 @@ resources:
cinder_iscsi_ip_address: {get_input: cinder_iscsi_network}
cinder::database_connection: {get_input: cinder_dsn}
cinder::api::keystone_password: {get_input: cinder_password}
@@ -680,7 +727,7 @@ index ea0b3af..1e6539b 100644
cinder::api::identity_uri: {get_input: keystone_identity_uri}
cinder::api::bind_host: {get_input: cinder_api_network}
cinder::rabbit_userid: {get_input: rabbit_username}
-@@ -1136,6 +1189,16 @@ resources:
+@@ -1136,6 +1194,17 @@ resources:
mysql_bind_host: {get_input: mysql_network}
mysql_virtual_ip: {get_input: mysql_virtual_ip}
@@ -690,6 +737,7 @@ index ea0b3af..1e6539b 100644
+ opendaylight_username: {get_input: opendaylight_username}
+ opendaylight_password: {get_input: opendaylight_password}
+ opendaylight_enable_l3: {get_input: opendaylight_enable_l3}
++ opendaylight_features: {get_input: opendaylight_features}
+
+ # ONOS
+ onos_port: {get_input: onos_port}
@@ -697,7 +745,7 @@ index ea0b3af..1e6539b 100644
# Neutron
neutron::bind_host: {get_input: neutron_api_network}
neutron::rabbit_password: {get_input: rabbit_password}
-@@ -1152,6 +1215,7 @@ resources:
+@@ -1152,6 +1221,7 @@ resources:
neutron_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}
@@ -705,7 +753,7 @@ index ea0b3af..1e6539b 100644
neutron_agent_mode: {get_input: neutron_agent_mode}
neutron_router_distributed: {get_input: neutron_router_distributed}
neutron::core_plugin: {get_input: neutron_core_plugin}
-@@ -1198,6 +1262,27 @@ resources:
+@@ -1198,6 +1268,27 @@ resources:
snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
@@ -774,10 +822,10 @@ index 4b7fd81..4f1fef6 100644
tripleo::loadbalancer::heat_cloudwatch: true
tripleo::loadbalancer::heat_cfn: true
diff --git a/puppet/manifests/overcloud_compute.pp b/puppet/manifests/overcloud_compute.pp
-index cd41cc7..b8336ee 100644
+index cd41cc7..110ca1d 100644
--- a/puppet/manifests/overcloud_compute.pp
+++ b/puppet/manifests/overcloud_compute.pp
-@@ -75,9 +75,36 @@ class { '::neutron::plugins::ml2':
+@@ -75,9 +75,34 @@ class { '::neutron::plugins::ml2':
tenant_network_types => [hiera('neutron_tenant_network_type')],
}
@@ -793,14 +841,12 @@ index cd41cc7..b8336ee 100644
+ $opendaylight_controller_ip = hiera('opendaylight_controller_ip')
+ }
+
-+ if str2bool(hiera('opendaylight_install', 'false')) {
-+ class { 'neutron::plugins::ovs::opendaylight':
++ class { 'neutron::plugins::ovs::opendaylight':
+ odl_controller_ip => $opendaylight_controller_ip,
+ tunnel_ip => hiera('neutron::agents::ml2::ovs::local_ip'),
+ odl_port => hiera('opendaylight_port'),
+ odl_username => hiera('opendaylight_username'),
+ odl_password => hiera('opendaylight_password'),
-+ }
+ }
+
+} elsif 'onos_ml2' in hiera('neutron_mechanism_drivers') {
@@ -818,7 +864,7 @@ index cd41cc7..b8336ee 100644
if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
diff --git a/puppet/manifests/overcloud_controller.pp b/puppet/manifests/overcloud_controller.pp
-index 1f6c2be..474bb1d 100644
+index 1f6c2be..1095758 100644
--- a/puppet/manifests/overcloud_controller.pp
+++ b/puppet/manifests/overcloud_controller.pp
@@ -30,6 +30,21 @@ if hiera('step') >= 1 {
@@ -827,7 +873,7 @@ index 1f6c2be..474bb1d 100644
+ if str2bool(hiera('opendaylight_install', 'false')) {
+ class {"opendaylight":
-+ extra_features => ['odl-ovsdb-openstack'],
++ extra_features => any2array(hiera('opendaylight_features', 'odl-ovsdb-openstack')),
+ odl_rest_port => hiera('opendaylight_port'),
+ enable_l3 => hiera('opendaylight_enable_l3', 'no'),
+ }
@@ -863,7 +909,7 @@ index 1f6c2be..474bb1d 100644
include ::neutron::agents::dhcp
include ::neutron::agents::metadata
-@@ -237,15 +253,77 @@ if hiera('step') >= 3 {
+@@ -237,15 +253,101 @@ if hiera('step') >= 3 {
require => Package['neutron'],
}
@@ -902,6 +948,30 @@ index 1f6c2be..474bb1d 100644
+ $opendaylight_controller_ip = hiera('opendaylight_controller_ip')
+ }
+
++ # co-existence hacks for SFC
++ if hiera('opendaylight_features', 'odl-ovsdb-openstack') =~ /odl-ovsdb-sfc-rest/ {
++ $opendaylight_port = hiera('opendaylight_port')
++ $netvirt_coexist_url = "http://${opendaylight_controller_ip}:${opendaylight_port}/restconf/config/netvirt-providers-config:netvirt-providers-config"
++ $netvirt_post_body = "{'netvirt-providers-config': {'table-offset': 1}}"
++ $sfc_coexist_url = "http://${opendaylight_controller_ip}:${opendaylight_port}/restconf/config/sfc-of-renderer:sfc-of-renderer-config"
++ $sfc_post_body = "{ 'sfc-of-renderer-config' : { 'sfc-of-table-offset' : 150, 'sfc-of-app-egress-table-offset' : 11 }}"
++ $odl_username = hiera('opendaylight_username')
++ $odl_password = hiera('opendaylight_password')
++ exec { 'Coexistence table offsets for netvirt':
++ command => "curl -o /dev/null --fail --silent -u ${odl_username}:${odl_password} ${netvirt_coexist_url} -i -H 'Content-Type: application/json' --data \'${netvirt_post_body}\' -X PUT",
++ tries => 5,
++ try_sleep => 30,
++ path => '/usr/sbin:/usr/bin:/sbin:/bin',
++ } ->
++ # Coexist for SFC
++ exec { 'Coexistence table offsets for sfc':
++ command => "curl -o /dev/null --fail --silent -u ${odl_username}:${odl_password} ${sfc_coexist_url} -i -H 'Content-Type: application/json' --data \'${sfc_post_body}\' -X PUT",
++ tries => 5,
++ try_sleep => 30,
++ path => '/usr/sbin:/usr/bin:/sbin:/bin',
++ }
++ }
++
+ class { 'neutron::plugins::ml2::opendaylight':
+ odl_controller_ip => $opendaylight_controller_ip,
+ odl_username => hiera('opendaylight_username'),
@@ -944,7 +1014,7 @@ index 1f6c2be..474bb1d 100644
if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
include ::neutron::plugins::ml2::cisco::nexus1000v
-@@ -280,8 +358,6 @@ if hiera('step') >= 3 {
+@@ -280,8 +382,6 @@ if hiera('step') >= 3 {
}
Service['neutron-server'] -> Service['neutron-dhcp-service']
@@ -953,7 +1023,7 @@ index 1f6c2be..474bb1d 100644
Service['neutron-server'] -> Service['neutron-metadata']
include ::cinder
-@@ -447,6 +523,20 @@ if hiera('step') >= 3 {
+@@ -447,6 +547,20 @@ if hiera('step') >= 3 {
Cron <| title == 'ceilometer-expirer' |> { command => "sleep $((\$(od -A n -t d -N 3 /dev/urandom) % 86400)) && ${::ceilometer::params::expirer_command}" }
@@ -975,7 +1045,7 @@ index 1f6c2be..474bb1d 100644
include ::heat
include ::heat::api
diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp
-index 3fb92f3..5992602 100644
+index 3fb92f3..774f323 100644
--- a/puppet/manifests/overcloud_controller_pacemaker.pp
+++ b/puppet/manifests/overcloud_controller_pacemaker.pp
@@ -380,6 +380,21 @@ if hiera('step') >= 2 {
@@ -984,7 +1054,7 @@ index 3fb92f3..5992602 100644
+ if str2bool(hiera('opendaylight_install', 'false')) {
+ class {"opendaylight":
-+ extra_features => ['odl-ovsdb-openstack'],
++ extra_features => any2array(hiera('opendaylight_features', 'odl-ovsdb-openstack')),
+ odl_rest_port => hiera('opendaylight_port'),
+ enable_l3 => hiera('opendaylight_enable_l3', 'no'),
+ }
@@ -1115,10 +1185,31 @@ index 3fb92f3..5992602 100644
}
neutron_dhcp_agent_config {
'DEFAULT/ovs_use_veth': value => hiera('neutron_ovs_use_veth', false);
-@@ -879,6 +949,28 @@ if hiera('step') >= 3 {
+@@ -813,13 +883,13 @@ if hiera('step') >= 3 {
+ swift::storage::filter::healthcheck { $swift_components : }
+ }
+
++ $mongo_node_string = join($mongo_node_ips_with_port, ',')
+ # Ceilometer
+ case downcase(hiera('ceilometer_backend')) {
+ /mysql/: {
+ $ceilometer_database_connection = hiera('ceilometer_mysql_conn_string')
+ }
+ default: {
+- $mongo_node_string = join($mongo_node_ips_with_port, ',')
+ $ceilometer_database_connection = "mongodb://${mongo_node_string}/ceilometer?replicaSet=${mongodb_replset}"
+ }
+ }
+@@ -879,6 +949,62 @@ if hiera('step') >= 3 {
enabled => false,
}
++ $aodh_database_connection = "mongodb://${mongo_node_string}/aodh?replicaSet=${mongodb_replset}"
++
++ class { '::aodh::db':
++ database_connection => $aodh_database_connection
++ }
++
+ # Aodh
+ include ::aodh
+ include ::aodh::config
@@ -1141,13 +1232,6 @@ index 3fb92f3..5992602 100644
+ enabled => false,
+ }
+
- # httpd/apache and horizon
- # NOTE(gfidente): server-status can be consumed by the pacemaker resource agent
- class { '::apache' :
-@@ -914,6 +1006,32 @@ if hiera('step') >= 3 {
- if hiera('step') >= 4 {
- include ::keystone::cron::token_flush
-
+ $event_pipeline = "---
+sources:
+ - name: event_source
@@ -1165,7 +1249,7 @@ index 3fb92f3..5992602 100644
+"
+
+ # aodh hacks
-+ file { '/etc/ceilometer/event_pipeline':
++ file { '/etc/ceilometer/event_pipeline.yaml':
+ ensure => present,
+ content => $event_pipeline
+ }
@@ -1174,10 +1258,12 @@ index 3fb92f3..5992602 100644
+ groups => 'nobody'
+ }
+
- if $pacemaker_master {
-
- # Keystone
-@@ -1055,62 +1173,21 @@ if hiera('step') >= 4 {
++
++
+ # httpd/apache and horizon
+ # NOTE(gfidente): server-status can be consumed by the pacemaker resource agent
+ class { '::apache' :
+@@ -1055,62 +1181,21 @@ if hiera('step') >= 4 {
clone_params => 'interleave=true',
require => Pacemaker::Resource::Service[$::keystone::params::service_name],
}
@@ -1244,7 +1330,7 @@ index 3fb92f3..5992602 100644
pacemaker::constraint::base { 'keystone-to-neutron-server-constraint':
constraint_type => 'order',
first_resource => "${::keystone::params::service_name}-clone",
-@@ -1120,65 +1197,110 @@ if hiera('step') >= 4 {
+@@ -1120,65 +1205,110 @@ if hiera('step') >= 4 {
require => [Pacemaker::Resource::Service[$::keystone::params::service_name],
Pacemaker::Resource::Service[$::neutron::params::server_service]],
}
@@ -1411,7 +1497,7 @@ index 3fb92f3..5992602 100644
# Nova
pacemaker::resource::service { $::nova::params::api_service_name :
clone_params => 'interleave=true',
-@@ -1276,7 +1398,7 @@ if hiera('step') >= 4 {
+@@ -1276,7 +1406,7 @@ if hiera('step') >= 4 {
Pacemaker::Resource::Service[$::nova::params::conductor_service_name]],
}
@@ -1420,21 +1506,21 @@ index 3fb92f3..5992602 100644
case downcase(hiera('ceilometer_backend')) {
/mysql/: {
pacemaker::resource::service { $::ceilometer::params::agent_central_service_name :
-@@ -1298,10 +1420,19 @@ if hiera('step') >= 4 {
+@@ -1298,10 +1428,19 @@ if hiera('step') >= 4 {
pacemaker::resource::service { $::ceilometer::params::api_service_name :
clone_params => 'interleave=true',
}
- pacemaker::resource::service { $::ceilometer::params::alarm_evaluator_service_name :
+ pacemaker::resource::service { $::aodh::params::notifier_service_name :
- clone_params => 'interleave=true',
- }
-- pacemaker::resource::service { $::ceilometer::params::alarm_notifier_service_name :
-+ pacemaker::resource::service { $::aodh::params::expirer_package_serice :
+ clone_params => 'interleave=true',
+ }
-+ pacemaker::resource::service { $::aodh::params::listener_service_name :
++ pacemaker::resource::service { $::aodh::params::expirer_package_serice :
+ clone_params => 'interleave=true',
+ }
++ pacemaker::resource::service { $::aodh::params::listener_service_name :
+ clone_params => 'interleave=true',
+ }
+- pacemaker::resource::service { $::ceilometer::params::alarm_notifier_service_name :
+ pacemaker::resource::service { $::aodh::params::api_service_name :
+ clone_params => 'interleave=true',
+ }
@@ -1442,7 +1528,7 @@ index 3fb92f3..5992602 100644
clone_params => 'interleave=true',
}
pacemaker::resource::service { $::ceilometer::params::agent_notification_service_name :
-@@ -1315,8 +1446,19 @@ if hiera('step') >= 4 {
+@@ -1315,8 +1454,19 @@ if hiera('step') >= 4 {
# Fedora doesn't know `require-all` parameter for constraints yet
if $::operatingsystem == 'Fedora' {
$redis_ceilometer_constraint_params = undef
@@ -1462,7 +1548,7 @@ index 3fb92f3..5992602 100644
}
pacemaker::constraint::base { 'redis-then-ceilometer-central-constraint':
constraint_type => 'order',
-@@ -1328,6 +1470,16 @@ if hiera('step') >= 4 {
+@@ -1328,6 +1478,16 @@ if hiera('step') >= 4 {
require => [Pacemaker::Resource::Ocf['redis'],
Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name]],
}
@@ -1479,7 +1565,7 @@ index 3fb92f3..5992602 100644
pacemaker::constraint::base { 'keystone-then-ceilometer-central-constraint':
constraint_type => 'order',
first_resource => "${::keystone::params::service_name}-clone",
-@@ -1378,53 +1530,37 @@ if hiera('step') >= 4 {
+@@ -1378,53 +1538,37 @@ if hiera('step') >= 4 {
require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name],
Pacemaker::Resource::Ocf['delay']],
}
@@ -1551,7 +1637,7 @@ index 3fb92f3..5992602 100644
pacemaker::constraint::base { 'mongodb-then-ceilometer-central-constraint':
diff --git a/puppet/manifests/overcloud_opendaylight.pp b/puppet/manifests/overcloud_opendaylight.pp
new file mode 100644
-index 0000000..33f609a
+index 0000000..aeb31be
--- /dev/null
+++ b/puppet/manifests/overcloud_opendaylight.pp
@@ -0,0 +1,27 @@
@@ -1577,17 +1663,17 @@ index 0000000..33f609a
+}
+
+class {"opendaylight":
-+ extra_features => ['odl-ovsdb-openstack'],
++ extra_features => any2array(hiera('opendaylight_features', 'odl-ovsdb-openstack')),
+ odl_rest_port => hiera('opendaylight_port'),
+ enable_l3 => hiera('opendaylight_enable_l3', 'no'),
+}
+
diff --git a/puppet/opendaylight-puppet.yaml b/puppet/opendaylight-puppet.yaml
new file mode 100644
-index 0000000..b876dc7
+index 0000000..6488e0e
--- /dev/null
+++ b/puppet/opendaylight-puppet.yaml
-@@ -0,0 +1,217 @@
+@@ -0,0 +1,223 @@
+heat_template_version: 2015-04-30
+
+description: >
@@ -1619,6 +1705,10 @@ index 0000000..b876dc7
+ description: Knob to enable/disable ODL L3
+ type: string
+ default: 'no'
++ OpenDaylightFeatures:
++ description: List of features to install with ODL
++ type: comma_delimited_list
++ default: "odl-ovsdb-openstack"
+ OpenDaylightPort:
+ default: 8081
+ description: Set OpenDaylight service port
@@ -1720,6 +1810,7 @@ index 0000000..b876dc7
+ opendaylight_enable_l3: {get_param: OpenDaylightEnableL3}
+ opendaylight_username: {get_param: OpenDaylightUsername}
+ opendaylight_password: {get_param: OpenDaylightPassword}
++ opendaylight_features: {get_param: OpenDaylightFeatures}
+
+ OpenDaylightConfig:
+ type: OS::Heat::StructuredConfig
@@ -1745,6 +1836,7 @@ index 0000000..b876dc7
+ opendaylight::admin_password: {get_param: OpenDaylightPassword}
+ opendaylight_port: {get_input: opendaylight_port}
+ opendaylight_enable_l3: {get_input: opendaylight_enable_l3}
++ opendaylight_features: {get_input: opendaylight_features}
+ ceph:
+ raw_data: {get_file: hieradata/ceph.yaml}
+
diff --git a/ci/deploy.sh b/ci/deploy.sh
index df528f50..3143aae9 100755
--- a/ci/deploy.sh
+++ b/ci/deploy.sh
@@ -282,7 +282,7 @@ parse_inventory_file() {
for entry in $inventory; do
if echo $entry | grep -Eo "^nodes_node[0-9]+_" > /dev/null; then
this_node=$(echo $entry | grep -Eo "^nodes_node[0-9]+_")
- if [[ $inventory_list != *"$this_node"* ]]; then
+ if [[ "$inventory_list" != *"$this_node"* ]]; then
inventory_list+="$this_node "
fi
fi
@@ -296,7 +296,7 @@ parse_inventory_file() {
node_total=$node_count
- if [[ "$node_total" -lt 5 && ha_enabled == "TRUE" ]]; then
+ if [[ "$node_total" -lt 5 && ( ha_enabled == "TRUE" || "$ha_enabled" == "true" ) ]]; then
echo -e "${red}ERROR: You must provide at least 5 nodes for HA baremetal deployment${reset}"
exit 1
elif [[ "$node_total" -lt 2 ]]; then
@@ -659,11 +659,11 @@ function configure_network_environment {
sed -i 's#^.*Controller::Net::SoftwareConfig:.*$# OS::TripleO::Controller::Net::SoftwareConfig: nics/controller'${nic_ext}'.yaml#' $1
# check for ODL L3
- if [ ${deploy_options_array['sdn_l3']} == 'true' ]; then
+ if [ "${deploy_options_array['sdn_l3']}" == 'true' ]; then
nic_ext+=_br-ex
fi
- if [ ${deploy_options_array['sdn_controller']} == 'onos' ]; then
+ if [ "${deploy_options_array['sdn_controller']}" == 'onos' ]; then
nic_ext+=_no-public-ip
fi
@@ -779,27 +779,30 @@ sleep 15
##preping it for deployment and launch the deploy
##params: none
function undercloud_prep_overcloud_deploy {
- if [[ ${#deploy_options_array[@]} -eq 0 || ${deploy_options_array['sdn_controller']} == 'opendaylight' ]]; then
- if [ ${deploy_options_array['sdn_l3']} == 'true' ]; then
+ if [[ "${#deploy_options_array[@]}" -eq 0 || "${deploy_options_array['sdn_controller']}" == 'opendaylight' ]]; then
+ if [ "${deploy_options_array['sdn_l3']}" == 'true' ]; then
DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/opendaylight_l3.yaml"
+ elif [ "${deploy_options_array['sfc']}" == 'true' ]; then
+ DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/opendaylight_sfc.yaml"
else
DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/opendaylight.yaml"
fi
SDN_IMAGE=opendaylight
- if [ ${deploy_options_array['sfc']} == 'true' ]; then
+ if [ "${deploy_options_array['sfc']}" == 'true' ]; then
SDN_IMAGE+=-sfc
fi
- elif [ ${deploy_options_array['sdn_controller']} == 'opendaylight-external' ]; then
+ elif [ "${deploy_options_array['sdn_controller']}" == 'opendaylight-external' ]; then
DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/opendaylight-external.yaml"
SDN_IMAGE=opendaylight
- elif [ ${deploy_options_array['sdn_controller']} == 'onos' ]; then
+ elif [ "${deploy_options_array['sdn_controller']}" == 'onos' ]; then
DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/onos.yaml"
SDN_IMAGE=opendaylight
- elif [ ${deploy_options_array['sdn_controller']} == 'opencontrail' ]; then
+ elif [ "${deploy_options_array['sdn_controller']}" == 'opencontrail' ]; then
echo -e "${red}ERROR: OpenContrail is currently unsupported...exiting${reset}"
exit 1
- elif [[ -z ${deploy_options_array['sdn_controller']} || ${deploy_options_array['sdn_controller']} == 'false' ]]; then
+ elif [[ -z "${deploy_options_array['sdn_controller']}" || "${deploy_options_array['sdn_controller']}" == 'false' ]]; then
echo -e "${blue}INFO: SDN Controller disabled...will deploy nosdn scenario${reset}"
+ SDN_IMAGE=opendaylight
else
echo "${red}Invalid sdn_controller: ${deploy_options_array['sdn_controller']}${reset}"
echo "${red}Valid choices are opendaylight, opendaylight-external, onos, opencontrail, false, or null${reset}"
@@ -816,7 +819,7 @@ function undercloud_prep_overcloud_deploy {
total_nodes=$(ssh -T ${SSH_OPTIONS[@]} "root@$UNDERCLOUD" "cat /home/stack/instackenv.json | grep -c memory")
# check if HA is enabled
- if [[ "$ha_enabled" == "TRUE" ]]; then
+ if [[ "$ha_enabled" == "TRUE" || "$ha_enabled" == "true" ]]; then
DEPLOY_OPTIONS+=" --control-scale 3"
compute_nodes=$((total_nodes - 3))
DEPLOY_OPTIONS+=" -e /usr/share/openstack-tripleo-heat-templates/environments/puppet-pacemaker.yaml"
@@ -837,7 +840,7 @@ function undercloud_prep_overcloud_deploy {
DEPLOY_OPTIONS+=" -e network-environment.yaml"
fi
- if [[ "$ha_enabled" == "TRUE" ]] || [[ "$net_isolation_enabled" == "TRUE" ]]; then
+ if [[ "$ha_enabled" == "TRUE" || "$ha_enabled" == "true" ]] || [[ "$net_isolation_enabled" == "TRUE" ]]; then
DEPLOY_OPTIONS+=" --ntp-server $ntp_server"
fi
@@ -957,6 +960,20 @@ EOI
echo -e "${blue}INFO: Undercloud (instack VM) has been setup to NAT Overcloud public network${reset}"
fi
fi
+
+ # for sfc deployments we need the vxlan workaround
+ if [ "${deploy_options_array['sfc']}" == 'true' ]; then
+ ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
+source stackrc
+set -o errexit
+for node in \$(nova list | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"); do
+ssh -T ${SSH_OPTIONS[@]} "heat-admin@\$node" <<EOF
+sudo ifconfig br-int up
+sudo ip route add 123.123.123.0/24 dev br-int
+EOF
+done
+EOI
+ fi
}
display_usage() {
@@ -1131,7 +1148,7 @@ main() {
echo -e "${blue}INFO: Post Install Configuration Complete${reset}"
fi
fi
- if [[ ${deploy_options_array['sdn_controller']} == 'onos' ]]; then
+ if [[ "${deploy_options_array['sdn_controller']}" == 'onos' ]]; then
if ! onos_update_gw_mac ${public_network_cidr} ${public_network_gateway}; then
echo -e "${red}ERROR:ONOS Post Install Configuration Failed, Exiting.${reset}"
exit 1
diff --git a/config/deploy/network/network_settings.yaml b/config/deploy/network/network_settings.yaml
index 6645a86a..88bb3b58 100644
--- a/config/deploy/network/network_settings.yaml
+++ b/config/deploy/network/network_settings.yaml
@@ -1,5 +1,31 @@
-# Defines Network Environment for a Baremetal Deployment
-# Any values missing will be auto-detected on the jumphost
+# This configuration file defines Network Environment for a
+# Baremetal Deployment of OPNFV. It contains default values
+# for 4 following networks:
+#
+# - admin
+# - private*
+# - public
+# - storage*
+#
+# *) optional networks
+#
+# Any values missing from this configuration file will be
+# auto-detected by deployment script from the existing network
+# configuration of the jumphost.
+#
+# Optional networks will be consolidated with the admin network
+# if not explicitely configured.
+#
+# See short description of the networks in the comments below.
+#
+
+# "admin" is the short name for Control Plane Network.
+# During OPNFV deployment it is used for node provisioning so
+# PXE boot should be enabled for the related interfaces on all
+# the nodes in the OPNFV cluster. After the deployment this
+# network is used as the OpenStack management network which
+# carries e.g. communication between its internal components.
+#
admin_network:
enabled: true
network_type: bridged
@@ -12,9 +38,23 @@ admin_network:
cidr: 192.0.2.0/24
dhcp_range: 192.0.2.2,192.0.2.10
introspection_range: 192.0.2.100,192.0.2.120
+
+# "private" is an optional network used as underlying physical
+# network for virtual provider and tenant networks created by
+# users. Traffic between virtual machines is carried by this
+# network.
+#
private_network:
enabled: true
cidr: 11.0.0.0/24
+
+# "public" network is used for external connectivity.
+# The external network provides Internet access for virtual
+# machines. If floating IP range is defined for this network,
+# floating IP addresses can be used for accessing virtual
+# machines from outside of OPNFV cluster. Also external REST
+# API calls use this network.
+#
public_network:
enabled: true
network_type: ''
@@ -24,11 +64,16 @@ public_network:
floating_ip_range: 192.168.37.200,192.168.37.220
usable_ip_range: 192.168.37.10,192.168.37.199
provisioner_ip: 192.168.37.1
+
+# "storage" is an optional network used by storage backends.
+# You can configure this network in order to reduce load on
+# Control Plane Network.
+#
storage_network:
enabled: true
cidr: 12.0.0.0/24
-#admin_network: #Required network, internal API network, other networks can collapse into this network if not enabled
+#admin_network:
# enabled: true
# network_type: bridged #Indicates if this network will be bridged to an interface, or to a bond
# bridged_interface: '' #Interface to bridge to for installer VM
@@ -40,9 +85,9 @@ storage_network:
# cidr: 192.0.2.0/24 #subnet in CIDR format 192.168.1.0/24, if empty it will be auto-detected
# dhcp_range: 192.0.2.2,192.0.2.10 #dhcp range for the admin network, if empty it will be automatically provisioned
# introspection_range: 192.0.2.100,192.0.2.120 #Range used for introspection phase (examining nodes)
-#private_network: #Network for internal tenant traffic
+#private_network:
# enabled: false #If disabled, internal api traffic will collapse to admin_network
-#public_network: #Network for external API traffic and external tenant traffic
+#public_network:
# enabled: true #If disabled, public_network traffic will collapse to admin network
# network_type: ''
# bridged_interface: ''
@@ -51,5 +96,5 @@ storage_network:
# floating_ip_range: 192.168.37.200,192.168.37.220 #Range to allocate to floating IPs for the public network with Neutron
# usable_ip_range: 192.168.37.10,192.168.37.199 #Usable IP range on the public network, usually this is a shared subnet
# provisioner_ip: 192.168.37.1
-#storage_network: #Network for Ceph storage traffic
+#storage_network:
# enabled: false #If disabled, storage_network traffic will collapse to admin network
diff --git a/config/deploy/os-odl_l2-sfc-ha.yaml b/config/deploy/os-odl_l2-sfc-noha.yaml
index d2e49bed..92372a90 100644
--- a/config/deploy/os-odl_l2-sfc-ha.yaml
+++ b/config/deploy/os-odl_l2-sfc-noha.yaml
@@ -1,5 +1,5 @@
global_params:
- ha_enabled: true
+ ha_enabled: false
deploy_options:
sdn_controller: opendaylight
diff --git a/docs/installation-instructions/baremetalinstall.rst b/docs/configguide/baremetalinstall.rst
index 0881da68..0881da68 100644
--- a/docs/installation-instructions/baremetalinstall.rst
+++ b/docs/configguide/baremetalinstall.rst
diff --git a/docs/configguide/introduction.rst b/docs/configguide/introduction.rst
new file mode 100644
index 00000000..af8e03b6
--- /dev/null
+++ b/docs/configguide/introduction.rst
@@ -0,0 +1,41 @@
+Introduction
+============
+
+This document describes the steps to install an OPNFV Bramaputra reference
+platform, as defined by the Genesis Project using the Apex installer.
+
+The audience is assumed to have a good background in networking
+and Linux administration.
+
+Preface
+=======
+
+Apex uses the RDO Manager Open Source project as a server provisioning tool.
+RDO Manager is the RDO Project implimentation of OpenStack's Triple-O project.
+The Triple-O image based life cycle installation tool provisions an OPNFV
+Target System (3 controllers, n number of compute nodes) with OPNFV specific
+configuration provided by the Apex deployment tool chain.
+
+The Apex deployment artifacts contain the necessary tools to deploy and
+configure an OPNFV target system using the Apex deployment toolchain.
+These artifacts offer the choice of using the Apex bootable ISO
+(``opnfv-apex-bramaputra.iso``) to both install CentOS 7 and the
+nessesary materials to deploy or the Apex RPM (``opnfv-apex.rpm``)
+which expects installation to a CentOS 7 libvirt enabled host. The RPM
+contains a collection of configuration file, prebuilt disk images,
+and the automatic deployment script (``opnfv-deploy``).
+
+An OPNFV install requires a "Jumphost" in order to operate. The bootable
+ISO will allow you to install a customized CentOS 7 release to the Jumphost,
+which includes the required packages needed to run ``opnfv-deploy``.
+If you already have a Jumphost with CentOS 7 installed, you may choose to
+skip the ISO step and simply install the (``opnfv-apex.rpm``) RPM. The RPM
+is the same RPM included in the ISO and includes all the necessary disk
+images and configuration files to execute an OPNFV deployment. Either method
+will prepare a host to the same ready state for OPNFV deployment.
+
+``opnfv-deploy`` instantiates an RDO Manager Instack VM server using libvirt
+as its provider. This VM is then configured and used to provision the
+OPNFV target deployment (3 controllers, n compute nodes). These nodes can
+be either virtual or bare metal. This guide contains instructions for
+installing either method.
diff --git a/docs/installation-instructions/baremetal.rst b/docs/installation-instructions/baremetal.rst
new file mode 100644
index 00000000..3d40eb36
--- /dev/null
+++ b/docs/installation-instructions/baremetal.rst
@@ -0,0 +1,2 @@
+.. include:: ../configguide/baremetalinstall.rst
+
diff --git a/docs/installation-instructions/index.rst b/docs/installation-instructions/index.rst
index 1e94bf6d..1c3f4fe1 100644
--- a/docs/installation-instructions/index.rst
+++ b/docs/installation-instructions/index.rst
@@ -9,10 +9,10 @@ Contents:
:maxdepth: 4
abstract.rst
- instroduction.rst
+ introduction.rst
architecture.rst
requirements.rst
- baremetalinstall.rst
+ baremetal.rst
virtualinstall.rst
verification.rst
references.rst
@@ -24,6 +24,4 @@ Contents:
Indices and tables
==================
-* :ref:`genindex`
-* :ref:`modindex`
* :ref:`search`
diff --git a/docs/installation-instructions/introduction.rst b/docs/installation-instructions/introduction.rst
index af8e03b6..883c148a 100644
--- a/docs/installation-instructions/introduction.rst
+++ b/docs/installation-instructions/introduction.rst
@@ -1,41 +1,2 @@
-Introduction
-============
+.. include:: ../configguide/introduction.rst
-This document describes the steps to install an OPNFV Bramaputra reference
-platform, as defined by the Genesis Project using the Apex installer.
-
-The audience is assumed to have a good background in networking
-and Linux administration.
-
-Preface
-=======
-
-Apex uses the RDO Manager Open Source project as a server provisioning tool.
-RDO Manager is the RDO Project implimentation of OpenStack's Triple-O project.
-The Triple-O image based life cycle installation tool provisions an OPNFV
-Target System (3 controllers, n number of compute nodes) with OPNFV specific
-configuration provided by the Apex deployment tool chain.
-
-The Apex deployment artifacts contain the necessary tools to deploy and
-configure an OPNFV target system using the Apex deployment toolchain.
-These artifacts offer the choice of using the Apex bootable ISO
-(``opnfv-apex-bramaputra.iso``) to both install CentOS 7 and the
-nessesary materials to deploy or the Apex RPM (``opnfv-apex.rpm``)
-which expects installation to a CentOS 7 libvirt enabled host. The RPM
-contains a collection of configuration file, prebuilt disk images,
-and the automatic deployment script (``opnfv-deploy``).
-
-An OPNFV install requires a "Jumphost" in order to operate. The bootable
-ISO will allow you to install a customized CentOS 7 release to the Jumphost,
-which includes the required packages needed to run ``opnfv-deploy``.
-If you already have a Jumphost with CentOS 7 installed, you may choose to
-skip the ISO step and simply install the (``opnfv-apex.rpm``) RPM. The RPM
-is the same RPM included in the ISO and includes all the necessary disk
-images and configuration files to execute an OPNFV deployment. Either method
-will prepare a host to the same ready state for OPNFV deployment.
-
-``opnfv-deploy`` instantiates an RDO Manager Instack VM server using libvirt
-as its provider. This VM is then configured and used to provision the
-OPNFV target deployment (3 controllers, n compute nodes). These nodes can
-be either virtual or bare metal. This guide contains instructions for
-installing either method.