diff options
-rwxr-xr-x | build/instack.sh | 2 | ||||
-rw-r--r-- | build/opnfv-apex-common.spec | 4 | ||||
-rw-r--r-- | build/opnfv-tripleo-heat-templates.patch | 244 | ||||
-rwxr-xr-x | ci/deploy.sh | 45 | ||||
-rw-r--r-- | config/deploy/network/network_settings.yaml | 57 | ||||
-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.rst | 41 | ||||
-rw-r--r-- | docs/installation-instructions/baremetal.rst | 2 | ||||
-rw-r--r-- | docs/installation-instructions/index.rst | 6 | ||||
-rw-r--r-- | docs/installation-instructions/introduction.rst | 41 |
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. |