[OVN] Merge networking-ovn vagrant into neutron
Move networking-ovn/vagrant into neutron/tools/ovn_vagrant Also added two sample local.conf files for a DB-only and VTEP nodes. Co-Authored-By: zhangyanxian <zhangyanxianmail@163.com> Co-Authored-By: chen-li <shchenli@cn.ibm.com> Co-Authored-By: Russell Bryant <rbryant@redhat.com> Co-Authored-By: Kyle Mestery <mestery@mestery.com Co-Authored-By: Miguel Angel Ajo <majopela@redhat.com> Co-Authored-By: Richard Theis <rtheis@us.ibm.com> Co-Authored-By: JUNJIE NAN <nanjj@cn.ibm.com> Co-Authored-By: Flavio Fernandes <flavio@flaviof.com> Co-Authored-By: John Kasperski <jckasper@us.ibm.com> Co-Authored-By: Matthew Kassawara <mkassawara@gmail.com> Co-Authored-By: venkatamahesh <venkatamaheshkotha@gmail.com> Co-Authored-By: Tong Li <litong01@us.ibm.com> Co-Authored-By: venkata anil <anilvenkata@redhat.com> Co-Authored-By: Vu Cong Tuan <tuanvc@vn.fujitsu.com> Co-Authored-By: RYAN D. MOATS <rmoats@us.ibm.com> Change-Id: I12966d5548a60b46edd5c84ee0035eb11671fd8c Partially-Implements: blueprint neutron-ovn-merge
This commit is contained in:
6
vagrant/ovn/provisioning/boxes.yml
Normal file
6
vagrant/ovn/provisioning/boxes.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
ubuntu:
|
||||
virtualbox: bento/ubuntu-18.04
|
||||
libvirt: elastic/ubuntu-18.04-x86_64
|
||||
parallels: bento/ubuntu-18.04
|
||||
openstack: bionic64
|
||||
27
vagrant/ovn/provisioning/id_rsa
Normal file
27
vagrant/ovn/provisioning/id_rsa
Normal file
@@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAv2EyHk382N9LGMPAGbAG9rea6qcO+I+qj7OscU1k8GxnYO0B
|
||||
hHYPMzfT1RgeBDelNyM22SNiySr4iTQDBQxgunrUCdTaNu5dmzYT68gieqnH+CRR
|
||||
jpLxXecH2hcvKyFx5qmhMt4zE3QWCDv2JJiB5CGoV7sGCy1aTYbFJBeKwMUMpBwP
|
||||
67rpBdVcpNjeSkw8FKDvPVx1p1O0YgeI9JoIL0qka6FFgiii/wf5jgr0w/JW15VI
|
||||
2pYwpHhdnBt3M3BV2HK5cA6nwFhUfAG0HLP5lUGW9/Hk5ng/Wl7cz8nLAdgXf4Uc
|
||||
IUffO5SH+9/H5VhTMDpaRPgxWuOw1/UGLgf57wIDAQABAoIBAD/+5X6Cv6lZycfn
|
||||
NWahmUKJFRGgeX4etH9HKsPciINpDIy51EcSH3UWFwzr+qWYYfP1H5MupQr2BpQC
|
||||
w3u9rt7M0fjTp4C05rJPPAwdKYJxIcBVjLwrYPDwn4yLMievEGJ8mL3k1ZmMuQ1Z
|
||||
165XHSBHLP7hOF0mdkr0ZRnzkV9yMPjZAI6xnkt/q6EvO34wSZu3/qsmptipHgqB
|
||||
QQAjPIvJwr7DMoLVpBjLlfGihUB5NAVC0RU+7SIiTAUg0atUzucp+sQMnWlWKVvM
|
||||
3+nHGC8gR4fUy30LDgxd4eqFyG8EYpTzpN/0bgM3kdwiQTkR/lGvhwmok/o6Nz0n
|
||||
67ve12ECgYEA41lug+TitPrq9VaLacTBpDOafsmIY30sylBJClcbkQ94NEQyNASg
|
||||
TsXxRtvYvKuHy0i2xZwagqEyReaTfsScmyFOk/SRFqjgmb3eWYtgF04MtAAmLy9G
|
||||
5UmPLEm6lLuQGCI7CqLAv3PFCR7W7dX5VYwkteDejZ0NlLeNqKJjIvECgYEA139W
|
||||
ocUBbWu4ea68JB/qOGrxCMQKn6K3l9kA7tuu+3a0le0G7LF6dr+X1wvboCF/w8CZ
|
||||
ZqKm35yZoAzyFmfn8oGtJdgbz4Sl3/vZReg86Ca//m4LMe1FkkimT3UW+BKprtEJ
|
||||
5GiKKWYElknMthbDTpL5EouciPhG0bYKuIMBKt8CgYAL+LqcEWJqu0fCEYOX1zeH
|
||||
KPx6rqwS6RWBtcaS19FoyxK+VdT67j9uxneVDqCUFsg4ySRutXCj7k8SZTjhFQNW
|
||||
G+PiYJ9/PPdOwTPDLVarA34hwFxCYc/u5Pe4Ek3T5SiKTMslHTrfGf6HI2uX7IuL
|
||||
mKyaMzQk6t87NIsuFRb5UQKBgQCzciEEslUe9b127k9S0ZSriDnQb9bc2ZWCB7zk
|
||||
KeELGu0Dj43dmWh968sX0pL/RAXtTrsuoTDOMcwnX8BTchDOerdhNRTrd+zcmA50
|
||||
TRAyzNnBl4cQ+yCc0IxUzA7lYj0UCpPvNDIgiQg20Zt64XefPXnUvJcL45qtVKaW
|
||||
wNg/BwKBgFyhjxftMwAJJF2Hcq5s8QvNhznBgLtne7jnQkHU4qcJx6tcR1hy0Jqe
|
||||
8/zkr5+41EaFU2jjGn8cnUrlS/Vc/HZg3rmHYycX5wg9hrg1j4hokSHjsGL6Y7yn
|
||||
8oXIWJSqpxuMjfRh1Tb81Fg05emrMjTy6aLuGS0siUlTPzflD0RI
|
||||
-----END RSA PRIVATE KEY-----
|
||||
1
vagrant/ovn/provisioning/id_rsa.pub
Normal file
1
vagrant/ovn/provisioning/id_rsa.pub
Normal file
@@ -0,0 +1 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/YTIeTfzY30sYw8AZsAb2t5rqpw74j6qPs6xxTWTwbGdg7QGEdg8zN9PVGB4EN6U3IzbZI2LJKviJNAMFDGC6etQJ1No27l2bNhPryCJ6qcf4JFGOkvFd5wfaFy8rIXHmqaEy3jMTdBYIO/YkmIHkIahXuwYLLVpNhsUkF4rAxQykHA/ruukF1Vyk2N5KTDwUoO89XHWnU7RiB4j0mggvSqRroUWCKKL/B/mOCvTD8lbXlUjaljCkeF2cG3czcFXYcrlwDqfAWFR8AbQcs/mVQZb38eTmeD9aXtzPycsB2Bd/hRwhR987lIf738flWFMwOlpE+DFa47DX9QYuB/nv vagrant@ovn
|
||||
19
vagrant/ovn/provisioning/provider-setup.sh
Normal file
19
vagrant/ovn/provisioning/provider-setup.sh
Normal file
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
function provider_setup {
|
||||
# Save the existing address from eth2 and add it to br-provider
|
||||
|
||||
if ip a | grep enp0; then
|
||||
PROV_IF=enp0s9
|
||||
else
|
||||
PROV_IF=eth2
|
||||
fi
|
||||
|
||||
PROVADDR=$(ip -4 addr show $PROV_IF | grep -oP "(?<=inet ).*(?= brd)")
|
||||
if [ -n "$PROVADDR" ]; then
|
||||
sudo ip addr flush dev $PROV_IF
|
||||
sudo ip addr add $PROVADDR dev br-provider
|
||||
sudo ip link set br-provider up
|
||||
sudo ovs-vsctl --may-exist add-port br-provider $PROV_IF
|
||||
fi
|
||||
}
|
||||
42
vagrant/ovn/provisioning/providers.rb
Normal file
42
vagrant/ovn/provisioning/providers.rb
Normal file
@@ -0,0 +1,42 @@
|
||||
|
||||
def provider_box(provider)
|
||||
distro = ENV.fetch('DISTRO', 'ubuntu')
|
||||
boxes = YAML.load_file('../provisioning/boxes.yml')[distro]
|
||||
|
||||
# we can always override the box via the VAGRANT_OVN_VM_BOX
|
||||
# environment variable
|
||||
return ENV.fetch('VAGRANT_OVN_VM_BOX', boxes[provider])
|
||||
end
|
||||
|
||||
def configure_providers(vm, config)
|
||||
vm.provider 'virtualbox' do |vb, cfg|
|
||||
cfg.vm.box = provider_box('virtualbox')
|
||||
vb.memory = config['memory']
|
||||
vb.cpus = config['cpus']
|
||||
vb.customize [
|
||||
'modifyvm', :id,
|
||||
'--nicpromisc3', "allow-all"
|
||||
]
|
||||
vb.customize [
|
||||
"guestproperty", "set", :id,
|
||||
"/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 10000
|
||||
]
|
||||
end
|
||||
|
||||
vm.provider 'parallels' do |vb, cfg|
|
||||
cfg.vm.box = provider_box('parallels')
|
||||
vb.memory = config['memory']
|
||||
vb.cpus = config['cpus']
|
||||
vb.customize ['set', :id, '--nested-virt', 'on']
|
||||
end
|
||||
|
||||
vm.provider 'libvirt' do |vb, cfg|
|
||||
cfg.vm.box = provider_box('libvirt')
|
||||
vb.memory = config['memory']
|
||||
vb.cpus = config['cpus']
|
||||
vb.nested = true
|
||||
vb.graphics_type = 'spice'
|
||||
vb.video_type = 'qxl'
|
||||
vb.suspend_mode = 'managedsave'
|
||||
end
|
||||
end
|
||||
104
vagrant/ovn/provisioning/setup-base.sh
Normal file
104
vagrant/ovn/provisioning/setup-base.sh
Normal file
@@ -0,0 +1,104 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Script Arguments:
|
||||
# $1 - MTU
|
||||
# $2 - ovn-db IP address
|
||||
# $3 - ovn-db short name
|
||||
# $4 - ovn-controller IP address
|
||||
# $5 - ovn-controller short name
|
||||
# $6 - ovn-compute1 IP address
|
||||
# $7 - ovn-compute1 short name
|
||||
# $8 - ovn-compute2 IP address
|
||||
# $9 - ovn-compute2 short name
|
||||
# $10 - ovn-vtep IP address
|
||||
# $11 - ovn-vtep short name
|
||||
MTU=$1
|
||||
OVN_DB_IP=$2
|
||||
OVN_DB_NAME=$3
|
||||
OVN_CONTROLLER_IP=$4
|
||||
OVN_CONTROLLER_NAME=$5
|
||||
OVN_COMPUTE1_IP=$6
|
||||
OVN_COMPUTE1_NAME=$7
|
||||
OVN_COMPUTE2_IP=$8
|
||||
OVN_COMPUTE2_NAME=$9
|
||||
OVN_VTEP_IP=$10
|
||||
OVN_VTEP_NAME=$11
|
||||
|
||||
BASE_PACKAGES="git bridge-utils ebtables python-pip python-dev build-essential ntp"
|
||||
DEBIAN_FRONTEND=noninteractive sudo apt-get -qqy update
|
||||
DEBIAN_FRONTEND=noninteractive sudo apt-get install -qqy $BASE_PACKAGES
|
||||
echo export LC_ALL=en_US.UTF-8 >> ~/.bash_profile
|
||||
echo export LANG=en_US.UTF-8 >> ~/.bash_profile
|
||||
# FIXME(mestery): Remove once Vagrant boxes allow apt-get to work again
|
||||
sudo rm -rf /var/lib/apt/lists/*
|
||||
sudo apt-get install -y git
|
||||
|
||||
# FIXME(mestery): By default, Ubuntu ships with /bin/sh pointing to
|
||||
# the dash shell.
|
||||
# ..
|
||||
# ..
|
||||
# The dots above represent a pause as you pick yourself up off the
|
||||
# floor. This means the latest version of "install_docker.sh" to load
|
||||
# docker fails because dash can't interpret some of it's bash-specific
|
||||
# things. It's a bug in install_docker.sh that it relies on those and
|
||||
# uses a shebang of /bin/sh, but that doesn't help us if we want to run
|
||||
# docker and specifically Kuryr. So, this works around that.
|
||||
sudo update-alternatives --install /bin/sh sh /bin/bash 100
|
||||
|
||||
if [ ! -d "devstack" ]; then
|
||||
git clone https://git.openstack.org/openstack-dev/devstack.git
|
||||
fi
|
||||
|
||||
# If available, use repositories on host to facilitate testing local changes.
|
||||
# Vagrant requires that shared folders exist on the host, so additionally
|
||||
# check for the ".git" directory in case the parent exists but lacks
|
||||
# repository contents.
|
||||
|
||||
if [ ! -d "neutron/.git" ]; then
|
||||
git clone https://git.openstack.org/openstack/neutron.git
|
||||
fi
|
||||
|
||||
# Use neutron in vagrant home directory when stacking.
|
||||
sudo mkdir /opt/stack
|
||||
sudo chown vagrant:vagrant /opt/stack
|
||||
ln -s ~/neutron /opt/stack/neutron
|
||||
|
||||
# We need swap space to do any sort of scale testing with the Vagrant config.
|
||||
# Without this, we quickly run out of RAM and the kernel starts whacking things.
|
||||
sudo rm -f /swapfile1
|
||||
sudo dd if=/dev/zero of=/swapfile1 bs=1024 count=2097152
|
||||
sudo chown root:root /swapfile1
|
||||
sudo chmod 0600 /swapfile1
|
||||
sudo mkswap /swapfile1
|
||||
sudo swapon /swapfile1
|
||||
|
||||
# Configure MTU on VM interfaces. Also requires manually configuring the same MTU on
|
||||
# the equivalent 'vboxnet' interfaces on the host.
|
||||
|
||||
if ip a | grep enp0; then
|
||||
sudo ip link set dev enp0s8 mtu $MTU
|
||||
sudo ip link set dev enp0s9 mtu $MTU
|
||||
else
|
||||
sudo ip link set dev eth1 mtu $MTU
|
||||
sudo ip link set dev eth2 mtu $MTU
|
||||
fi
|
||||
|
||||
# Migration setup
|
||||
sudo sh -c "echo \"$OVN_DB_IP $OVN_DB_NAME\" >> /etc/hosts"
|
||||
sudo sh -c "echo \"$OVN_CONTROLLER_IP $OVN_CONTROLLER_NAME\" >> /etc/hosts"
|
||||
sudo sh -c "echo \"$OVN_COMPUTE1_IP $OVN_COMPUTE1_NAME\" >> /etc/hosts"
|
||||
sudo sh -c "echo \"$OVN_COMPUTE2_IP $OVN_COMPUTE2_NAME\" >> /etc/hosts"
|
||||
sudo sh -c "echo \"$OVN_VTEP_IP $OVN_VTEP_NAME\" >> /etc/hosts"
|
||||
|
||||
# Non-interactive SSH setup
|
||||
cp neutron/vagrant/ovn/provisioning/id_rsa ~/.ssh/id_rsa
|
||||
cat neutron/vagrant/ovn/provisioning/id_rsa.pub >> ~/.ssh/authorized_keys
|
||||
chmod 600 ~/.ssh/id_rsa
|
||||
echo "Host *" >> ~/.ssh/config
|
||||
echo " StrictHostKeyChecking no" >> ~/.ssh/config
|
||||
chmod 600 ~/.ssh/config
|
||||
sudo mkdir /root/.ssh
|
||||
chmod 700 /root/.ssh
|
||||
sudo cp ~vagrant/.ssh/id_rsa /root/.ssh
|
||||
sudo cp ~vagrant/.ssh/authorized_keys /root/.ssh
|
||||
sudo cp ~vagrant/.ssh/config /root/.ssh/config
|
||||
103
vagrant/ovn/provisioning/setup-compute.sh
Normal file
103
vagrant/ovn/provisioning/setup-compute.sh
Normal file
@@ -0,0 +1,103 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Script Arguments:
|
||||
# $1 - ovn-controller IP address
|
||||
# $2 - ovn-db IP address
|
||||
OVN_CONTROLLER_IP=$1
|
||||
OVN_DB_IP=$2
|
||||
|
||||
cp neutron/devstack/ovn-compute-local.conf.sample devstack/local.conf
|
||||
sed -i -e 's/<IP address of host running everything else>/'$OVN_CONTROLLER_IP'/g' devstack/local.conf
|
||||
|
||||
sudo umount /opt/stack/data/nova/instances
|
||||
|
||||
# Get the IP address
|
||||
if ip a | grep enp0 ; then
|
||||
ipaddress=$(ip -4 addr show enp0s8 | grep -oP "(?<=inet ).*(?=/)")
|
||||
else
|
||||
ipaddress=$(ip -4 addr show eth1 | grep -oP "(?<=inet ).*(?=/)")
|
||||
fi
|
||||
|
||||
# Fixup HOST_IP with the local IP address
|
||||
sed -i -e 's/<IP address of current host>/'$ipaddress'/g' devstack/local.conf
|
||||
|
||||
# Adjust some things in local.conf
|
||||
cat << DEVSTACKEOF >> devstack/local.conf
|
||||
|
||||
# Set this to the address of the main DevStack host running the rest of the
|
||||
# OpenStack services.
|
||||
Q_HOST=$1
|
||||
HOSTNAME=$(hostname)
|
||||
OVN_SB_REMOTE=tcp:$OVN_DB_IP:6642
|
||||
OVN_NB_REMOTE=tcp:$OVN_DB_IP:6641
|
||||
|
||||
# Enable logging to files.
|
||||
LOGFILE=/opt/stack/log/stack.sh.log
|
||||
|
||||
# Use provider network for public.
|
||||
Q_USE_PROVIDERNET_FOR_PUBLIC=True
|
||||
OVS_PHYSICAL_BRIDGE=br-provider
|
||||
PHYSICAL_NETWORK=provider
|
||||
|
||||
# Until OVN supports NAT, the private network IP address range
|
||||
# must not conflict with IP address ranges on the host. Change
|
||||
# as necessary for your environment.
|
||||
NETWORK_GATEWAY=172.16.1.1
|
||||
FIXED_RANGE=172.16.1.0/24
|
||||
|
||||
ENABLE_CHASSIS_AS_GW=False
|
||||
DEVSTACKEOF
|
||||
|
||||
# Add unique post-config for DevStack here using a separate 'cat' with
|
||||
# single quotes around EOF to prevent interpretation of variables such
|
||||
# as $Q_DHCP_CONF_FILE.
|
||||
|
||||
cat << 'DEVSTACKEOF' >> devstack/local.conf
|
||||
|
||||
# Set the availablity zone name (default is nova) for the DHCP service.
|
||||
[[post-config|$Q_DHCP_CONF_FILE]]
|
||||
[AGENT]
|
||||
availability_zone = nova
|
||||
DEVSTACKEOF
|
||||
|
||||
devstack/stack.sh
|
||||
|
||||
# Build the provider network in OVN. You can enable instances to access
|
||||
# external networks such as the Internet by using the IP address of the host
|
||||
# vboxnet interface for the provider network (typically vboxnet1) as the
|
||||
# gateway for the subnet on the neutron provider network. Also requires
|
||||
# enabling IP forwarding and configuring SNAT on the host. See the README for
|
||||
# more information.
|
||||
|
||||
source /vagrant/provisioning/provider-setup.sh
|
||||
|
||||
provider_setup
|
||||
|
||||
# Add host route for the private network, at least until the native L3 agent
|
||||
# supports NAT.
|
||||
# FIXME(mkassawara): Add support for IPv6.
|
||||
source devstack/openrc admin admin
|
||||
ROUTER_GATEWAY=`neutron port-list -c fixed_ips -c device_owner | grep router_gateway | awk -F'ip_address' '{ print $2 }' | cut -f3 -d\"`
|
||||
sudo ip route add $FIXED_RANGE via $ROUTER_GATEWAY
|
||||
|
||||
# NFS Setup
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y nfs-common
|
||||
sudo mkdir -p /opt/stack/data/nova/instances
|
||||
sudo chmod o+x /opt/stack/data/nova/instances
|
||||
sudo chown vagrant:vagrant /opt/stack/data/nova/instances
|
||||
sudo sh -c "echo \"$OVN_CONTROLLER_IP:/opt/stack/data/nova/instances /opt/stack/data/nova/instances nfs defaults 0 0\" >> /etc/fstab"
|
||||
sudo mount /opt/stack/data/nova/instances
|
||||
sudo chown vagrant:vagrant /opt/stack/data/nova/instances
|
||||
sudo sh -c "echo \"listen_tls = 0\" >> /etc/libvirt/libvirtd.conf"
|
||||
sudo sh -c "echo \"listen_tcp = 1\" >> /etc/libvirt/libvirtd.conf"
|
||||
sudo sh -c "echo -n \"auth_tcp =\" >> /etc/libvirt/libvirtd.conf"
|
||||
sudo sh -c 'echo " \"none\"" >> /etc/libvirt/libvirtd.conf'
|
||||
sudo sh -c "sed -i 's/env libvirtd_opts\=\"\-d\"/env libvirtd_opts\=\"-d -l\"/g' /etc/init/libvirt-bin.conf"
|
||||
sudo sh -c "sed -i 's/libvirtd_opts\=\"\-d\"/libvirtd_opts\=\"\-d \-l\"/g' /etc/default/libvirt-bin"
|
||||
sudo /etc/init.d/libvirt-bin restart
|
||||
|
||||
# Set the OVN_*_DB variables to enable OVN commands using a remote database.
|
||||
echo -e "\n# Enable OVN commands using a remote database.
|
||||
export OVN_NB_DB=$OVN_NB_REMOTE
|
||||
export OVN_SB_DB=$OVN_SB_REMOTE" >> ~/.bash_profile
|
||||
130
vagrant/ovn/provisioning/setup-controller.sh
Normal file
130
vagrant/ovn/provisioning/setup-controller.sh
Normal file
@@ -0,0 +1,130 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Script Arguments:
|
||||
# $1 - ovn-db IP address
|
||||
# $2 - provider network starting IP address
|
||||
# $3 - provider network ending IP address
|
||||
# $4 - provider network gateway
|
||||
# $5 - provider network network
|
||||
# $6 - ovn vm subnet
|
||||
ovnip=$1
|
||||
start_ip=$2
|
||||
end_ip=$3
|
||||
gateway=$4
|
||||
network=$5
|
||||
ovn_vm_subnet=$6
|
||||
|
||||
|
||||
# Get the IP address
|
||||
if ip a | grep enp0 ; then
|
||||
ipaddress=$(ip -4 addr show enp0s8 | grep -oP "(?<=inet ).*(?=/)")
|
||||
else
|
||||
ipaddress=$(ip -4 addr show eth1 | grep -oP "(?<=inet ).*(?=/)")
|
||||
fi
|
||||
|
||||
# Adjust some things in local.conf
|
||||
cat << DEVSTACKEOF >> devstack/local.conf.vagrant
|
||||
|
||||
# Good to set these
|
||||
HOST_IP=$ipaddress
|
||||
HOSTNAME=$(hostname)
|
||||
SERVICE_HOST_NAME=${HOST_NAME}
|
||||
SERVICE_HOST=$ipaddress
|
||||
OVN_SB_REMOTE=tcp:$ovnip:6642
|
||||
OVN_NB_REMOTE=tcp:$ovnip:6641
|
||||
|
||||
# Enable logging to files.
|
||||
LOGFILE=/opt/stack/log/stack.sh.log
|
||||
|
||||
# Disable the ovn-northd service on the controller node because the
|
||||
# architecture includes a separate OVN database server.
|
||||
disable_service ovn-northd
|
||||
|
||||
# Disable the ovn-controller service because the architecture lacks services
|
||||
# on the controller node that depend on it.
|
||||
disable_service ovn-controller
|
||||
|
||||
# Disable the ovn metadata agent.
|
||||
disable_service neutron-ovn-metadata-agent
|
||||
|
||||
# Disable the nova compute service on the controller node because the
|
||||
# architecture only deploys it on separate compute nodes.
|
||||
disable_service n-cpu
|
||||
|
||||
# Disable cinder services and tempest to reduce deployment time.
|
||||
disable_service c-api c-sch c-vol tempest
|
||||
|
||||
# Until OVN supports NAT, the private network IP address range
|
||||
# must not conflict with IP address ranges on the host. Change
|
||||
# as necessary for your environment.
|
||||
NETWORK_GATEWAY=172.16.1.1
|
||||
FIXED_RANGE=172.16.1.0/24
|
||||
|
||||
# Use provider network for public.
|
||||
Q_USE_PROVIDERNET_FOR_PUBLIC=True
|
||||
OVS_PHYSICAL_BRIDGE=br-provider
|
||||
PHYSICAL_NETWORK=provider
|
||||
PUBLIC_NETWORK_NAME=provider
|
||||
PUBLIC_NETWORK_GATEWAY="$gateway"
|
||||
PUBLIC_PHYSICAL_NETWORK=provider
|
||||
PUBLIC_SUBNET_NAME=provider-v4
|
||||
IPV6_PUBLIC_SUBNET_NAME=provider-v6
|
||||
Q_FLOATING_ALLOCATION_POOL="start=$start_ip,end=$end_ip"
|
||||
FLOATING_RANGE="$network"
|
||||
|
||||
# If the admin wants to enable this chassis to host gateway routers for
|
||||
# external connectivity, then set ENABLE_CHASSIS_AS_GW to True.
|
||||
# Then devstack will set ovn-cms-options with enable-chassis-as-gw
|
||||
# in Open_vSwitch table's external_ids column
|
||||
ENABLE_CHASSIS_AS_GW=True
|
||||
DEVSTACKEOF
|
||||
|
||||
# Add unique post-config for DevStack here using a separate 'cat' with
|
||||
# single quotes around EOF to prevent interpretation of variables such
|
||||
# as $NEUTRON_CONF.
|
||||
|
||||
cat << 'DEVSTACKEOF' >> devstack/local.conf.vagrant
|
||||
|
||||
# Enable two DHCP agents per neutron subnet with support for availability
|
||||
# zones. Requires two or more compute nodes.
|
||||
|
||||
[[post-config|/$NEUTRON_CONF]]
|
||||
[DEFAULT]
|
||||
network_scheduler_driver = neutron.scheduler.dhcp_agent_scheduler.AZAwareWeightScheduler
|
||||
dhcp_load_type = networks
|
||||
dhcp_agents_per_network = 2
|
||||
|
||||
# Configure the Compute service (nova) metadata API to use the X-Forwarded-For
|
||||
# header sent by the Networking service metadata proxies on the compute nodes.
|
||||
|
||||
[[post-config|$NOVA_CONF]]
|
||||
[DEFAULT]
|
||||
use_forwarded_for = True
|
||||
DEVSTACKEOF
|
||||
|
||||
|
||||
sed '/#EXTRA_CONFIG/ r devstack/local.conf.vagrant' \
|
||||
neutron/devstack/ovn-local.conf.sample > devstack/local.conf
|
||||
|
||||
|
||||
devstack/stack.sh
|
||||
|
||||
# Make the provider network shared and enable DHCP for its v4 subnet.
|
||||
source devstack/openrc admin admin
|
||||
neutron net-update --shared $PUBLIC_NETWORK_NAME
|
||||
neutron subnet-update --enable_dhcp=True $PUBLIC_SUBNET_NAME
|
||||
|
||||
# NFS server setup
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y nfs-kernel-server nfs-common
|
||||
sudo mkdir -p /opt/stack/data/nova/instances
|
||||
sudo touch /etc/exports
|
||||
sudo sh -c "echo \"/opt/stack/data/nova/instances $ovn_vm_subnet(rw,sync,fsid=0,no_root_squash)\" >> /etc/exports"
|
||||
sudo service nfs-kernel-server restart
|
||||
sudo service nfs-idmapd restart
|
||||
|
||||
# Set the OVN_*_DB variables to enable OVN commands using a remote database.
|
||||
echo -e "\n# Enable OVN commands using a remote database.
|
||||
export OVN_NB_DB=$OVN_NB_REMOTE
|
||||
export OVN_SB_DB=$OVN_SB_REMOTE" >> ~/.bash_profile
|
||||
|
||||
29
vagrant/ovn/provisioning/setup-db.sh
Normal file
29
vagrant/ovn/provisioning/setup-db.sh
Normal file
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
CONTROLLER_IP=$1
|
||||
|
||||
cp neutron/devstack/ovn-db-local.conf.sample devstack/local.conf
|
||||
if [ "$CONTROLLER_IP" != "" ]; then
|
||||
sed -i -e 's/<IP address of host running everything else>/'$CONTROLLER_IP'/g' devstack/local.conf
|
||||
fi
|
||||
|
||||
# Get the IP address
|
||||
if ip a | grep enp0 ; then
|
||||
ipaddress=$(ip -4 addr show enp0s8 | grep -oP "(?<=inet ).*(?=/)")
|
||||
else
|
||||
ipaddress=$(ip -4 addr show eth1 | grep -oP "(?<=inet ).*(?=/)")
|
||||
fi
|
||||
|
||||
# Adjust some things in local.conf
|
||||
cat << DEVSTACKEOF >> devstack/local.conf
|
||||
|
||||
# Set this to the address of the main DevStack host running the rest of the
|
||||
# OpenStack services.
|
||||
Q_HOST=$CONTROLLER_IP
|
||||
HOST_IP=$ipaddress
|
||||
HOSTNAME=$(hostname)
|
||||
|
||||
# Enable logging to files.
|
||||
LOGFILE=/opt/stack/log/stack.sh.log
|
||||
DEVSTACKEOF
|
||||
|
||||
devstack/stack.sh
|
||||
32
vagrant/ovn/provisioning/setup-vtep.sh
Normal file
32
vagrant/ovn/provisioning/setup-vtep.sh
Normal file
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env bash
|
||||
OVN_DB_IP=$2
|
||||
|
||||
cp neutron/devstack/ovn-vtep-local.conf.sample devstack/local.conf
|
||||
if [ "$1" != "" ]; then
|
||||
sed -i -e 's/<IP address of host running everything else>/'$1'/g' devstack/local.conf
|
||||
fi
|
||||
|
||||
# Get the IP address
|
||||
if ip a | grep enp0 ; then
|
||||
ipaddress=$(ip -4 addr show enp0s8 | grep -oP "(?<=inet ).*(?=/)")
|
||||
else
|
||||
ipaddress=$(ip -4 addr show eth1 | grep -oP "(?<=inet ).*(?=/)")
|
||||
fi
|
||||
|
||||
# Adjust some things in local.conf
|
||||
cat << DEVSTACKEOF >> devstack/local.conf
|
||||
|
||||
# Set this to the address of the main DevStack host running the rest of the
|
||||
# OpenStack services.
|
||||
Q_HOST=$1
|
||||
HOST_IP=$ipaddress
|
||||
HOSTNAME=$(hostname)
|
||||
|
||||
OVN_SB_REMOTE=tcp:$OVN_DB_IP:6642
|
||||
OVN_NB_REMOTE=tcp:$OVN_DB_IP:6641
|
||||
|
||||
# Enable logging to files.
|
||||
LOGFILE=/opt/stack/log/stack.sh.log
|
||||
DEVSTACKEOF
|
||||
|
||||
devstack/stack.sh
|
||||
Reference in New Issue
Block a user