diff options
17 files changed, 1252 insertions, 0 deletions
diff --git a/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/README b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/README new file mode 100644 index 0000000..aee72d1 --- /dev/null +++ b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/README @@ -0,0 +1,23 @@ +This is the role which deploys the os-odl-bgpvpn scenarios in xci. + +# SCENARIOS # + +## os-odl-bgpvpn-noha ## + +To run os-odl-bgpvpn-noha you should export the following variables before +running xci-deploy.sh. Note that you should change xxxx by the path where +your releng-xci code is: + +export XCI_FLAVOR=noha +export DEPLOY_SCENARIO=os-odl-bgpvpn +export OPENSTACK_OSA_VERSION=master + + +## os-odl-bgpvpn-ha ## + +To run os-odl-bgpvpn-ha you should export the following variables before +running xci-deploy.sh: + +export XCI_FLAVOR=ha +export DEPLOY_SCENARIO=os-odl-bgpvpn +export OPENSTACK_OSA_VERSION=master diff --git a/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/ansible-role-requirements-pike.yml b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/ansible-role-requirements-pike.yml new file mode 100644 index 0000000..d357ed7 --- /dev/null +++ b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/ansible-role-requirements-pike.yml @@ -0,0 +1,223 @@ +--- +# SPDX-license-identifier: Apache-2.0 +############################################################################## +# Copyright (c) 2018 Ericsson AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +# This file is borrowed from os-odl-sfc scenario for stable/pike version +# https://github.com/opnfv/sfc/blob/master/scenarios/os-odl-sfc/role/os-odl-sfc/files/ansible-role-requirements-pike.yml +- name: ansible-hardening + scm: git + src: https://git.openstack.org/openstack/ansible-hardening + version: c05e36f48de66feb47046a0126d986fa03313f29 +- name: apt_package_pinning + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-apt_package_pinning + version: 9403a36513aee54c15890ac96c1f8c455f9c083d +- name: pip_install + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-pip_install + version: df107891bf9fdfa7287bdfe43f3fa0120a80e5ad +- name: galera_client + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-galera_client + version: 52b374547648056b58c544532296599801d501d7 +- name: galera_server + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-galera_server + version: b124e06872ebeca7d81cb22fb80ae97a995b07a8 +- name: ceph_client + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-ceph_client + version: 5fcbc68fdbd3105d233fd3c03c887f13227b1c3d +- name: haproxy_server + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-haproxy_server + version: a905aaed8627f59d9dc10b9bc031589a7c65828f +- name: keepalived + scm: git + src: https://github.com/evrardjp/ansible-keepalived + version: 3.0.3 +- name: lxc_container_create + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-lxc_container_create + version: c41d3b20da6be07d9bf5db7f7e6a1384c7cfb5eb +- name: lxc_hosts + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-lxc_hosts + version: d974c4db1696027899b28b2cb58800cae9a605e5 +- name: memcached_server + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-memcached_server + version: 08c483f3c5d49c236194090534a015b67c8cded6 +- name: openstack_hosts + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-openstack_hosts + version: a0d3b9c9756b6e95b0e034f3d0576fbb33607820 +- name: os_keystone + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_keystone + version: ffc9c9b5e681748ff3e54e43f22c921e83342a51 +- name: openstack_openrc + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-openstack_openrc + version: b27229ef168aed7f2febf6991b2d7459ec8883ee +- name: os_aodh + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_aodh + version: bcd77b1e10a7054e9365da6a20848b393153d025 +- name: os_barbican + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_barbican + version: 0797e8bdadd2fcf4696b22f0e18340c8d9539b09 +- name: os_ceilometer + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_ceilometer + version: 4b3e0589a0188de885659614ef4e076018af54f7 +- name: os_cinder + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_cinder + version: 6f5ab34e5a0694f3fc84e63c912e00e86e3de280 +- name: os_designate + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_designate + version: eac6d3c674397097d8adf722635252b1822c8f6c +- name: os_glance + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_glance + version: 47080919c937aace65fc7dc8e9670dbcfd910b88 +- name: os_gnocchi + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_gnocchi + version: 5f8950f61ed6b61d1cc06ab73b3b02466bee0db1 +- name: os_heat + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_heat + version: 4d1efae631026631fb2af4f43a9fe8ca210d643e +- name: os_horizon + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_horizon + version: 71aa69b1425f5b5b2bdc274357b62a9b4b57ae8f +- name: os_ironic + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_ironic + version: 34205b6b99fc3cfe54eddbcde0380e626976e425 +- name: os_magnum + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_magnum + version: 0fdeea886ef4227e02d793f6dbfd54ccd9e6e088 +- name: os_molteniron + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_molteniron + version: 58cff32e954ab817d07b8e0a136663c34d7f7b60 +- name: os_neutron + scm: git + src: https://github.com/pperiyasamy/openstack-ansible-os_neutron + version: odl-bgpvpn-support +- name: os_nova + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_nova + version: 80e0d04822f7ddc5b8d574329e4eb8a76aea63ff +- name: os_octavia + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_octavia + version: 5fd1fbae703c17f928cfc00f60aeeed0500c6f2b +- name: os_rally + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_rally + version: b2658fb704fd3a1e8bce794b8bf87ac83931aa46 +- name: os_sahara + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_sahara + version: e3e4f1bc8d72dd6fb7e26b8d0d364f9a60e16b0f +- name: os_swift + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_swift + version: 0bb5979de285305f652694cee139390a8102c134 +- name: os_tempest + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_tempest + version: 0fb52fcd130bee25f40cd515da69948821d5b504 +- name: os_trove + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-os_trove + version: 6596f6b28c88a88c89e293ea8f5f8551eb491fd1 +- name: plugins + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-plugins + version: 11aed400f86951593bb60d1e853574b67894b0b3 +- name: rabbitmq_server + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-rabbitmq_server + version: fa80dfc0f8129e02f3f3b34bb7205889d3e5696c +- name: repo_build + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-repo_build + version: d0079ff721b0f9c4682d57eccfadb36f365eea2b +- name: repo_server + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-repo_server + version: 8302adcb11cad4e6245fd6bd1bbb4db08d3b60e9 +- name: rsyslog_client + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-rsyslog_client + version: f41638370114412b97c6523b4c626ca70f0337f4 +- name: rsyslog_server + scm: git + src: https://git.openstack.org/openstack/openstack-ansible-rsyslog_server + version: 61a3ab251f63c6156f2a6604ee1a822070e19c90 +- name: sshd + scm: git + src: https://github.com/willshersystems/ansible-sshd + version: 0.5.1 +- name: bird + scm: git + src: https://github.com/logan2211/ansible-bird + version: '1.4' +- name: etcd + scm: git + src: https://github.com/logan2211/ansible-etcd + version: '1.3' +- name: unbound + scm: git + src: https://github.com/logan2211/ansible-unbound + version: '1.5' +- name: resolvconf + scm: git + src: https://github.com/logan2211/ansible-resolvconf + version: '1.3' +- name: ceph-defaults + scm: git + src: https://github.com/ceph/ansible-ceph-defaults + version: v3.0.8 +- name: ceph-common + scm: git + src: https://github.com/ceph/ansible-ceph-common + version: v3.0.8 +- name: ceph-config + scm: git + src: https://github.com/ceph/ansible-ceph-config + version: v3.0.8 +- name: ceph-mon + scm: git + src: https://github.com/ceph/ansible-ceph-mon + version: v3.0.8 +- name: ceph-mgr + scm: git + src: https://github.com/ceph/ansible-ceph-mgr + version: v3.0.8 +- name: ceph-osd + scm: git + src: https://github.com/ceph/ansible-ceph-osd + version: v3.0.8 +- name: os_tacker + scm: git + src: https://github.com/manuelbuil/openstack-ansible-os_tacker + version: pike-suse-support +- name: opendaylight + scm: git + src: https://git.opendaylight.org/gerrit/p/integration/packaging/ansible-opendaylight.git + version: 2af197bd13f77d2a07878b160c00f8ceeebb3c34
\ No newline at end of file diff --git a/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/ha/openstack_user_config.yml b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/ha/openstack_user_config.yml new file mode 100644 index 0000000..2ca5a98 --- /dev/null +++ b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/ha/openstack_user_config.yml @@ -0,0 +1,256 @@ +--- +cidr_networks: + container: 172.29.236.0/22 + tunnel: 172.29.240.0/22 + storage: 172.29.244.0/22 + +used_ips: + - "172.29.236.1,172.29.236.50" + - "172.29.240.1,172.29.240.50" + - "172.29.244.1,172.29.244.50" + - "172.29.248.1,172.29.248.50" + - "172.29.236.222" + +global_overrides: + internal_lb_vip_address: 172.29.236.222 + external_lb_vip_address: 192.168.122.220 + tunnel_bridge: "br-vxlan" + management_bridge: "br-mgmt" + provider_networks: + - network: + container_bridge: "br-mgmt" + container_type: "veth" + container_interface: "eth1" + ip_from_q: "container" + type: "raw" + group_binds: + - all_containers + - hosts + is_container_address: true + is_ssh_address: true + - network: + container_bridge: "br-vxlan" + container_type: "veth" + container_interface: "eth10" + ip_from_q: "tunnel" + type: "vxlan" + range: "1:1000" + net_name: "vxlan" + group_binds: + - neutron_openvswitch_agent + - network: + container_bridge: "br-vlan" + container_type: "veth" + container_interface: "eth12" + host_bind_override: "eth12" + type: "flat" + net_name: "flat" + group_binds: + - neutron_openvswitch_agent + - network: + container_bridge: "br-vlan" + container_type: "veth" + container_interface: "eth11" + host_bind_override: "eth12" + type: "vlan" + range: "102:199" + net_name: "physnet1" + group_binds: + - neutron_openvswitch_agent + - network: + container_bridge: "br-storage" + container_type: "veth" + container_interface: "eth2" + ip_from_q: "storage" + type: "raw" + group_binds: + - glance_api + - cinder_api + - cinder_volume + - nova_compute + +# ## +# ## Infrastructure +# ## + +# galera, memcache, rabbitmq, utility +shared-infra_hosts: + controller00: + ip: 172.29.236.11 + controller01: + ip: 172.29.236.12 + controller02: + ip: 172.29.236.13 + +# repository (apt cache, python packages, etc) +repo-infra_hosts: + controller00: + ip: 172.29.236.11 + controller01: + ip: 172.29.236.12 + controller02: + ip: 172.29.236.13 + +# load balancer +# Ideally the load balancer should not use the Infrastructure hosts. +# Dedicated hardware is best for improved performance and security. +haproxy_hosts: + controller00: + ip: 172.29.236.11 + controller01: + ip: 172.29.236.12 + controller02: + ip: 172.29.236.13 + +# rsyslog server +# log_hosts: +# log1: +# ip: 172.29.236.14 + +# ## +# ## OpenStack +# ## + +# keystone +identity_hosts: + controller00: + ip: 172.29.236.11 + controller01: + ip: 172.29.236.12 + controller02: + ip: 172.29.236.13 + +# cinder api services +storage-infra_hosts: + controller00: + ip: 172.29.236.11 + controller01: + ip: 172.29.236.12 + controller02: + ip: 172.29.236.13 + +# glance +# The settings here are repeated for each infra host. +# They could instead be applied as global settings in +# user_variables, but are left here to illustrate that +# each container could have different storage targets. +image_hosts: + controller00: + ip: 172.29.236.11 + container_vars: + limit_container_types: glance + glance_nfs_client: + - server: "172.29.244.14" + remote_path: "/images" + local_path: "/var/lib/glance/images" + type: "nfs" + options: "_netdev,auto" + controller01: + ip: 172.29.236.12 + container_vars: + limit_container_types: glance + glance_nfs_client: + - server: "172.29.244.14" + remote_path: "/images" + local_path: "/var/lib/glance/images" + type: "nfs" + options: "_netdev,auto" + controller02: + ip: 172.29.236.13 + container_vars: + limit_container_types: glance + glance_nfs_client: + - server: "172.29.244.14" + remote_path: "/images" + local_path: "/var/lib/glance/images" + type: "nfs" + options: "_netdev,auto" + +# nova api, conductor, etc services +compute-infra_hosts: + controller00: + ip: 172.29.236.11 + controller01: + ip: 172.29.236.12 + controller02: + ip: 172.29.236.13 + +# heat +orchestration_hosts: + controller00: + ip: 172.29.236.11 + controller01: + ip: 172.29.236.12 + controller02: + ip: 172.29.236.13 + +# horizon +dashboard_hosts: + controller00: + ip: 172.29.236.11 + controller01: + ip: 172.29.236.12 + controller02: + ip: 172.29.236.13 + +# neutron server, agents (L3, etc) +network_hosts: + controller00: + ip: 172.29.236.11 + controller01: + ip: 172.29.236.12 + controller02: + ip: 172.29.236.13 + +# nova hypervisors +compute_hosts: + compute00: + ip: 172.29.236.14 + compute01: + ip: 172.29.236.15 + +# cinder volume hosts (NFS-backed) +# The settings here are repeated for each infra host. +# They could instead be applied as global settings in +# user_variables, but are left here to illustrate that +# each container could have different storage targets. +storage_hosts: + controller00: + ip: 172.29.236.11 + container_vars: + cinder_backends: + limit_container_types: cinder_volume + nfs_volume: + volume_backend_name: NFS_VOLUME1 + volume_driver: cinder.volume.drivers.nfs.NfsDriver + nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120" + nfs_shares_config: /etc/cinder/nfs_shares + shares: + - ip: "172.29.244.14" + share: "/volumes" + controller01: + ip: 172.29.236.12 + container_vars: + cinder_backends: + limit_container_types: cinder_volume + nfs_volume: + volume_backend_name: NFS_VOLUME1 + volume_driver: cinder.volume.drivers.nfs.NfsDriver + nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120" + nfs_shares_config: /etc/cinder/nfs_shares + shares: + - ip: "172.29.244.14" + share: "/volumes" + controller02: + ip: 172.29.236.13 + container_vars: + cinder_backends: + limit_container_types: cinder_volume + nfs_volume: + volume_backend_name: NFS_VOLUME1 + volume_driver: cinder.volume.drivers.nfs.NfsDriver + nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120" + nfs_shares_config: /etc/cinder/nfs_shares + shares: + - ip: "172.29.244.14" + share: "/volumes" diff --git a/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/ha/user_variables_os-odl-bgpvpn-ha.yml b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/ha/user_variables_os-odl-bgpvpn-ha.yml new file mode 100644 index 0000000..25cd683 --- /dev/null +++ b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/ha/user_variables_os-odl-bgpvpn-ha.yml @@ -0,0 +1,22 @@ +--- +# Copyright (c) 2017 Ericsson AB and others. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# ## +# ## This file contains commonly used overrides for convenience. Please inspect +# ## the defaults for each role to find additional override options. +# ## + +# Enable clustering for opendaylight +cluster: true
\ No newline at end of file diff --git a/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/mini/openstack_user_config.yml b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/mini/openstack_user_config.yml new file mode 100644 index 0000000..0f8ccd1 --- /dev/null +++ b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/mini/openstack_user_config.yml @@ -0,0 +1,171 @@ +--- +cidr_networks: + container: 172.29.236.0/22 + tunnel: 172.29.240.0/22 + storage: 172.29.244.0/22 + +used_ips: + - "172.29.236.1,172.29.236.50" + - "172.29.240.1,172.29.240.50" + - "172.29.244.1,172.29.244.50" + - "172.29.248.1,172.29.248.50" + +global_overrides: + internal_lb_vip_address: 172.29.236.11 + external_lb_vip_address: 192.168.122.3 + tunnel_bridge: "br-vxlan" + management_bridge: "br-mgmt" + provider_networks: + - network: + container_bridge: "br-mgmt" + container_type: "veth" + container_interface: "eth1" + ip_from_q: "container" + type: "raw" + group_binds: + - all_containers + - hosts + is_container_address: true + is_ssh_address: true + - network: + container_bridge: "br-vxlan" + container_type: "veth" + container_interface: "eth10" + ip_from_q: "tunnel" + type: "vxlan" + range: "1:1000" + net_name: "vxlan" + group_binds: + - neutron_openvswitch_agent + - network: + container_bridge: "br-vlan" + container_type: "veth" + container_interface: "eth12" + host_bind_override: "eth12" + type: "flat" + net_name: "flat" + group_binds: + - neutron_openvswitch_agent + - network: + container_bridge: "br-vlan" + container_type: "veth" + container_interface: "eth11" + host_bind_override: "eth12" + type: "vlan" + range: "102:199" + net_name: "physnet1" + group_binds: + - neutron_openvswitch_agent + - network: + container_bridge: "br-storage" + container_type: "veth" + container_interface: "eth2" + ip_from_q: "storage" + type: "raw" + group_binds: + - glance_api + - cinder_api + - cinder_volume + - nova_compute + +# ## +# ## Infrastructure +# ## + +# galera, memcache, rabbitmq, utility +shared-infra_hosts: + controller00: + ip: 172.29.236.11 + +# repository (apt cache, python packages, etc) +repo-infra_hosts: + controller00: + ip: 172.29.236.11 + +# load balancer +# Ideally the load balancer should not use the Infrastructure hosts. +# Dedicated hardware is best for improved performance and security. +haproxy_hosts: + controller00: + ip: 172.29.236.11 + +# rsyslog server +# log_hosts: +# log1: +# ip: 172.29.236.14 + +# ## +# ## OpenStack +# ## + +# keystone +identity_hosts: + controller00: + ip: 172.29.236.11 + +# cinder api services +storage-infra_hosts: + controller00: + ip: 172.29.236.11 + +# glance +# The settings here are repeated for each infra host. +# They could instead be applied as global settings in +# user_variables, but are left here to illustrate that +# each container could have different storage targets. +image_hosts: + controller00: + ip: 172.29.236.11 + container_vars: + limit_container_types: glance + glance_nfs_client: + - server: "172.29.244.12" + remote_path: "/images" + local_path: "/var/lib/glance/images" + type: "nfs" + options: "_netdev,auto" + +# nova api, conductor, etc services +compute-infra_hosts: + controller00: + ip: 172.29.236.11 + +# heat +orchestration_hosts: + controller00: + ip: 172.29.236.11 + +# horizon +dashboard_hosts: + controller00: + ip: 172.29.236.11 + +# neutron server, agents (L3, etc) +network_hosts: + controller00: + ip: 172.29.236.11 + +# nova hypervisors +compute_hosts: + compute00: + ip: 172.29.236.12 + +# cinder volume hosts (NFS-backed) +# The settings here are repeated for each infra host. +# They could instead be applied as global settings in +# user_variables, but are left here to illustrate that +# each container could have different storage targets. +storage_hosts: + controller00: + ip: 172.29.236.11 + container_vars: + cinder_backends: + limit_container_types: cinder_volume + nfs_volume: + volume_backend_name: NFS_VOLUME1 + volume_driver: cinder.volume.drivers.nfs.NfsDriver + nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120" + nfs_shares_config: /etc/cinder/nfs_shares + shares: + - ip: "172.29.244.12" + share: "/volumes" diff --git a/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/noha/openstack_user_config.yml b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/noha/openstack_user_config.yml new file mode 100644 index 0000000..7ed9cd3 --- /dev/null +++ b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/noha/openstack_user_config.yml @@ -0,0 +1,173 @@ +--- +cidr_networks: + container: 172.29.236.0/22 + tunnel: 172.29.240.0/22 + storage: 172.29.244.0/22 + +used_ips: + - "172.29.236.1,172.29.236.50" + - "172.29.240.1,172.29.240.50" + - "172.29.244.1,172.29.244.50" + - "172.29.248.1,172.29.248.50" + +global_overrides: + internal_lb_vip_address: 172.29.236.11 + external_lb_vip_address: 192.168.122.3 + tunnel_bridge: "br-vxlan" + management_bridge: "br-mgmt" + provider_networks: + - network: + container_bridge: "br-mgmt" + container_type: "veth" + container_interface: "eth1" + ip_from_q: "container" + type: "raw" + group_binds: + - all_containers + - hosts + is_container_address: true + is_ssh_address: true + - network: + container_bridge: "br-vxlan" + container_type: "veth" + container_interface: "eth10" + ip_from_q: "tunnel" + type: "vxlan" + range: "1:1000" + net_name: "vxlan" + group_binds: + - neutron_openvswitch_agent + - network: + container_bridge: "br-vlan" + container_type: "veth" + container_interface: "eth12" + host_bind_override: "eth12" + type: "flat" + net_name: "flat" + group_binds: + - neutron_openvswitch_agent + - network: + container_bridge: "br-vlan" + container_type: "veth" + container_interface: "eth11" + host_bind_override: "eth12" + type: "vlan" + range: "102:199" + net_name: "physnet1" + group_binds: + - neutron_openvswitch_agent + - network: + container_bridge: "br-storage" + container_type: "veth" + container_interface: "eth2" + ip_from_q: "storage" + type: "raw" + group_binds: + - glance_api + - cinder_api + - cinder_volume + - nova_compute + +# ## +# ## Infrastructure +# ## + +# galera, memcache, rabbitmq, utility +shared-infra_hosts: + controller00: + ip: 172.29.236.11 + +# repository (apt cache, python packages, etc) +repo-infra_hosts: + controller00: + ip: 172.29.236.11 + +# load balancer +# Ideally the load balancer should not use the Infrastructure hosts. +# Dedicated hardware is best for improved performance and security. +haproxy_hosts: + controller00: + ip: 172.29.236.11 + +# rsyslog server +# log_hosts: +# log1: +# ip: 172.29.236.14 + +# ## +# ## OpenStack +# ## + +# keystone +identity_hosts: + controller00: + ip: 172.29.236.11 + +# cinder api services +storage-infra_hosts: + controller00: + ip: 172.29.236.11 + +# glance +# The settings here are repeated for each infra host. +# They could instead be applied as global settings in +# user_variables, but are left here to illustrate that +# each container could have different storage targets. +image_hosts: + controller00: + ip: 172.29.236.11 + container_vars: + limit_container_types: glance + glance_nfs_client: + - server: "172.29.244.12" + remote_path: "/images" + local_path: "/var/lib/glance/images" + type: "nfs" + options: "_netdev,auto" + +# nova api, conductor, etc services +compute-infra_hosts: + controller00: + ip: 172.29.236.11 + +# heat +orchestration_hosts: + controller00: + ip: 172.29.236.11 + +# horizon +dashboard_hosts: + controller00: + ip: 172.29.236.11 + +# neutron server, agents (L3, etc) +network_hosts: + controller00: + ip: 172.29.236.11 + +# nova hypervisors +compute_hosts: + compute00: + ip: 172.29.236.12 + compute01: + ip: 172.29.236.13 + +# cinder volume hosts (NFS-backed) +# The settings here are repeated for each infra host. +# They could instead be applied as global settings in +# user_variables, but are left here to illustrate that +# each container could have different storage targets. +storage_hosts: + controller00: + ip: 172.29.236.11 + container_vars: + cinder_backends: + limit_container_types: cinder_volume + nfs_volume: + volume_backend_name: NFS_VOLUME1 + volume_driver: cinder.volume.drivers.nfs.NfsDriver + nfs_mount_options: "rsize=65535,wsize=65535,timeo=1200,actimeo=120" + nfs_shares_config: /etc/cinder/nfs_shares + shares: + - ip: "172.29.244.12" + share: "/volumes" diff --git a/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/group_vars/quagga_all.yml b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/group_vars/quagga_all.yml new file mode 100644 index 0000000..342a2f2 --- /dev/null +++ b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/group_vars/quagga_all.yml @@ -0,0 +1,46 @@ +--- +# Copyright (c) 2017-2018 Ericsson AB and others. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Distro on which quagga packages to be installed +quagga_install_method: "{{ (ansible_os_family=='Debian') | ternary('deb_repo', 'rpm_repo') }}" + +# Quagga deb packages repository location +quagga_deb_repo: https://wiki.opnfv.org/download/attachments/6827916/quagga-ubuntu.tar.gz + +# Quagga rpm packages repository location +quagga_rpm_repo: https://wiki.opnfv.org/download/attachments/6827916/quagga-4.tar.gz + +# Find out correct quagga package url based on the +# quagga install method +quagga_package_url: "{% if quagga_install_method == 'deb_repo' %}{{ quagga_deb_repo }}{% else %}{{ quagga_rpm_repo }}{% endif %}" + +# Temporary location on which quagga packages to be +# retrieved for the installation +temp_quagga_dir: /tmp/quagga + +# The neutron server node on which OSA configures ODL +# as the BGP speaker +odl_bgp_speaker_host: "{{ ((groups['neutron_server'] | intersect(ansible_play_hosts)) | list)[0] }}" + +# BGP Config Server Port at quagga side for ODL to establish +# thrift connection. +bgp_config_server_port: 7644 + +# The ODL client location which is used to run the karaf +# commands to configure ODL as BGP speaker +opendaylight_karaf_client: /opt/opendaylight/bin/client + +# The ODL karaf host ip address +opendaylight_karaf_host: 127.0.0.1 diff --git a/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/playbooks/defaults/repo-packages/opendaylight.yml b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/playbooks/defaults/repo-packages/opendaylight.yml new file mode 100644 index 0000000..5316b1b --- /dev/null +++ b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/playbooks/defaults/repo-packages/opendaylight.yml @@ -0,0 +1,9 @@ +--- + +networking_odl_git_repo: https://git.openstack.org/openstack/networking-odl +networking_odl_git_install_branch: stable/pike +networking_odl_git_project_group: neutron_all + +networking_bgpvpn_git_repo: https://git.openstack.org/openstack/networking-bgpvpn +networking_bgpvpn_git_install_branch: stable/pike +networking_bgpvpn_project_group: neutron_all diff --git a/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/playbooks/inventory/env.d/neutron.yml b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/playbooks/inventory/env.d/neutron.yml new file mode 100644 index 0000000..f1d85b4 --- /dev/null +++ b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/playbooks/inventory/env.d/neutron.yml @@ -0,0 +1,87 @@ +--- +# Copyright 2014, Rackspace US, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +component_skel: + neutron_agent: + belongs_to: + - neutron_all + neutron_dhcp_agent: + belongs_to: + - neutron_all + neutron_linuxbridge_agent: + belongs_to: + - neutron_all + neutron_openvswitch_agent: + belongs_to: + - neutron_all + neutron_metering_agent: + belongs_to: + - neutron_all + neutron_l3_agent: + belongs_to: + - neutron_all + neutron_lbaas_agent: + belongs_to: + - neutron_all + neutron_bgp_dragent: + belongs_to: + - neutron_all + neutron_metadata_agent: + belongs_to: + - neutron_all + neutron_sriov_nic_agent: + belongs_to: + - neutron_all + neutron_server: + belongs_to: + - neutron_all + opendaylight: + belongs_to: + - neutron_all + + +container_skel: + neutron_agents_container: + belongs_to: + - network_containers + contains: + - neutron_agent + - neutron_bgp_dragent + - neutron_dhcp_agent + - neutron_l3_agent + - neutron_lbaas_agent + - neutron_linuxbridge_agent + - neutron_metadata_agent + - neutron_metering_agent + - neutron_openvswitch_agent + - neutron_sriov_nic_agent + properties: + is_metal: true + neutron_server_container: + belongs_to: + - network_containers + contains: + - neutron_server + - opendaylight + - quagga_server + + +physical_skel: + network_containers: + belongs_to: + - all_containers + network_hosts: + belongs_to: + - hosts diff --git a/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/playbooks/inventory/env.d/quagga.yml b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/playbooks/inventory/env.d/quagga.yml new file mode 100644 index 0000000..19b890c --- /dev/null +++ b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/playbooks/inventory/env.d/quagga.yml @@ -0,0 +1,19 @@ +--- +# Copyright (c) 2017-2018 Ericsson AB and others. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +component_skel: + quagga_server: + belongs_to: + - quagga_all diff --git a/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/playbooks/os-setup-bgp-odl.yml b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/playbooks/os-setup-bgp-odl.yml new file mode 100644 index 0000000..67a3b2d --- /dev/null +++ b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/playbooks/os-setup-bgp-odl.yml @@ -0,0 +1,77 @@ +--- +# Copyright (c) 2017-2018 Ericsson AB and others. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +- name: Install and Configure OpenDaylight for BGPVPN + hosts: quagga_all + gather_facts: "{{ osa_gather_facts | default(True) }}" + user: root + + tasks: + - name: Retrieve checksum for quagga download + uri: + url: "{{ quagga_package_url | replace('tar.gz', 'checksum') }}" + return_content: yes + register: quagga_package_checksum + + - name: Attempt quagga download + get_url: + url: "{{ quagga_package_url }}" + dest: "/var/cache/{{ quagga_package_url | basename }}" + checksum: "sha1:{{ quagga_package_checksum.content | trim }}" + register: osa_get_quagga + + - name: Unarchive pre-built quagga packages + unarchive: + src: "/var/cache/{{ quagga_package_url | basename }}" + dest: "{{ temp_quagga_dir | dirname }}" + copy: "no" + + - name: Prerequisite check for quagga + apt: + name: libglib2.0-0 + state: present + when: quagga_install_method == "deb_repo" + + - name: Prerequisite check for quagga + yum: + name: glib2,glib2-devel + state: present + when: quagga_install_method == "rpm_repo" + + - name: Install quagga rpm packages + shell: | + cd {{ temp_quagga_dir }} + packages=$(ls |grep -vE 'debuginfo|devel|contrib') + yum -y $packages + when: quagga_install_method == "rpm_repo" + + - name: Install quagga Debian packages + shell: | + cd {{ temp_quagga_dir }} + packages=$(ls |grep -vE 'debuginfo|devel|contrib') + dpkg -i $packages + when: quagga_install_method == "deb_repo" + + - name: Start Zebra RPC Daemon for Quagga + command: /opt/quagga/etc/init.d/zrpcd start + when: inventory_hostname == odl_bgp_speaker_host + + - name: Connect OpenDaylight with Quagga + command: "{{ opendaylight_karaf_client }} -h {{ opendaylight_karaf_host }} 'bgp-connect --host {{ opendaylight_karaf_host }} --port {{ bgp_config_server_port }} add'" + when: inventory_hostname == odl_bgp_speaker_host + + - name: Configure Opendaylight as BGP speaker + command: "{{ opendaylight_karaf_client }} -h {{ opendaylight_karaf_host }} 'odl:configure-bgp -op start-bgp-server --as-num 100 --router-id {{ odl_bgp_speaker_host }}'" + when: inventory_hostname == odl_bgp_speaker_host diff --git a/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/setup-openstack.yml b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/setup-openstack.yml new file mode 100644 index 0000000..a107374 --- /dev/null +++ b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/setup-openstack.yml @@ -0,0 +1,28 @@ +--- +# Copyright (c) 2018 Ericsson AB and others. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +- include: os-keystone-install.yml +- include: os-glance-install.yml +- include: os-cinder-install.yml +- include: os-nova-install.yml +- include: os-neutron-install.yml +- include: os-setup-bgp-odl.yml +- include: os-heat-install.yml +- include: os-horizon-install.yml +- include: os-swift-install.yml +- include: os-ironic-install.yml +- include: os-tacker-install.yml +- include: os-tempest-install.yml + when: (tempest_install | default(False)) | bool or (tempest_run | default(False)) | bool diff --git a/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/user_variables_os-odl-bgpvpn.yml b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/user_variables_os-odl-bgpvpn.yml new file mode 100644 index 0000000..5a95a8a --- /dev/null +++ b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/user_variables_os-odl-bgpvpn.yml @@ -0,0 +1,40 @@ +--- +# Copyright (c) 2017 Ericsson AB and others. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# ## +# ## This file contains commonly used overrides for convenience. Please inspect +# ## the defaults for each role to find additional override options. +# ## + +# Ensure the openvswitch kernel module is loaded +openstack_host_specific_kernel_modules: + - name: "openvswitch" + pattern: "CONFIG_OPENVSWITCH" + group: "network_hosts" + +# Use OpenDaylight SDN Controller +neutron_plugin_type: "ml2.opendaylight" +neutron_opendaylight_conf_ini_overrides: + ml2_odl: + username: "admin" + password: "admin" + port_binding_controller: "pseudo-agentdb-binding" + url: "http://{{ internal_lb_vip_address }}:8180/controller/nb/v2/neutron" + +neutron_ml2_drivers_type: "flat,vlan,vxlan" + +neutron_plugin_base: + - odl-router_v2 + - bgpvpn
\ No newline at end of file diff --git a/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/tasks/add-inventory-files-pike.yml b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/tasks/add-inventory-files-pike.yml new file mode 100644 index 0000000..36dd7eb --- /dev/null +++ b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/tasks/add-inventory-files-pike.yml @@ -0,0 +1,16 @@ +--- + +- name: Add networking-odl and networking-bgpvpn repos + copy: + src: openstack-ansible/pike/playbooks/defaults/repo_packages/opendaylight.yml + dest: "{{OPENSTACK_OSA_PATH}}/playbooks/defaults/repo_packages/opendaylight.yml" + +- name: Provide neutron inventory which adds quagga into neutron server + copy: + src: openstack-ansible/pike/playbooks/inventory/env.d/neutron.yml + dest: "{{OPENSTACK_OSA_PATH}}/playbooks/inventory/env.d/neutron.yml" + +- name: Provide Quagga inventory which adds quagga hosts + copy: + src: openstack-ansible/pike/playbooks/inventory/env.d/quagga.yml + dest: "{{OPENSTACK_OSA_PATH}}/playbooks/inventory/env.d/quagga.yml" diff --git a/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/tasks/add-osa-files-pike.yml b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/tasks/add-osa-files-pike.yml new file mode 100644 index 0000000..58b74fd --- /dev/null +++ b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/tasks/add-osa-files-pike.yml @@ -0,0 +1,16 @@ +--- + +- name: copy quagga variable file + copy: + src: openstack-ansible/pike/group-vars/quagga_all.yml + dest: "{{OPENSTACK_OSA_PATH}}/group-vars/quagga_all.yml" + +- name: Add the Quagga configuration playbook + copy: + src: openstack-ansible/pike/playbooks/os-setup-bgp-odl.yml + dest: "{{OPENSTACK_OSA_PATH}}/playbooks/os-setup-bgp-odl.yml" + +- name: copy OPNFV role requirements + copy: + src: "ansible-role-requirements-pike.yml" + dest: "{{OPENSTACK_OSA_PATH}}/ansible-role-requirements.yml"
\ No newline at end of file diff --git a/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/tasks/main.yml b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/tasks/main.yml new file mode 100644 index 0000000..c796342 --- /dev/null +++ b/scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/tasks/main.yml @@ -0,0 +1,39 @@ +--- +# SPDX-license-identifier: Apache-2.0 +############################################################################## +# Copyright (c) 2017-18 Ericsson AB and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +- name: copy user_variables_os-odl-bgpvpn.yml + copy: + src: "user_variables_os-odl-bgpvpn.yml" + dest: "{{OPENSTACK_OSA_ETC_PATH}}/user_variables_os-odl-bgpvpn.yml" + +- name: copy user_variables_os-odl-bgpvpn-ha.yml + copy: + src: "{{XCI_FLAVOR}}/user_variables_os-odl-bgpvpn-ha.yml" + dest: "{{OPENSTACK_OSA_ETC_PATH}}/user_variables_os-odl-bgpvpn-ha.yml" + when: + - XCI_FLAVOR == "ha" + +- name: copy os-odl-bgpvpn scenario specific openstack_user_config.yml + copy: + src: "{{XCI_FLAVOR}}/openstack_user_config.yml" + dest: "{{OPENSTACK_OSA_ETC_PATH}}/openstack_user_config.yml" + +- name: copy os-odl-bgpvpn scenario specific setup-openstack.yml + copy: + src: "setup-openstack.yml" + dest: " {{OPENSTACK_OSA_PATH}}/playbooks" + +- name: Copy the OSA not-yet-upstreamed files for Pike + include: add-osa-files-pike.yml + when: OPENSTACK_OSA_VERSION == "stable/pike" + +- name: Copy the OSA not-yet-upstreamed inventory files for Pike + include: add-inventory-files-pike.yml + when: OPENSTACK_OSA_VERSION == "stable/pike" diff --git a/scenarios/os-odl-bgpvpn/xci_overrides b/scenarios/os-odl-bgpvpn/xci_overrides new file mode 100644 index 0000000..4e897d0 --- /dev/null +++ b/scenarios/os-odl-bgpvpn/xci_overrides @@ -0,0 +1,7 @@ +#!/bin/bash + +if [[ $OPNFV_SCENARIO == "os-odl-bgpvpn" ]] && [[ $XCI_FLAVOR == "ha" ]]; then + export VM_MEMORY_SIZE=20480 +elif [[ $OPNFV_SCENARIO == "os-odl-bgpvpn" ]]; then + export VM_MEMORY_SIZE=16384 +fi
\ No newline at end of file |