summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeriyasamy Palanisamy <periyasamy.palanisamy@ericsson.com>2017-12-07 18:05:04 +0100
committerPeriyasamy Palanisamy <periyasamy.palanisamy@ericsson.com>2018-01-25 12:40:19 +0100
commit56791ea2dc5bcd0ba2d1811753dbbb5934fd8a92 (patch)
tree44d8cd68ec0d8aa9c8c280a575b61a4585003452
parentfbfb2513a8bc4f82ba2f5e69e64da659716cfb2d (diff)
os-odl-bgpvpn scenario for xci deployment
This includes scenario os-odl-bgpvpn scenario specific configuration files to make XCI to install Openstack (master and stable/pike) with OpenDaylight configured as a BGP speaker. XCI would automatically checkout sdnvpn repo and use scenarios directory for the configuration during its execution time. Change-Id: Ic86fcb171c8e97f7d3c3fb649ab0fb00368e6c6d Signed-off-by: Periyasamy Palanisamy <periyasamy.palanisamy@ericsson.com>
-rw-r--r--scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/README23
-rw-r--r--scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/ansible-role-requirements-pike.yml223
-rw-r--r--scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/ha/openstack_user_config.yml256
-rw-r--r--scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/ha/user_variables_os-odl-bgpvpn-ha.yml22
-rw-r--r--scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/mini/openstack_user_config.yml171
-rw-r--r--scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/noha/openstack_user_config.yml173
-rw-r--r--scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/group_vars/quagga_all.yml46
-rw-r--r--scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/playbooks/defaults/repo-packages/opendaylight.yml9
-rw-r--r--scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/playbooks/inventory/env.d/neutron.yml87
-rw-r--r--scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/playbooks/inventory/env.d/quagga.yml19
-rw-r--r--scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/openstack-ansible/pike/playbooks/os-setup-bgp-odl.yml77
-rw-r--r--scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/setup-openstack.yml28
-rw-r--r--scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/files/user_variables_os-odl-bgpvpn.yml40
-rw-r--r--scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/tasks/add-inventory-files-pike.yml16
-rw-r--r--scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/tasks/add-osa-files-pike.yml16
-rw-r--r--scenarios/os-odl-bgpvpn/role/os-odl-bgpvpn/tasks/main.yml39
-rw-r--r--scenarios/os-odl-bgpvpn/xci_overrides7
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