Introduce Fuel 8
All changes needed to be compatible with Fuel 8 Change-Id: I729bbc3b9b96899f0fb18ec45e1debab0783e409
|
@ -1,2 +1,89 @@
|
||||||
|
# Byte-compiled / optimized / DLL files
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
|
||||||
|
# C extensions
|
||||||
|
*.so
|
||||||
|
|
||||||
|
# Distribution / packaging
|
||||||
|
.Python
|
||||||
|
env/
|
||||||
|
build/
|
||||||
|
develop-eggs/
|
||||||
|
dist/
|
||||||
|
downloads/
|
||||||
|
eggs/
|
||||||
|
.eggs/
|
||||||
|
lib/
|
||||||
|
lib64/
|
||||||
|
parts/
|
||||||
|
sdist/
|
||||||
|
var/
|
||||||
|
*.egg-info/
|
||||||
|
.installed.cfg
|
||||||
|
*.egg
|
||||||
|
|
||||||
|
# PyInstaller
|
||||||
|
# Usually these files are written by a python script from a template
|
||||||
|
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||||
|
*.manifest
|
||||||
|
*.spec
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
pip-delete-this-directory.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
htmlcov/
|
||||||
|
.tox/
|
||||||
|
.coverage
|
||||||
|
.coverage.*
|
||||||
|
.cache
|
||||||
|
nosetests.xml
|
||||||
|
coverage.xml
|
||||||
|
*,cover
|
||||||
|
.hypothesis/
|
||||||
|
|
||||||
|
# Translations
|
||||||
|
*.mo
|
||||||
|
*.pot
|
||||||
|
|
||||||
|
# Django stuff:
|
||||||
|
*.log
|
||||||
|
local_settings.py
|
||||||
|
|
||||||
|
# Flask instance folder
|
||||||
|
instance/
|
||||||
|
|
||||||
|
# Scrapy stuff:
|
||||||
|
.scrapy
|
||||||
|
|
||||||
|
# Sphinx documentation
|
||||||
|
docs/_build/
|
||||||
|
doc/build/
|
||||||
|
|
||||||
|
# PyBuilder
|
||||||
|
target/
|
||||||
|
|
||||||
|
# IPython Notebook
|
||||||
|
.ipynb_checkpoints
|
||||||
|
|
||||||
|
# pyenv
|
||||||
|
.python-version
|
||||||
|
|
||||||
|
# celery beat schedule file
|
||||||
|
celerybeat-schedule
|
||||||
|
|
||||||
|
# dotenv
|
||||||
|
.env
|
||||||
|
|
||||||
|
# virtualenv
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
|
||||||
|
# Spyder project settings
|
||||||
|
.spyderproject
|
||||||
|
*.swp
|
||||||
.build/
|
.build/
|
||||||
**.swp
|
midonet-fuel-plugin-*.rpm
|
||||||
|
|
26
README.rst
|
@ -7,7 +7,8 @@ Compatible versions:
|
||||||
- MidoNet v2015.6
|
- MidoNet v2015.6
|
||||||
- Midokura Enterprise MidoNet 1.9
|
- Midokura Enterprise MidoNet 1.9
|
||||||
|
|
||||||
How to build the plugin:
|
How to build the plugin
|
||||||
|
-----------------------
|
||||||
|
|
||||||
- Install Fuel plugin builder (fpb)
|
- Install Fuel plugin builder (fpb)
|
||||||
|
|
||||||
|
@ -23,13 +24,22 @@ How to build the plugin:
|
||||||
$ cd fuel-plugin-midonet
|
$ cd fuel-plugin-midonet
|
||||||
$ fpb --build .
|
$ fpb --build .
|
||||||
|
|
||||||
- Check if file midonet-fuel-plugin-3.0-3.0.1-1.noarch.rpm was created.
|
A *rpm* called `midonet-fuel-plugin-4.0-4.0.0-1.noarch.rpm` should be created in
|
||||||
|
the same directory.
|
||||||
|
|
||||||
::
|
Follow the documentation to install and configure the plugin. You can read the
|
||||||
|
`rst` files in this very repository, or you can build a documentation file.
|
||||||
|
|
||||||
$ fuel plugins
|
How to build the documentation
|
||||||
id | name | version | package_version
|
------------------------------
|
||||||
---|---------------------|---------|----------------
|
|
||||||
1 | midonet-fuel-plugin | 3.0.1 | 3.0.0
|
|
||||||
|
|
||||||
Please refer to `Plugin Guide <./doc/user-guide.rst>`_ for documentation
|
You need to have **Sphinx** installed in your computer. The Makefile provides
|
||||||
|
several target formats to do so. Go to the `doc` directory and run:
|
||||||
|
|
||||||
|
make html
|
||||||
|
|
||||||
|
or:
|
||||||
|
|
||||||
|
make pdf
|
||||||
|
|
||||||
|
You will need `rst2pdf` to run the latter.
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
- name: 'network:neutron:midonet'
|
||||||
|
label: 'Neutron with MidoNet'
|
||||||
|
description: 'MidoNet is a production grade network virtualization software'
|
||||||
|
bind: !!pairs
|
||||||
|
- "cluster:net_provider": "neutron"
|
||||||
|
- "cluster:net_segment_type": "tun"
|
||||||
|
compatible:
|
||||||
|
- name: 'hypervisor:kvm'
|
||||||
|
- name: 'hypervisor:qemu'
|
||||||
|
incompatible:
|
||||||
|
- name: 'hypervisor:vmware'
|
||||||
|
description: 'MidoNet plugin is not compatible with VMware'
|
||||||
|
- name: 'additional_service:ironic'
|
||||||
|
description: 'MidoNet plugin is not compatible with Ironic'
|
|
@ -1,11 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
source /root/openrc
|
|
||||||
router_id=`neutron router-list | grep "network_id" | awk '{print $2}'`
|
|
||||||
neutron router-gateway-clear $router_id
|
|
||||||
subnet_id=`neutron router-port-list $router_id | grep "subnet_id" | awk '{print $8}' | awk -F '\"' '{print $2}'`
|
|
||||||
neutron router-interface-delete $router_id $subnet_id
|
|
||||||
neutron router-delete $router_id
|
|
||||||
neutron subnet-delete $subnet_id
|
|
||||||
neutron net-delete net04
|
|
||||||
neutron net-delete net04_ext
|
|
|
@ -1,92 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
osfamily=$(facter osfamily)
|
|
||||||
if [[ $osfamily == "RedHat" ]]; then
|
|
||||||
|
|
||||||
# Install lsb library to get '$::lsbdistrelease' and '$::lsbmajdistrelease'
|
|
||||||
yum -y install redhat-lsb-core git
|
|
||||||
|
|
||||||
# Install Cento5 Vault repos for Java 1.7 OpenJDK and dependencies
|
|
||||||
cat <<EOF > /etc/yum.repos.d/Centos5-Vault.repo
|
|
||||||
|
|
||||||
[base]
|
|
||||||
name=CentOS-\$releasever - Base
|
|
||||||
mirrorlist=http://mirrorlist.centos.org/?release=\$releasever&arch=\$basearch&repo=os
|
|
||||||
#baseurl=http://mirror.centos.org/centos/\$releasever/os/\$basearch/
|
|
||||||
gpgcheck=0
|
|
||||||
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
|
|
||||||
|
|
||||||
#released updates
|
|
||||||
[updates]
|
|
||||||
name=CentOS-\$releasever - Updates
|
|
||||||
mirrorlist=http://mirrorlist.centos.org/?release=\$releasever&arch=\$basearch&repo=updates
|
|
||||||
#baseurl=http://mirror.centos.org/centos/\$releasever/updates/\$basearch/
|
|
||||||
gpgcheck=0
|
|
||||||
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
|
|
||||||
|
|
||||||
#additional packages that may be useful
|
|
||||||
[extras]
|
|
||||||
name=CentOS-\$releasever - Extras
|
|
||||||
mirrorlist=http://mirrorlist.centos.org/?release=\$releasever&arch=\$basearch&repo=extras
|
|
||||||
#baseurl=http://mirror.centos.org/centos/\$releasever/extras/\$basearch/
|
|
||||||
gpgcheck=0
|
|
||||||
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
|
|
||||||
|
|
||||||
#additional packages that extend functionality of existing packages
|
|
||||||
[centosplus]
|
|
||||||
name=CentOS-\$releasever - Plus
|
|
||||||
mirrorlist=http://mirrorlist.centos.org/?release=\$releasever&arch=\$basearch&repo=centosplus
|
|
||||||
#baseurl=http://mirror.centos.org/centos/\$releasever/centosplus/\$basearch/
|
|
||||||
gpgcheck=0
|
|
||||||
enabled=0
|
|
||||||
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
|
|
||||||
|
|
||||||
#contrib - packages by Centos Users
|
|
||||||
[contrib]
|
|
||||||
name=CentOS-\$releasever - Contrib
|
|
||||||
mirrorlist=http://mirrorlist.centos.org/?release=\$releasever&arch=\$basearch&repo=contrib
|
|
||||||
#baseurl=http://mirror.centos.org/centos/\$releasever/contrib/\$basearch/
|
|
||||||
gpgcheck=0
|
|
||||||
enabled=0
|
|
||||||
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
|
|
||||||
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF > /etc/yum.repos.d/midonet-third-party.repo
|
|
||||||
[midonet-third-party]
|
|
||||||
name=Midonet third party repo
|
|
||||||
baseurl=http://repo.midonet.org/misc/RHEL/6/misc
|
|
||||||
enabled=1
|
|
||||||
gpgcheck=1
|
|
||||||
gpgkey=http://repo.midonet.org/packages.midokura.key
|
|
||||||
timeout=60
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Need to set these steps for a default zookeeper installation
|
|
||||||
yum install -y java-1.7.0-openjdk
|
|
||||||
mkdir -p /usr/java
|
|
||||||
ln -s /etc/alternatives/jre_1.7.0 /usr/java/default
|
|
||||||
else
|
|
||||||
apt-get install -y ruby-dev
|
|
||||||
fi
|
|
||||||
|
|
||||||
gem install json --no-ri --no-rdoc --debug
|
|
||||||
gem install faraday --no-ri --no-rdoc --debug
|
|
||||||
|
|
||||||
puppet module install ripienaar-module_data --version=0.0.3 --force
|
|
||||||
puppet module install puppetlabs-java --version=1.4.1 --ignore-dependencies --force
|
|
||||||
puppet module install puppetlabs-apt --version=1.8.0 --ignore-dependencies --force
|
|
||||||
puppet module install midonet-cassandra --version=1.0.4 --ignore-dependencies --force
|
|
||||||
puppet module install richardc-datacat --version=0.6.2 --force
|
|
||||||
puppet module install deric-zookeeper --version=0.3.9 --ignore-dependencies --force
|
|
||||||
puppet module install puppetlabs-concat --version=1.2.4 --ignore-dependencies --force
|
|
||||||
puppet module install nanliu-staging --version=1.0.4 --ignore-dependencies --force
|
|
||||||
puppet module install puppetlabs-tomcat --version=1.3.2 --ignore-dependencies --force
|
|
||||||
puppet module install midonet-midonet --version=2015.6.7 --ignore-dependencies --force
|
|
||||||
|
|
||||||
if [[ ! -a /etc/puppet/modules/neutron/manifests/plugins/midonet.pp ]]; then
|
|
||||||
# Apply the released patch of Neutron Puppet to allow midonet manifests
|
|
||||||
wget https://github.com/openstack/puppet-neutron/commit/5e034e2af7ecb31cfcb758c7f43f47e46ce5677a.diff -O /etc/puppet/modules/neutron/midonet.diff
|
|
||||||
cd /etc/puppet/modules/neutron && patch -p1 < midonet.diff && cd -
|
|
||||||
fi
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
puppet module install ripienaar-module_data --version=0.0.3 --force
|
||||||
|
puppet module install puppetlabs-java --version=1.4.1 --ignore-dependencies --force
|
||||||
|
puppet module install midonet-cassandra --version=1.0.4 --ignore-dependencies --force
|
||||||
|
puppet module install deric-zookeeper --version=0.3.9 --ignore-dependencies --force
|
||||||
|
puppet module install puppetlabs-tomcat --version=1.3.2 --ignore-dependencies --force
|
||||||
|
puppet module install midonet-midonet --version=2015.6.7 --ignore-dependencies --force
|
||||||
|
|
||||||
|
gem install faraday # This is needed by the midonet providers
|
|
@ -0,0 +1,3 @@
|
||||||
|
neutron::core_plugin: 'midonet.neutron.plugin_v1.MidonetPluginV2'
|
||||||
|
neutron::agents::dhcp::interface_driver: 'neutron.agent.linux.interface.MidonetInterfaceDriver'
|
||||||
|
neutron::agents::dhcp::dhcp_driver: 'midonet.neutron.agent.midonet_driver.DhcpNoOpDriver'
|
|
@ -2,6 +2,5 @@ start on runlevel [123456]
|
||||||
stop on shutdown
|
stop on shutdown
|
||||||
|
|
||||||
script
|
script
|
||||||
puppet apply --modulepath=/etc/fuel/plugins/midonet-fuel-plugin-3.0/puppet/modules:/etc/puppet/modules /etc/fuel/plugins/midonet-fuel-plugin-3.0/puppet/manifests/midonet-gateway-bgp.pp
|
puppet apply --modulepath=/etc/fuel/plugins/midonet-fuel-plugin-4.0/puppet/modules:/etc/puppet/modules /etc/fuel/plugins/midonet-fuel-plugin-4.0/puppet/manifests/midonet-gateway-bgp.pp
|
||||||
end script
|
end script
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,129 @@
|
||||||
|
# Copyright 2016 Midokura, SARL.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
notice('MODULAR: neutron-compute-nova.pp')
|
||||||
|
|
||||||
|
$network_scheme = hiera_hash('network_scheme', {})
|
||||||
|
prepare_network_config($network_scheme)
|
||||||
|
|
||||||
|
$use_neutron = hiera('use_neutron', false)
|
||||||
|
|
||||||
|
include nova::params
|
||||||
|
$neutron_config = hiera_hash('neutron_config', {})
|
||||||
|
$neutron_integration_bridge = 'br-int'
|
||||||
|
$nova_hash = hiera_hash('nova', {})
|
||||||
|
$libvirt_vif_driver = pick($nova_hash['libvirt_vif_driver'], 'nova.virt.libvirt.vif.LibvirtGenericVIFDriver')
|
||||||
|
|
||||||
|
$management_vip = hiera('management_vip')
|
||||||
|
$service_endpoint = hiera('service_endpoint', $management_vip)
|
||||||
|
$admin_password = try_get_value($neutron_config, 'keystone/admin_password')
|
||||||
|
$admin_tenant_name = try_get_value($neutron_config, 'keystone/admin_tenant', 'services')
|
||||||
|
$admin_username = try_get_value($neutron_config, 'keystone/admin_user', 'neutron')
|
||||||
|
$region_name = hiera('region', 'RegionOne')
|
||||||
|
$auth_api_version = 'v2.0'
|
||||||
|
$ssl_hash = hiera_hash('use_ssl', {})
|
||||||
|
|
||||||
|
$admin_identity_protocol = get_ssl_property($ssl_hash, {}, 'keystone', 'admin', 'protocol', 'http')
|
||||||
|
$admin_identity_address = get_ssl_property($ssl_hash, {}, 'keystone', 'admin', 'hostname', [$service_endpoint, $management_vip])
|
||||||
|
|
||||||
|
$neutron_internal_protocol = get_ssl_property($ssl_hash, {}, 'neutron', 'internal', 'protocol', 'http')
|
||||||
|
$neutron_endpoint = get_ssl_property($ssl_hash, {}, 'neutron', 'internal', 'hostname', [hiera('neutron_endpoint', ''), $management_vip])
|
||||||
|
|
||||||
|
$admin_identity_uri = "${admin_identity_protocol}://${admin_identity_address}:35357"
|
||||||
|
$admin_auth_url = "${admin_identity_uri}/${auth_api_version}"
|
||||||
|
$neutron_url = "${neutron_internal_protocol}://${neutron_endpoint}:9696"
|
||||||
|
|
||||||
|
$nova_migration_ip = get_network_role_property('nova/migration', 'ipaddr')
|
||||||
|
|
||||||
|
service { 'libvirt' :
|
||||||
|
ensure => 'running',
|
||||||
|
enable => true,
|
||||||
|
# Workaround for bug LP #1469308
|
||||||
|
# also service name for Ubuntu and Centos is the same.
|
||||||
|
name => 'libvirtd',
|
||||||
|
provider => $nova::params::special_service_provider,
|
||||||
|
}
|
||||||
|
|
||||||
|
exec { 'destroy_libvirt_default_network':
|
||||||
|
command => 'virsh net-destroy default',
|
||||||
|
onlyif => 'virsh net-info default | grep -qE "Active:.* yes"',
|
||||||
|
path => [ '/bin', '/sbin', '/usr/bin', '/usr/sbin' ],
|
||||||
|
tries => 3,
|
||||||
|
require => Service['libvirt'],
|
||||||
|
}
|
||||||
|
|
||||||
|
exec { 'undefine_libvirt_default_network':
|
||||||
|
command => 'virsh net-undefine default',
|
||||||
|
onlyif => 'virsh net-info default 2>&1 > /dev/null',
|
||||||
|
path => [ '/bin', '/sbin', '/usr/bin', '/usr/sbin' ],
|
||||||
|
tries => 3,
|
||||||
|
require => Exec['destroy_libvirt_default_network'],
|
||||||
|
}
|
||||||
|
|
||||||
|
Service['libvirt'] ~> Exec['destroy_libvirt_default_network']
|
||||||
|
|
||||||
|
# script called by qemu needs to manipulate the tap device
|
||||||
|
file_line { 'clear_emulator_capabilities':
|
||||||
|
path => '/etc/libvirt/qemu.conf',
|
||||||
|
line => 'clear_emulator_capabilities = 0',
|
||||||
|
notify => Service['libvirt']
|
||||||
|
}
|
||||||
|
|
||||||
|
class { 'nova::compute::neutron':
|
||||||
|
libvirt_vif_driver => $libvirt_vif_driver,
|
||||||
|
}
|
||||||
|
|
||||||
|
nova_config {
|
||||||
|
'DEFAULT/linuxnet_interface_driver': value => 'nova.network.linux_net.LinuxOVSInterfaceDriver';
|
||||||
|
'DEFAULT/linuxnet_ovs_integration_bridge': value => $neutron_integration_bridge;
|
||||||
|
'DEFAULT/network_device_mtu': value => '65000';
|
||||||
|
'DEFAULT/my_ip': value => $nova_migration_ip;
|
||||||
|
}
|
||||||
|
|
||||||
|
class { 'nova::network::neutron' :
|
||||||
|
neutron_admin_password => $admin_password,
|
||||||
|
neutron_admin_tenant_name => $admin_tenant_name,
|
||||||
|
neutron_region_name => $region_name,
|
||||||
|
neutron_admin_username => $admin_username,
|
||||||
|
neutron_admin_auth_url => $admin_auth_url,
|
||||||
|
neutron_url => $neutron_url,
|
||||||
|
neutron_ovs_bridge => $neutron_integration_bridge,
|
||||||
|
}
|
||||||
|
|
||||||
|
augeas { 'sysctl-net.bridge.bridge-nf-call-arptables':
|
||||||
|
context => '/files/etc/sysctl.conf',
|
||||||
|
changes => "set net.bridge.bridge-nf-call-arptables '1'",
|
||||||
|
before => Service['libvirt'],
|
||||||
|
}
|
||||||
|
augeas { 'sysctl-net.bridge.bridge-nf-call-iptables':
|
||||||
|
context => '/files/etc/sysctl.conf',
|
||||||
|
changes => "set net.bridge.bridge-nf-call-iptables '1'",
|
||||||
|
before => Service['libvirt'],
|
||||||
|
}
|
||||||
|
augeas { 'sysctl-net.bridge.bridge-nf-call-ip6tables':
|
||||||
|
context => '/files/etc/sysctl.conf',
|
||||||
|
changes => "set net.bridge.bridge-nf-call-ip6tables '1'",
|
||||||
|
before => Service['libvirt'],
|
||||||
|
}
|
||||||
|
|
||||||
|
service { 'nova-compute':
|
||||||
|
ensure => 'running',
|
||||||
|
name => $::nova::params::compute_service_name,
|
||||||
|
}
|
||||||
|
Nova_config<| |> ~> Service['nova-compute']
|
||||||
|
|
||||||
|
if($::operatingsystem == 'Ubuntu') {
|
||||||
|
tweaks::ubuntu_service_override { 'nova-network':
|
||||||
|
package_name => 'nova-network',
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,18 @@
|
||||||
# Define the midonet repositories based on the settings file
|
# Copyright 2016 Midokura, SARL.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
notice('MODULAR: midonet-define-repositories.pp')
|
||||||
|
|
||||||
$midonet_settings = hiera('midonet-fuel-plugin')
|
$midonet_settings = hiera('midonet-fuel-plugin')
|
||||||
$mem = $midonet_settings['mem']
|
$mem = $midonet_settings['mem']
|
||||||
$mem_version = $midonet_settings['mem_version']
|
$mem_version = $midonet_settings['mem_version']
|
||||||
|
@ -27,48 +41,41 @@ zg==
|
||||||
=zF5K
|
=zF5K
|
||||||
-----END PGP PUBLIC KEY BLOCK-----"
|
-----END PGP PUBLIC KEY BLOCK-----"
|
||||||
|
|
||||||
|
include apt
|
||||||
|
include apt::update
|
||||||
|
|
||||||
|
# MidoNet Neutron plugin Liberty key
|
||||||
|
apt::source {'midonet_neutron_liberty':
|
||||||
|
comment => 'midonet plugin repository',
|
||||||
|
location => 'http://builds.midonet.org/openstack-liberty',
|
||||||
|
release => 'stable',
|
||||||
|
key => '99143E75',
|
||||||
|
key_source => 'https://builds.midonet.org/midorepo.key',
|
||||||
|
include_src => false
|
||||||
|
}
|
||||||
|
|
||||||
if $mem {
|
if $mem {
|
||||||
case $operatingsystem {
|
|
||||||
'CentOS': {
|
|
||||||
class { '::midonet::repository':
|
|
||||||
midonet_repo => "http://${mem_user}:${mem_password}@yum.midokura.com/repo/${mem_version}/stable/RHEL",
|
|
||||||
manage_distro_repo => false,
|
|
||||||
midonet_key_url => "http://${mem_user}:${mem_password}@yum.midokura.com/repo/RPM-GPG-KEY-midokura",
|
|
||||||
midonet_openstack_repo => "http://${mem_user}:${mem_password}@yum.midokura.com/repo/openstack-kilo/stable/RHEL",
|
|
||||||
midonet_stage => '',
|
|
||||||
openstack_release => 'kilo'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'Ubuntu': {
|
|
||||||
apt::key { 'BC4E4E90DDA81C21396081CC67B38D3A054314CD':
|
apt::key { 'BC4E4E90DDA81C21396081CC67B38D3A054314CD':
|
||||||
key_content => $key_content
|
key_content => $key_content
|
||||||
} ->
|
} ->
|
||||||
|
|
||||||
class { '::midonet::repository':
|
# MEM 1.9 public key
|
||||||
midonet_repo => "http://${mem_user}:${mem_password}@apt.midokura.com/midonet/${mem_version}/stable",
|
apt::source {'midonet_oss':
|
||||||
manage_distro_repo => false,
|
comment => 'midonet repository',
|
||||||
midonet_openstack_repo => "http://${mem_user}:${mem_password}@apt.midokura.com/openstack/kilo/stable",
|
location => "http://${mem_user}:${mem_password}@apt.midokura.com/midonet/${mem_version}/stable",
|
||||||
midonet_stage => 'trusty',
|
release => 'trusty',
|
||||||
openstack_release => 'kilo'
|
include_src => false
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
case $operatingsystem {
|
|
||||||
'CentOS': {
|
# OSS 2015.06
|
||||||
class { '::midonet::repository':
|
apt::source {'midonet_oss':
|
||||||
midonet_repo => "http://repo.midonet.org/midonet/${oss_version}/RHEL",
|
comment => 'midonet repository',
|
||||||
manage_distro_repo => false,
|
location => 'http://repo.midonet.org/midonet/v2015.06',
|
||||||
openstack_release => 'kilo'
|
release => 'stable',
|
||||||
}
|
key => '50F18FCF',
|
||||||
}
|
key_source => 'http://repo.midonet.org/packages.midokura.key',
|
||||||
'Ubuntu': {
|
include_src => false
|
||||||
class { '::midonet::repository':
|
|
||||||
midonet_repo => "http://repo.midonet.org/midonet/${oss_version}",
|
|
||||||
manage_distro_repo => false,
|
|
||||||
openstack_release => 'kilo'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
$service_path = $operatingsystem ? {
|
|
||||||
'CentOS' => '/sbin:/bin',
|
|
||||||
'Ubuntu' => '/usr/bin:/usr/sbin:/sbin:/bin'
|
|
||||||
}
|
|
||||||
|
|
||||||
exec {'service midolman stop':
|
|
||||||
path => $service_path,
|
|
||||||
onlyif => 'ps aux | grep midolman | grep -v grep'
|
|
||||||
} ->
|
|
||||||
|
|
||||||
exec {'/usr/bin/mm-dpctl --delete-dp ovs-system':
|
|
||||||
path => "/usr/bin:/usr/sbin:/bin",
|
|
||||||
onlyif => '/usr/bin/mm-dpctl --show-dp ovs-system'
|
|
||||||
} ->
|
|
||||||
|
|
||||||
exec {'/usr/bin/mm-dpctl --delete-dp midonet':
|
|
||||||
path => "/usr/bin:/usr/sbin:/bin",
|
|
||||||
onlyif => '/usr/bin/mm-dpctl --show-dp midonet'
|
|
||||||
} ->
|
|
||||||
|
|
||||||
exec {'sleep 3':
|
|
||||||
path => $service_path
|
|
||||||
} ->
|
|
||||||
|
|
||||||
exec {'service midolman start':
|
|
||||||
path => $service_path
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,68 +0,0 @@
|
||||||
# Extract hiera data
|
|
||||||
$network_metadata = hiera_hash('network_metadata')
|
|
||||||
$roles = $network_metadata['nodes']["$::hostname"]['node_roles']
|
|
||||||
|
|
||||||
$ovs_agent_name = $operatingsystem ? {
|
|
||||||
'CentOS' => 'neutron-openvswitch-agent',
|
|
||||||
'Ubuntu' => 'neutron-plugin-openvswitch-agent',
|
|
||||||
}
|
|
||||||
|
|
||||||
$l3_agent_name = $operatingsystem ? {
|
|
||||||
'CentOS' => 'neutron-l3-agent',
|
|
||||||
'Ubuntu' => 'neutron-l3-agent'
|
|
||||||
}
|
|
||||||
|
|
||||||
$dhcp_agent_name = $operatingsystem ? {
|
|
||||||
'CentOS' => 'neutron-dhcp-agent',
|
|
||||||
'Ubuntu' => 'neutron-dhcp-agent'
|
|
||||||
}
|
|
||||||
|
|
||||||
$metadata_agent_name = $operatingsystem ? {
|
|
||||||
'CentOS' => 'neutron-metadata-agent',
|
|
||||||
'Ubuntu' => 'neutron-metadata-agent'
|
|
||||||
}
|
|
||||||
|
|
||||||
if member($roles, 'primary-controller') {
|
|
||||||
cs_resource { "p_${ovs_agent_name}":
|
|
||||||
ensure => absent,
|
|
||||||
}
|
|
||||||
exec {'stop-dhcp-agent':
|
|
||||||
command => 'crm resource stop p_neutron-dhcp-agent',
|
|
||||||
path => '/usr/bin:/usr/sbin'
|
|
||||||
} ->
|
|
||||||
exec {'stop-metadata-agent':
|
|
||||||
command => 'crm resource stop p_neutron-metadata-agent',
|
|
||||||
path => '/usr/bin:/usr/sbin'
|
|
||||||
} ->
|
|
||||||
exec {'stop-l3-agent':
|
|
||||||
command => 'crm resource stop p_neutron-l3-agent',
|
|
||||||
path => '/usr/bin:/usr/sbin'
|
|
||||||
} ->
|
|
||||||
exec {'delete-l3-agent':
|
|
||||||
command => 'crm configure delete p_neutron-l3-agent',
|
|
||||||
path => '/usr/bin:/usr/sbin'
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
service {$ovs_agent_name:
|
|
||||||
ensure => stopped,
|
|
||||||
enable => false,
|
|
||||||
}
|
|
||||||
|
|
||||||
service {$l3_agent_name:
|
|
||||||
ensure => stopped,
|
|
||||||
enable => false,
|
|
||||||
}
|
|
||||||
|
|
||||||
service {$dhcp_agent_name:
|
|
||||||
ensure => stopped
|
|
||||||
}
|
|
||||||
|
|
||||||
service {$metadata_agent_name:
|
|
||||||
ensure => stopped
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
service { 'neutron-server':
|
|
||||||
ensure => stopped
|
|
||||||
}
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Copyright 2015 Mirantis, Inc.
|
# Copyright 2016 Midokura, SARL.
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# 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
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
@ -11,6 +11,7 @@
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
notice('MODULAR: midonet-enable-ip.forward.pp')
|
||||||
|
|
||||||
sysctl::value { 'net.ipv4.ip_forward':
|
sysctl::value { 'net.ipv4.ip_forward':
|
||||||
value => '1'
|
value => '1'
|
||||||
|
|
|
@ -17,10 +17,6 @@ $bgp_subnet = split($midonet_settings['bgp_cidr'], '/')
|
||||||
$bgp_subnet_ip = $bgp_subnet[0]
|
$bgp_subnet_ip = $bgp_subnet[0]
|
||||||
$bgp_subnet_cidr = $bgp_subnet[1]
|
$bgp_subnet_cidr = $bgp_subnet[1]
|
||||||
|
|
||||||
notify {"peers":
|
|
||||||
message => "floating neeet si $remote_peers"
|
|
||||||
}
|
|
||||||
|
|
||||||
exec {"set down external bridge":
|
exec {"set down external bridge":
|
||||||
path => "/usr/bin:/usr/sbin:/sbin",
|
path => "/usr/bin:/usr/sbin:/sbin",
|
||||||
command => "ip link set dev br-ex down"
|
command => "ip link set dev br-ex down"
|
||||||
|
@ -65,7 +61,7 @@ exec {"set up external bridge":
|
||||||
|
|
||||||
file {"/etc/init/midonet-network.conf":
|
file {"/etc/init/midonet-network.conf":
|
||||||
ensure => present,
|
ensure => present,
|
||||||
source => "/etc/fuel/plugins/midonet-fuel-plugin-3.0/puppet/files/startup.conf"
|
source => "/etc/fuel/plugins/midonet-fuel-plugin-4.0/puppet/files/startup.conf"
|
||||||
} ->
|
} ->
|
||||||
|
|
||||||
midonet_gateway { $::fqdn:
|
midonet_gateway { $::fqdn:
|
||||||
|
|
|
@ -1,3 +1,18 @@
|
||||||
|
# Copyright 2015 Midokura SARL.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
notice('MODULAR: midonet-host-registry.pp')
|
||||||
|
|
||||||
# Extract data from hiera
|
# Extract data from hiera
|
||||||
$api_ip = hiera('management_vip')
|
$api_ip = hiera('management_vip')
|
||||||
$access_data = hiera_hash('access')
|
$access_data = hiera_hash('access')
|
||||||
|
@ -21,12 +36,12 @@ exec {'service midolman restart':
|
||||||
} ->
|
} ->
|
||||||
|
|
||||||
midonet_host_registry {$::fqdn:
|
midonet_host_registry {$::fqdn:
|
||||||
|
ensure => present,
|
||||||
midonet_api_url => "http://${api_ip}:8081",
|
midonet_api_url => "http://${api_ip}:8081",
|
||||||
username => $username,
|
username => $username,
|
||||||
password => $password,
|
password => $password,
|
||||||
tenant_name => $tenant_name,
|
tenant_name => $tenant_name,
|
||||||
underlay_ip_address => $::ipaddress_br_mesh,
|
underlay_ip_address => $::ipaddress_br_mesh,
|
||||||
tunnelzone_type => $tz_type,
|
tunnelzone_type => $tz_type,
|
||||||
tunnelzone_name => 'tzonefuel',
|
tunnelzone_name => 'tzonefuel'
|
||||||
ensure => present
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,18 @@
|
||||||
|
# Copyright 2016 Midokura, SARL.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
notice('MODULAR: midonet-install-agent.pp')
|
||||||
|
|
||||||
# Extract data from hiera
|
# Extract data from hiera
|
||||||
$network_metadata = hiera_hash('network_metadata')
|
$network_metadata = hiera_hash('network_metadata')
|
||||||
$neutron_config = hiera_hash('neutron_config')
|
$neutron_config = hiera_hash('neutron_config')
|
||||||
|
@ -33,11 +48,11 @@ service {$ovsdb_service_name:
|
||||||
} ->
|
} ->
|
||||||
|
|
||||||
package {$openvswitch_package_neutron:
|
package {$openvswitch_package_neutron:
|
||||||
ensure => absent
|
ensure => purged
|
||||||
} ->
|
} ->
|
||||||
|
|
||||||
package {$openvswitch_package:
|
package {$openvswitch_package:
|
||||||
ensure => absent
|
ensure => purged
|
||||||
} ->
|
} ->
|
||||||
|
|
||||||
class {'::midonet::midonet_agent':
|
class {'::midonet::midonet_agent':
|
||||||
|
@ -65,3 +80,8 @@ if $segmentation_type =='tun' {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exec {'/usr/bin/mm-dpctl --delete-dp ovs-system':
|
||||||
|
path => "/usr/bin:/usr/sbin:/bin",
|
||||||
|
onlyif => '/usr/bin/mm-dpctl --show-dp ovs-system',
|
||||||
|
require => Class['::midonet::midonet_agent']
|
||||||
|
}
|
||||||
|
|
|
@ -1,3 +1,18 @@
|
||||||
|
# Copyright 2016 Midokura, SARL.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
notice('MODULAR: midonet-install-api.pp')
|
||||||
|
|
||||||
# Extract data from hiera
|
# Extract data from hiera
|
||||||
$network_metadata = hiera_hash('network_metadata')
|
$network_metadata = hiera_hash('network_metadata')
|
||||||
$controllers_map = get_nodes_hash_by_roles($network_metadata, ['controller', 'primary-controller'])
|
$controllers_map = get_nodes_hash_by_roles($network_metadata, ['controller', 'primary-controller'])
|
||||||
|
@ -11,6 +26,11 @@ $keystone_data = hiera_hash('keystone')
|
||||||
$access_data = hiera_hash('access')
|
$access_data = hiera_hash('access')
|
||||||
$public_ssl_hash = hiera('public_ssl')
|
$public_ssl_hash = hiera('public_ssl')
|
||||||
|
|
||||||
|
file_line {'disable_ipv6':
|
||||||
|
path => '/etc/default/tomcat7',
|
||||||
|
line => 'JAVA_OPTS="${JAVA_OPTS} -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses"'
|
||||||
|
} ->
|
||||||
|
|
||||||
class {'::midonet::midonet_api':
|
class {'::midonet::midonet_api':
|
||||||
zk_servers => $zoo_ips_hash,
|
zk_servers => $zoo_ips_hash,
|
||||||
keystone_auth => true,
|
keystone_auth => true,
|
||||||
|
|
|
@ -0,0 +1,137 @@
|
||||||
|
# Copyright 2016 Midokura, SARL.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
notice('MODULAR: midonet-configure-neutron.pp')
|
||||||
|
|
||||||
|
# Neutron data
|
||||||
|
$amqp_port = '5673'
|
||||||
|
$rabbit_hash = hiera('rabbit_hash', {})
|
||||||
|
$management_vip = hiera('management_vip')
|
||||||
|
$service_endpoint = hiera('service_endpoint', $management_vip)
|
||||||
|
$neutron_config = hiera('quantum_settings')
|
||||||
|
$neutron_db_password = $neutron_config['database']['passwd']
|
||||||
|
$neutron_user_password = $neutron_config['keystone']['admin_password']
|
||||||
|
|
||||||
|
# Neutron plugin data
|
||||||
|
$access_data = hiera_hash('access')
|
||||||
|
$username = $access_data['user']
|
||||||
|
$password = $access_data['password']
|
||||||
|
$tenant_name = $access_data['tenant']
|
||||||
|
|
||||||
|
$openstack_network_hash = hiera_hash('openstack_network', { })
|
||||||
|
$use_syslog = hiera('use_syslog', true)
|
||||||
|
$use_stderr = hiera('use_stderr', false)
|
||||||
|
$verbose = pick($openstack_network_hash['verbose'], hiera('verbose', true))
|
||||||
|
|
||||||
|
|
||||||
|
# Unfortunately, core_plugin in the 'openstack-network-common-config'
|
||||||
|
# task is hardcoded. The core_plugin value for midonet is overrided
|
||||||
|
# in hiera file, so running again class{'::neutron'} should modify
|
||||||
|
# the core_plugin value in /etc/neutron/neutron.conf
|
||||||
|
#
|
||||||
|
# Hoping that Fuel will make the core plugin configurable and we
|
||||||
|
# can remove this step
|
||||||
|
class {'::neutron':
|
||||||
|
verbose => $verbose,
|
||||||
|
debug => false,
|
||||||
|
use_syslog => $use_syslog,
|
||||||
|
use_stderr => $use_stderr,
|
||||||
|
log_facility => 'LOG_USER',
|
||||||
|
base_mac => 'fa:16:3e:00:00:00',
|
||||||
|
service_plugins => [],
|
||||||
|
allow_overlapping_ips => true,
|
||||||
|
mac_generation_retries => '32',
|
||||||
|
dhcp_lease_duration => '600',
|
||||||
|
dhcp_agents_per_network => '2',
|
||||||
|
report_interval => '10',
|
||||||
|
rabbit_user => $rabbit_hash['user'],
|
||||||
|
rabbit_host => ['localhost'],
|
||||||
|
rabbit_hosts => split(hiera('amqp_hosts', ''), ','),
|
||||||
|
rabbit_port => '5672',
|
||||||
|
rabbit_password => $rabbit_hash['password'],
|
||||||
|
kombu_reconnect_delay => '5.0',
|
||||||
|
network_device_mtu => undef,
|
||||||
|
advertise_mtu => true
|
||||||
|
} ->
|
||||||
|
|
||||||
|
# NOTE: Don't comment these lines. Since we have changed the name
|
||||||
|
# of the package, we are trying to get rid of this restriction:
|
||||||
|
# https://github.com/openstack/puppet-neutron/blob/7.0.0/manifests/plugins/midonet.pp#L108
|
||||||
|
package {'python-neutron-plugin-midonet':
|
||||||
|
ensure => absent
|
||||||
|
}
|
||||||
|
|
||||||
|
# The real plugin package
|
||||||
|
package {'python-networking-midonet':
|
||||||
|
ensure => present
|
||||||
|
}
|
||||||
|
|
||||||
|
file {'/etc/default/neutron-server':
|
||||||
|
ensure => present,
|
||||||
|
owner => 'root',
|
||||||
|
group => 'root',
|
||||||
|
mode => '0644'
|
||||||
|
} ->
|
||||||
|
class {'::neutron::plugins::midonet':
|
||||||
|
midonet_api_ip => $service_endpoint,
|
||||||
|
midonet_api_port => '8081',
|
||||||
|
keystone_username => $username,
|
||||||
|
keystone_password => $password,
|
||||||
|
keystone_tenant => $tenant_name
|
||||||
|
}
|
||||||
|
|
||||||
|
class { '::neutron::server':
|
||||||
|
sync_db => $primary_controller ? {true => 'primary', default => 'slave'},
|
||||||
|
auth_host => $service_endpoint,
|
||||||
|
auth_port => '35357',
|
||||||
|
auth_protocol => 'http',
|
||||||
|
auth_password => $neutron_user_password,
|
||||||
|
auth_tenant => 'services',
|
||||||
|
auth_user => 'neutron',
|
||||||
|
auth_uri => "http://${service_endpoint}:35357/v2.0",
|
||||||
|
|
||||||
|
database_retry_interval => 2,
|
||||||
|
database_connection => "mysql://neutron:${neutron_db_password}@${service_endpoint}/neutron?&read_timeout=60",
|
||||||
|
database_max_retries => -1,
|
||||||
|
|
||||||
|
agent_down_time => 15,
|
||||||
|
|
||||||
|
api_workers => min($::processorcount + 0, 50 + 0),
|
||||||
|
rpc_workers => 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
# Nova notifications needed data
|
||||||
|
$ssl_hash = hiera_hash('use_ssl', {})
|
||||||
|
$nova_endpoint = hiera('nova_endpoint', $management_vip)
|
||||||
|
$nova_hash = hiera_hash('nova', {})
|
||||||
|
$nova_internal_protocol = get_ssl_property($ssl_hash, {}, 'nova', 'internal', 'protocol', 'http')
|
||||||
|
$nova_internal_endpoint = get_ssl_property($ssl_hash, {}, 'nova', 'internal', 'hostname', [$nova_endpoint])
|
||||||
|
$admin_auth_protocol = get_ssl_property($ssl_hash, {}, 'keystone', 'admin', 'protocol', 'http')
|
||||||
|
$admin_auth_endpoint = get_ssl_property($ssl_hash, {}, 'keystone', 'admin', 'hostname', [$service_endpoint, $management_vip])
|
||||||
|
|
||||||
|
# Actual attributes
|
||||||
|
$nova_url = "${nova_internal_protocol}://${nova_internal_endpoint}:8774/v2"
|
||||||
|
$nova_admin_auth_url = "${admin_auth_protocol}://${admin_auth_endpoint}:35357/"
|
||||||
|
$nova_auth_user = pick($nova_hash['user'], 'nova')
|
||||||
|
$nova_auth_tenant = pick($nova_hash['tenant'], 'services')
|
||||||
|
$nova_auth_password = $nova_hash['user_password']
|
||||||
|
$auth_region = hiera('region', 'RegionOne')
|
||||||
|
|
||||||
|
class { 'neutron::server::notifications':
|
||||||
|
nova_url => $nova_url,
|
||||||
|
auth_url => $nova_admin_auth_url,
|
||||||
|
username => $nova_auth_user,
|
||||||
|
tenant_name => $nova_auth_tenant,
|
||||||
|
password => $nova_auth_password,
|
||||||
|
region_name => $auth_region,
|
||||||
|
}
|
|
@ -0,0 +1,85 @@
|
||||||
|
# Copyright 2016 Midokura, SARL.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
notice('MODULAR: midonet-neutron-networks.pp')
|
||||||
|
|
||||||
|
# Extract data from hiera
|
||||||
|
$access_data = hiera_hash('access')
|
||||||
|
$keystone_admin_tenant = $access_data['tenant']
|
||||||
|
$network_metadata = hiera_hash('network_metadata')
|
||||||
|
$node_roles = $network_metadata['nodes'][$::hostname]['node_roles']
|
||||||
|
$neutron_settings = hiera('neutron_config')
|
||||||
|
$external_net_name = $neutron_settings['default_floating_net']
|
||||||
|
$tenant_net_name = $neutron_settings['default_private_net']
|
||||||
|
$predefined_nets = $neutron_settings['predefined_networks']
|
||||||
|
$tenant_net = $predefined_nets[$tenant_net_name]
|
||||||
|
$external_net = $predefined_nets[$external_net_name]
|
||||||
|
|
||||||
|
# Plugin settings data (overrides $external_net l3 values)
|
||||||
|
$midonet_settings = hiera_hash('midonet-fuel-plugin')
|
||||||
|
$tz_type = $midonet_settings['tunnel_type']
|
||||||
|
$floating_range_start = $midonet_settings['floating_ip_range_start']
|
||||||
|
$floating_range_end = $midonet_settings['floating_ip_range_end']
|
||||||
|
$floating_cidr = $midonet_settings['floating_cidr']
|
||||||
|
$floating_gateway_ip = $midonet_settings['gateway']
|
||||||
|
|
||||||
|
$allocation_pools = "start=$floating_range_start,end=$floating_range_end"
|
||||||
|
|
||||||
|
service { 'neutron-server':
|
||||||
|
ensure => running,
|
||||||
|
}
|
||||||
|
|
||||||
|
neutron_network { $tenant_net_name:
|
||||||
|
ensure => present,
|
||||||
|
router_external => $tenant_net['L2']['router_ext'],
|
||||||
|
tenant_name => $tenant_net['tenant'],
|
||||||
|
shared => $tenant_net['shared']
|
||||||
|
} ->
|
||||||
|
|
||||||
|
neutron_subnet { "${tenant_net_name}__subnet":
|
||||||
|
ensure => present,
|
||||||
|
cidr => $tenant_net['L3']['subnet'],
|
||||||
|
network_name => $tenant_net_name,
|
||||||
|
tenant_name => $tenant_net['tenant'],
|
||||||
|
gateway_ip => $tenant_net['L3']['gateway'],
|
||||||
|
enable_dhcp => $tenant_net['L3']['enable_dhcp'],
|
||||||
|
dns_nameservers => $tenant_net['L3']['nameservers']
|
||||||
|
} ->
|
||||||
|
|
||||||
|
neutron_network { $external_net_name:
|
||||||
|
ensure => present,
|
||||||
|
router_external => $external_net['L2']['router_ext'],
|
||||||
|
tenant_name => $external_net['tenant'],
|
||||||
|
shared => $external_net['shared']
|
||||||
|
} ->
|
||||||
|
|
||||||
|
neutron_subnet { "${external_net_name}__subnet":
|
||||||
|
ensure => present,
|
||||||
|
cidr => $floating_cidr,
|
||||||
|
network_name => $external_net_name,
|
||||||
|
tenant_name => $external_net['tenant'],
|
||||||
|
gateway_ip => $floating_gateway_ip,
|
||||||
|
enable_dhcp => $external_net['L3']['enable_dhcp'],
|
||||||
|
dns_nameservers => $external_net['L3']['nameservers'],
|
||||||
|
allocation_pools => $allocation_pools
|
||||||
|
} ->
|
||||||
|
|
||||||
|
neutron_router { 'mido_router':
|
||||||
|
ensure => present,
|
||||||
|
tenant_name => $external_net['tenant'],
|
||||||
|
gateway_network_name => $external_net_name,
|
||||||
|
} ->
|
||||||
|
|
||||||
|
neutron_router_interface { "mido_router:${tenant_net_name}__subnet":
|
||||||
|
ensure => present,
|
||||||
|
}
|
|
@ -11,6 +11,7 @@
|
||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
notice('MODULAR: midonet-nsdb.pp')
|
||||||
|
|
||||||
# Extract data from hiera
|
# Extract data from hiera
|
||||||
$fuel_settings = parseyaml($astute_settings_yaml)
|
$fuel_settings = parseyaml($astute_settings_yaml)
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
# Copyright 2016 Midokura, SARL.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
notice('MODULAR: midonet-override-hiera.pp')
|
||||||
|
|
||||||
|
$midonet_settings = hiera('midonet-fuel-plugin')
|
||||||
|
$mem = $midonet_settings['mem']
|
||||||
|
|
||||||
|
file {'/etc/hiera/plugins/midonet-fuel-plugin.yaml':
|
||||||
|
ensure => file,
|
||||||
|
source => '/etc/fuel/plugins/midonet-fuel-plugin-4.0/puppet/files/midonet-fuel-plugin.yaml'
|
||||||
|
}
|
||||||
|
|
||||||
|
if $mem == false {
|
||||||
|
# MidoNet 2015.06 OSS does not support fernet tokens
|
||||||
|
file_line {'token_provider':
|
||||||
|
path => '/etc/hiera/plugins/midonet-fuel-plugin.yaml',
|
||||||
|
line => 'token_provider: uuid'
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,71 +0,0 @@
|
||||||
# Neutron data
|
|
||||||
$amqp_port = '5673'
|
|
||||||
$rabbit_hash = hiera('rabbit_hash', {})
|
|
||||||
$service_endpoint = hiera('management_vip')
|
|
||||||
$neutron_config = hiera('quantum_settings')
|
|
||||||
$neutron_db_password = $neutron_config['database']['passwd']
|
|
||||||
$neutron_user_password = $neutron_config['keystone']['admin_password']
|
|
||||||
|
|
||||||
# Neutron plugin data
|
|
||||||
$access_data = hiera_hash('access')
|
|
||||||
$username = $access_data['user']
|
|
||||||
$password = $access_data['password']
|
|
||||||
$tenant_name = $access_data['tenant']
|
|
||||||
|
|
||||||
class {'::neutron':
|
|
||||||
verbose => false,
|
|
||||||
debug => false,
|
|
||||||
use_syslog => false,
|
|
||||||
log_facility => 'LOG_USER',
|
|
||||||
base_mac => 'fa:16:3e:00:00:00',
|
|
||||||
core_plugin => 'neutron.plugins.midonet.plugin.MidonetPluginV2',
|
|
||||||
service_plugins => [],
|
|
||||||
allow_overlapping_ips => true,
|
|
||||||
mac_generation_retries => 32,
|
|
||||||
dhcp_lease_duration => 600,
|
|
||||||
dhcp_agents_per_network => 2,
|
|
||||||
report_interval => 5,
|
|
||||||
rabbit_user => $rabbit_hash['user'],
|
|
||||||
rabbit_host => ['localhost'],
|
|
||||||
rabbit_hosts => split(hiera('amqp_hosts', ''), ','),
|
|
||||||
rabbit_port => '5672',
|
|
||||||
rabbit_password => $rabbit_hash['password'],
|
|
||||||
kombu_reconnect_delay => '5.0',
|
|
||||||
network_device_mtu => undef,
|
|
||||||
}
|
|
||||||
|
|
||||||
class {'::neutron::plugins::midonet':
|
|
||||||
midonet_api_ip => $service_endpoint,
|
|
||||||
midonet_api_port => '8081',
|
|
||||||
keystone_username => $username,
|
|
||||||
keystone_password => $password,
|
|
||||||
keystone_tenant => $tenant_name
|
|
||||||
}
|
|
||||||
|
|
||||||
class { '::neutron::server':
|
|
||||||
sync_db => $primary_controller ? {true => 'primary', default => 'slave'},
|
|
||||||
auth_host => $service_endpoint,
|
|
||||||
auth_port => '35357',
|
|
||||||
auth_protocol => 'http',
|
|
||||||
auth_password => $neutron_user_password,
|
|
||||||
auth_tenant => 'services',
|
|
||||||
auth_user => 'neutron',
|
|
||||||
auth_uri => "http://${service_endpoint}:35357/v2.0",
|
|
||||||
|
|
||||||
database_retry_interval => 2,
|
|
||||||
database_connection => "mysql://neutron:${neutron_db_password}@${service_endpoint}/neutron?&read_timeout=60",
|
|
||||||
database_max_retries => -1,
|
|
||||||
|
|
||||||
agent_down_time => 15,
|
|
||||||
|
|
||||||
api_workers => min($::processorcount + 0, 50 + 0),
|
|
||||||
rpc_workers => 0,
|
|
||||||
}
|
|
||||||
|
|
||||||
class { '::neutron::agents::dhcp':
|
|
||||||
debug => false,
|
|
||||||
interface_driver => 'neutron.agent.linux.interface.MidonetInterfaceDriver',
|
|
||||||
dhcp_driver => 'midonet.neutron.agent.midonet_driver.DhcpNoOpDriver',
|
|
||||||
enable_isolated_metadata => true,
|
|
||||||
enabled => true,
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
exec { 'drop_neutron_db':
|
|
||||||
command => "mysql -e 'drop database if exists neutron;'",
|
|
||||||
path => '/usr/bin',
|
|
||||||
}
|
|
||||||
|
|
||||||
exec { 'create_neutron_db':
|
|
||||||
command => "mysql -e 'create database neutron character set utf8;'",
|
|
||||||
path => '/usr/bin',
|
|
||||||
}
|
|
||||||
|
|
||||||
exec { 'grant_neutron_db':
|
|
||||||
command => "mysql -e \"grant all on neutron.* to 'neutron'@'%';\"",
|
|
||||||
path => '/usr/bin',
|
|
||||||
}
|
|
||||||
|
|
||||||
exec { 'neutron_db_sync':
|
|
||||||
command => 'neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini upgrade head',
|
|
||||||
path => '/usr/bin',
|
|
||||||
timeout => 500,
|
|
||||||
}
|
|
||||||
|
|
||||||
Exec['drop_neutron_db'] -> Exec['create_neutron_db'] -> Exec['grant_neutron_db'] -> Exec['neutron_db_sync']
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
# Copyright 2015 Midokura SARL.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
notice('MODULAR: midonet-replace-guess-func.pp')
|
||||||
|
|
||||||
|
# NOTE: This replacement may be only needed on Ubuntu hosts
|
||||||
|
file_line { 'replace_guess':
|
||||||
|
path => '/usr/share/neutron-common/plugin_guess_func',
|
||||||
|
match => '"neutron.plugins.midonet.plugin.MidonetPluginV2"',
|
||||||
|
line => "\t\"midonet.neutron.plugin_v1.MidonetPluginV2\")",
|
||||||
|
multiple => true
|
||||||
|
}
|
|
@ -1,92 +0,0 @@
|
||||||
# Extract data from hiera
|
|
||||||
$access_data = hiera_hash('access')
|
|
||||||
$keystone_admin_tenant = $access_data['tenant']
|
|
||||||
$network_metadata = hiera_hash('network_metadata')
|
|
||||||
$node_roles = $network_metadata['nodes'][$::hostname]['node_roles']
|
|
||||||
$neutron_settings = hiera('quantum_settings')
|
|
||||||
$nets = $neutron_settings['predefined_networks']
|
|
||||||
$segment_id = $nets['net04']['L2']['segment_id']
|
|
||||||
$vm_net_l3 = $nets['net04']['L3']
|
|
||||||
|
|
||||||
# Plugin settings data
|
|
||||||
$midonet_settings = hiera_hash('midonet-fuel-plugin')
|
|
||||||
$tz_type = $midonet_settings['tunnel_type']
|
|
||||||
$range_start = $midonet_settings['floating_ip_range_start']
|
|
||||||
$range_end = $midonet_settings['floating_ip_range_end']
|
|
||||||
|
|
||||||
$vm_net = { shared => false,
|
|
||||||
"L2" => { network_type => $tz_type,
|
|
||||||
router_ext => false,
|
|
||||||
physnet => false,
|
|
||||||
segment_id => $segment_id,
|
|
||||||
},
|
|
||||||
"L3" => $vm_net_l3,
|
|
||||||
tenant => 'admin'
|
|
||||||
}
|
|
||||||
|
|
||||||
$allocation_pools = "start=$range_start,end=$range_end"
|
|
||||||
|
|
||||||
service { 'neutron-server':
|
|
||||||
ensure => running,
|
|
||||||
}
|
|
||||||
|
|
||||||
if member($node_roles, 'primary-controller') {
|
|
||||||
exec {'refresh-dhcp-agent':
|
|
||||||
command => 'crm resource start p_neutron-dhcp-agent',
|
|
||||||
path => '/usr/bin:/usr/sbin',
|
|
||||||
tries => 3,
|
|
||||||
try_sleep => 10,
|
|
||||||
} ->
|
|
||||||
exec {'refresh-metadata-agent':
|
|
||||||
command => 'crm resource start p_neutron-metadata-agent',
|
|
||||||
path => '/usr/bin:/usr/sbin',
|
|
||||||
tries => 3,
|
|
||||||
try_sleep => 10,
|
|
||||||
} ->
|
|
||||||
|
|
||||||
neutron_network { 'net04':
|
|
||||||
ensure => present,
|
|
||||||
router_external => $nets['net04']['L2']['router_ext'],
|
|
||||||
tenant_name => $nets['net04']['tenant'],
|
|
||||||
shared => $nets['net04']['shared']
|
|
||||||
} ->
|
|
||||||
|
|
||||||
neutron_subnet { "net04__subnet":
|
|
||||||
ensure => present,
|
|
||||||
cidr => $nets['net04']['L3']['subnet'],
|
|
||||||
network_name => 'net04',
|
|
||||||
tenant_name => $nets['net04']['tenant'],
|
|
||||||
gateway_ip => $nets['net04']['L3']['gateway'],
|
|
||||||
enable_dhcp => $nets['net04']['L3']['enable_dhcp'],
|
|
||||||
dns_nameservers => $nets['net04']['L3']['nameservers']
|
|
||||||
} ->
|
|
||||||
|
|
||||||
neutron_network { 'net04_ext':
|
|
||||||
ensure => present,
|
|
||||||
router_external => $nets['net04_ext']['L2']['router_ext'],
|
|
||||||
tenant_name => $nets['net04_ext']['tenant'],
|
|
||||||
shared => $nets['net04_ext']['shared']
|
|
||||||
} ->
|
|
||||||
|
|
||||||
neutron_subnet { "net04_ext__subnet":
|
|
||||||
ensure => present,
|
|
||||||
cidr => $midonet_settings['floating_cidr'],
|
|
||||||
network_name => 'net04_ext',
|
|
||||||
tenant_name => $nets['net04_ext']['tenant'],
|
|
||||||
gateway_ip => $midonet_settings['gateway'],
|
|
||||||
enable_dhcp => $nets['net04_ext']['L3']['enable_dhcp'],
|
|
||||||
dns_nameservers => $nets['net04_ext']['L3']['nameservers'],
|
|
||||||
allocation_pools => $allocation_pools
|
|
||||||
} ->
|
|
||||||
|
|
||||||
neutron_router { 'router04':
|
|
||||||
ensure => present,
|
|
||||||
tenant_name => $nets['net04_ext']['tenant'],
|
|
||||||
gateway_network_name => 'net04_ext',
|
|
||||||
} ->
|
|
||||||
|
|
||||||
neutron_router_interface { "router04:net04__subnet":
|
|
||||||
ensure => present,
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,17 +1,293 @@
|
||||||
- id: mido-nsdb
|
#
|
||||||
type: group
|
# GROUPS
|
||||||
role: [nsdb]
|
#
|
||||||
requires: []
|
- id: nsdb
|
||||||
required_for: [pre_deployment_end]
|
|
||||||
parameters:
|
parameters:
|
||||||
strategy:
|
strategy:
|
||||||
type: parallel
|
type: parallel
|
||||||
|
requires:
|
||||||
|
- deploy_start
|
||||||
|
required_for:
|
||||||
|
- controller
|
||||||
|
- primary-controller
|
||||||
|
- deploy_end
|
||||||
|
role:
|
||||||
|
- nsdb
|
||||||
|
type: group
|
||||||
|
tasks:
|
||||||
|
- logging
|
||||||
|
- hiera
|
||||||
|
- globals
|
||||||
|
- netconfig-midonet
|
||||||
|
|
||||||
- id: midonet-gw
|
- id: midonet-gw
|
||||||
type: group
|
|
||||||
role: [midonet-gw]
|
|
||||||
requires: [deploy_start]
|
|
||||||
required_for: [deploy_end]
|
|
||||||
parameters:
|
parameters:
|
||||||
strategy:
|
strategy:
|
||||||
type: parallel
|
type: parallel
|
||||||
|
required_for:
|
||||||
|
- deploy_end
|
||||||
|
requires:
|
||||||
|
- nsdb
|
||||||
|
role:
|
||||||
|
- midonet-gw
|
||||||
|
tasks:
|
||||||
|
- logging
|
||||||
|
- hiera
|
||||||
|
- globals
|
||||||
|
- netconfig-midonet
|
||||||
|
type: group
|
||||||
|
|
||||||
|
#
|
||||||
|
# DEPLOYMENT
|
||||||
|
#
|
||||||
|
|
||||||
|
- id: netconfig-midonet
|
||||||
|
parameters:
|
||||||
|
puppet_manifest: /etc/puppet/modules/osnailyfacter/modular/netconfig/netconfig.pp
|
||||||
|
puppet_modules: /etc/puppet/modules
|
||||||
|
timeout: 3600
|
||||||
|
cwd: /
|
||||||
|
required_for:
|
||||||
|
- netconfig
|
||||||
|
requires:
|
||||||
|
- tools
|
||||||
|
groups:
|
||||||
|
- /.*/
|
||||||
|
type: puppet
|
||||||
|
version: 2.0.0
|
||||||
|
|
||||||
|
# First independent tasks
|
||||||
|
- id: setup_repositories_midonet
|
||||||
|
groups:
|
||||||
|
- primary-controller
|
||||||
|
- controller
|
||||||
|
- compute
|
||||||
|
- nsdb
|
||||||
|
- midonet-gw
|
||||||
|
required_for:
|
||||||
|
- deploy_end
|
||||||
|
requires:
|
||||||
|
- netconfig
|
||||||
|
type: puppet
|
||||||
|
parameters:
|
||||||
|
puppet_manifest: puppet/manifests/midonet-define-repositories.pp
|
||||||
|
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||||
|
timeout: 1440
|
||||||
|
|
||||||
|
- id: enable_ip_forward_midonet
|
||||||
|
groups:
|
||||||
|
- compute
|
||||||
|
- controller
|
||||||
|
- primary-controller
|
||||||
|
- midonet-gw
|
||||||
|
required_for:
|
||||||
|
- deploy_end
|
||||||
|
requires:
|
||||||
|
- deploy_start
|
||||||
|
type: puppet
|
||||||
|
parameters:
|
||||||
|
puppet_manifest: puppet/manifests/midonet-enable-ip-forward.pp
|
||||||
|
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||||
|
timeout: 720
|
||||||
|
|
||||||
|
# NSDB-only tasks
|
||||||
|
- id: zookeeper_and_cassandra_midonet
|
||||||
|
groups:
|
||||||
|
- nsdb
|
||||||
|
required_for:
|
||||||
|
- deploy_end
|
||||||
|
requires:
|
||||||
|
- setup_repositories_midonet
|
||||||
|
- firewall
|
||||||
|
type: puppet
|
||||||
|
reexecute_on:
|
||||||
|
- deploy_changes
|
||||||
|
parameters:
|
||||||
|
puppet_manifest: puppet/manifests/midonet-nsdb.pp
|
||||||
|
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||||
|
timeout: 1440
|
||||||
|
|
||||||
|
# PRE-NEUTRON CONFIGURATION
|
||||||
|
- id: deploy_api_midonet
|
||||||
|
groups:
|
||||||
|
- primary-controller
|
||||||
|
- controller
|
||||||
|
required_for:
|
||||||
|
- deploy_end
|
||||||
|
- openstack-network-start
|
||||||
|
requires:
|
||||||
|
- setup_repositories_midonet
|
||||||
|
- enable_ip_forward_midonet
|
||||||
|
- firewall
|
||||||
|
- primary-cluster-haproxy
|
||||||
|
- cluster-haproxy
|
||||||
|
type: puppet
|
||||||
|
reexecute_on:
|
||||||
|
- deploy_changes
|
||||||
|
parameters:
|
||||||
|
puppet_manifest: puppet/manifests/midonet-install-api.pp
|
||||||
|
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||||
|
timeout: 1440
|
||||||
|
|
||||||
|
# In controllers, we have to install midolman 'before' the neutron
|
||||||
|
# configuration, because subnet creates a the DHCP port in neutron
|
||||||
|
# and we need to do the binding.
|
||||||
|
- id: agent-midonet-controller
|
||||||
|
groups:
|
||||||
|
- primary-controller
|
||||||
|
- controller
|
||||||
|
required_for:
|
||||||
|
- deploy_end
|
||||||
|
- openstack-network-start
|
||||||
|
requires:
|
||||||
|
- deploy_api_midonet
|
||||||
|
type: puppet
|
||||||
|
parameters:
|
||||||
|
puppet_manifest: puppet/manifests/midonet-install-agent.pp
|
||||||
|
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||||
|
timeout: 1440
|
||||||
|
|
||||||
|
# NEUTRON CONFIGURATION
|
||||||
|
- id: openstack-network-midonet-replace-service-name
|
||||||
|
groups:
|
||||||
|
- primary-controller
|
||||||
|
- controller
|
||||||
|
requires:
|
||||||
|
- openstack-network-common-config
|
||||||
|
required_for:
|
||||||
|
- openstack-network-end
|
||||||
|
type: puppet
|
||||||
|
parameters:
|
||||||
|
puppet_manifest: puppet/manifests/midonet-replace-guess-func.pp
|
||||||
|
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||||
|
timeout: 1440
|
||||||
|
|
||||||
|
- id: openstack-network-midonet-config
|
||||||
|
groups:
|
||||||
|
- primary-controller
|
||||||
|
- controller
|
||||||
|
requires:
|
||||||
|
- openstack-network-midonet-replace-service-name
|
||||||
|
required_for:
|
||||||
|
- openstack-network-server-config
|
||||||
|
type: puppet
|
||||||
|
parameters:
|
||||||
|
puppet_manifest: puppet/manifests/midonet-neutron-configure.pp
|
||||||
|
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||||
|
timeout: 1440
|
||||||
|
|
||||||
|
- id: openstack-network-midonet-networks
|
||||||
|
groups:
|
||||||
|
- primary-controller
|
||||||
|
requires:
|
||||||
|
- openstack-network-server-config
|
||||||
|
required_for:
|
||||||
|
- openstack-network-end
|
||||||
|
type: puppet
|
||||||
|
parameters:
|
||||||
|
puppet_manifest: puppet/manifests/midonet-neutron-networks.pp
|
||||||
|
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||||
|
timeout: 1440
|
||||||
|
|
||||||
|
- id: openstack-network-midonet-compute-nova
|
||||||
|
parameters:
|
||||||
|
puppet_manifest: puppet/manifests/midonet-compute-nova.pp
|
||||||
|
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||||
|
timeout: 1440
|
||||||
|
required_for:
|
||||||
|
- openstack-network-end
|
||||||
|
requires:
|
||||||
|
- openstack-network-common-config
|
||||||
|
- openstack-network-agents-l3
|
||||||
|
- openstack-network-agents-metadata
|
||||||
|
type: puppet
|
||||||
|
groups:
|
||||||
|
- compute
|
||||||
|
|
||||||
|
|
||||||
|
# Skipped tasks
|
||||||
|
- id: openstack-network-server-config
|
||||||
|
type: skipped
|
||||||
|
- id: openstack-network-networks
|
||||||
|
type: skipped
|
||||||
|
- id: openstack-network-routers
|
||||||
|
type: skipped
|
||||||
|
- id: openstack-network-plugins-l2
|
||||||
|
type: skipped
|
||||||
|
- id: primary-openstack-network-plugins-l2
|
||||||
|
type: skipped
|
||||||
|
- id: openstack-network-agents-l3
|
||||||
|
type: skipped
|
||||||
|
- id: primary-openstack-network-agents-l3
|
||||||
|
type: skipped
|
||||||
|
- id: openstack-network-compute-nova
|
||||||
|
type: skipped
|
||||||
|
- id: netconfig
|
||||||
|
type: skipped
|
||||||
|
|
||||||
|
# POST-DEPLOYMENT TASKS
|
||||||
|
|
||||||
|
# The task configure_default_route reinstalls openvswitch-switch
|
||||||
|
# and removes midolman. This task only runs on compute hosts, so
|
||||||
|
# we have to make sure that midolman is installed 'after' the
|
||||||
|
# 'configure_default_route' task has run
|
||||||
|
- id: agent-midonet-compute
|
||||||
|
role:
|
||||||
|
- compute
|
||||||
|
- midonet-gw
|
||||||
|
required_for:
|
||||||
|
- post_deployment_end
|
||||||
|
requires:
|
||||||
|
- configure_default_route
|
||||||
|
type: puppet
|
||||||
|
reexecute_on:
|
||||||
|
- deploy_changes
|
||||||
|
parameters:
|
||||||
|
puppet_manifest: puppet/manifests/midonet-install-agent.pp
|
||||||
|
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||||
|
timeout: 1440
|
||||||
|
|
||||||
|
- id: tunnel-zones-midonet
|
||||||
|
role:
|
||||||
|
- compute
|
||||||
|
- controller
|
||||||
|
- primary-controller
|
||||||
|
- midonet-gw
|
||||||
|
required_for:
|
||||||
|
- post_deployment_end
|
||||||
|
requires:
|
||||||
|
- agent-midonet-compute
|
||||||
|
type: puppet
|
||||||
|
parameters:
|
||||||
|
puppet_manifest: puppet/manifests/midonet-host-registry.pp
|
||||||
|
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||||
|
timeout: 720
|
||||||
|
|
||||||
|
- id: rootwrap-midonet
|
||||||
|
role:
|
||||||
|
- compute
|
||||||
|
- controller
|
||||||
|
- primary-controller
|
||||||
|
- midonet-gw
|
||||||
|
required_for:
|
||||||
|
- post_deployment_end
|
||||||
|
requires:
|
||||||
|
- agent-midonet-compute
|
||||||
|
type: puppet
|
||||||
|
parameters:
|
||||||
|
puppet_manifest: puppet/manifests/midonet-ensure-rootwrap.pp
|
||||||
|
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||||
|
timeout: 720
|
||||||
|
|
||||||
|
- id: gateway-midonet
|
||||||
|
role:
|
||||||
|
- midonet-gw
|
||||||
|
requires:
|
||||||
|
- tunnel-zones-midonet
|
||||||
|
required_for:
|
||||||
|
- post_deployment_end
|
||||||
|
type: puppet
|
||||||
|
parameters:
|
||||||
|
puppet_manifest: puppet/manifests/midonet-gateway-bgp.pp
|
||||||
|
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||||
|
timeout: 720
|
||||||
|
|
|
@ -0,0 +1,184 @@
|
||||||
|
# Makefile for Sphinx documentation
|
||||||
|
#
|
||||||
|
|
||||||
|
# You can set these variables from the command line.
|
||||||
|
SPHINXOPTS =
|
||||||
|
SPHINXBUILD = sphinx-build
|
||||||
|
PAPER =
|
||||||
|
BUILDDIR = build
|
||||||
|
|
||||||
|
# User-friendly check for sphinx-build
|
||||||
|
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
|
||||||
|
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Internal variables.
|
||||||
|
PAPEROPT_a4 = -D latex_paper_size=a4
|
||||||
|
PAPEROPT_letter = -D latex_paper_size=letter
|
||||||
|
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
|
||||||
|
# the i18n builder cannot share the environment and doctrees with the others
|
||||||
|
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
|
||||||
|
|
||||||
|
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo "Please use \`make <target>' where <target> is one of"
|
||||||
|
@echo " html to make standalone HTML files"
|
||||||
|
@echo " dirhtml to make HTML files named index.html in directories"
|
||||||
|
@echo " singlehtml to make a single large HTML file"
|
||||||
|
@echo " pickle to make pickle files"
|
||||||
|
@echo " json to make JSON files"
|
||||||
|
@echo " htmlhelp to make HTML files and a HTML help project"
|
||||||
|
@echo " qthelp to make HTML files and a qthelp project"
|
||||||
|
@echo " devhelp to make HTML files and a Devhelp project"
|
||||||
|
@echo " epub to make an epub"
|
||||||
|
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
||||||
|
@echo " latexpdf to make LaTeX files and run them through pdflatex"
|
||||||
|
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
|
||||||
|
@echo " text to make text files"
|
||||||
|
@echo " man to make manual pages"
|
||||||
|
@echo " texinfo to make Texinfo files"
|
||||||
|
@echo " info to make Texinfo files and run them through makeinfo"
|
||||||
|
@echo " gettext to make PO message catalogs"
|
||||||
|
@echo " changes to make an overview of all changed/added/deprecated items"
|
||||||
|
@echo " xml to make Docutils-native XML files"
|
||||||
|
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
|
||||||
|
@echo " linkcheck to check all external links for integrity"
|
||||||
|
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
||||||
|
@echo " pdf to make a PDF file"
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf $(BUILDDIR)/*
|
||||||
|
|
||||||
|
html:
|
||||||
|
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
||||||
|
|
||||||
|
dirhtml:
|
||||||
|
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
|
||||||
|
|
||||||
|
singlehtml:
|
||||||
|
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
|
||||||
|
|
||||||
|
pickle:
|
||||||
|
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
|
||||||
|
@echo
|
||||||
|
@echo "Build finished; now you can process the pickle files."
|
||||||
|
|
||||||
|
json:
|
||||||
|
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
|
||||||
|
@echo
|
||||||
|
@echo "Build finished; now you can process the JSON files."
|
||||||
|
|
||||||
|
htmlhelp:
|
||||||
|
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
|
||||||
|
@echo
|
||||||
|
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
||||||
|
".hhp project file in $(BUILDDIR)/htmlhelp."
|
||||||
|
|
||||||
|
qthelp:
|
||||||
|
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
|
||||||
|
@echo
|
||||||
|
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
||||||
|
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
||||||
|
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Together-Message.qhcp"
|
||||||
|
@echo "To view the help file:"
|
||||||
|
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Together-Message.qhc"
|
||||||
|
|
||||||
|
devhelp:
|
||||||
|
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
|
||||||
|
@echo
|
||||||
|
@echo "Build finished."
|
||||||
|
@echo "To view the help file:"
|
||||||
|
@echo "# mkdir -p $$HOME/.local/share/devhelp/Together-Message"
|
||||||
|
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Together-Message"
|
||||||
|
@echo "# devhelp"
|
||||||
|
|
||||||
|
epub:
|
||||||
|
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
|
||||||
|
|
||||||
|
latex:
|
||||||
|
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||||
|
@echo
|
||||||
|
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
|
||||||
|
@echo "Run \`make' in that directory to run these through (pdf)latex" \
|
||||||
|
"(use \`make latexpdf' here to do that automatically)."
|
||||||
|
|
||||||
|
latexpdf:
|
||||||
|
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||||
|
@echo "Running LaTeX files through pdflatex..."
|
||||||
|
$(MAKE) -C $(BUILDDIR)/latex all-pdf
|
||||||
|
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
||||||
|
|
||||||
|
latexpdfja:
|
||||||
|
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||||
|
@echo "Running LaTeX files through platex and dvipdfmx..."
|
||||||
|
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
|
||||||
|
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
||||||
|
|
||||||
|
text:
|
||||||
|
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The text files are in $(BUILDDIR)/text."
|
||||||
|
|
||||||
|
man:
|
||||||
|
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
|
||||||
|
|
||||||
|
texinfo:
|
||||||
|
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
|
||||||
|
@echo "Run \`make' in that directory to run these through makeinfo" \
|
||||||
|
"(use \`make info' here to do that automatically)."
|
||||||
|
|
||||||
|
info:
|
||||||
|
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
||||||
|
@echo "Running Texinfo files through makeinfo..."
|
||||||
|
make -C $(BUILDDIR)/texinfo info
|
||||||
|
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
|
||||||
|
|
||||||
|
gettext:
|
||||||
|
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
|
||||||
|
|
||||||
|
changes:
|
||||||
|
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
|
||||||
|
@echo
|
||||||
|
@echo "The overview file is in $(BUILDDIR)/changes."
|
||||||
|
|
||||||
|
linkcheck:
|
||||||
|
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
|
||||||
|
@echo
|
||||||
|
@echo "Link check complete; look for any errors in the above output " \
|
||||||
|
"or in $(BUILDDIR)/linkcheck/output.txt."
|
||||||
|
|
||||||
|
doctest:
|
||||||
|
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
|
||||||
|
@echo "Testing of doctests in the sources finished, look at the " \
|
||||||
|
"results in $(BUILDDIR)/doctest/output.txt."
|
||||||
|
|
||||||
|
xml:
|
||||||
|
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
|
||||||
|
|
||||||
|
pseudoxml:
|
||||||
|
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
|
||||||
|
|
||||||
|
pdf:
|
||||||
|
$(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) $(BUILDDIR)/pdf
|
||||||
|
@echo
|
||||||
|
@echo "Build finished. The PDF file is in $(BUILDDIR)/pdf."
|
||||||
|
|
|
@ -1,240 +0,0 @@
|
||||||
|
|
||||||
.. raw:: pdf
|
|
||||||
|
|
||||||
PageBreak oneColumn
|
|
||||||
|
|
||||||
|
|
||||||
Installation Guide
|
|
||||||
==================
|
|
||||||
|
|
||||||
Install the Plugin
|
|
||||||
------------------
|
|
||||||
|
|
||||||
To install the MidoNet Fuel plugin:
|
|
||||||
|
|
||||||
#. Download the plugin from the `Fuel Plugin Catalog`_
|
|
||||||
|
|
||||||
#. Log into Fuel Master node and install the plugin using the
|
|
||||||
`Fuel CLI <https://docs.mirantis.com/openstack/fuel/fuel-7.0/user-guide.html#using-fuel-cli>`_:
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
# fuel plugins --install midonet-fuel-plugin-3.0-3.0.1-1.noarch.rpm
|
|
||||||
|
|
||||||
#. Verify that the plugin is installed correctly:
|
|
||||||
::
|
|
||||||
|
|
||||||
# fuel plugins
|
|
||||||
id | name | version | package_version
|
|
||||||
---|---------|---------|----------------
|
|
||||||
9 | midonet | 3.0.1 | 3.0.0
|
|
||||||
|
|
||||||
|
|
||||||
Enable Experimental Features
|
|
||||||
----------------------------
|
|
||||||
|
|
||||||
To be able to use MidoNet Fuel plugin correctly, Fuel `Experimental Features`_
|
|
||||||
must be enabled. This is done automatically by plugin post-install script,
|
|
||||||
assuming the plugin is installed on top of clean Fuel master installation.
|
|
||||||
In case the process has to be done manually, follow these steps:
|
|
||||||
|
|
||||||
#. Modify the ``/etc/fuel/version.yaml`` file in *Fuel Master*
|
|
||||||
host to add ``experimental`` to the ``feature_groups`` list in the ``VERSION``
|
|
||||||
section, just below ``mirantis`` item:
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
VERSION:
|
|
||||||
...
|
|
||||||
feature_groups:
|
|
||||||
- mirantis
|
|
||||||
- experimental
|
|
||||||
|
|
||||||
#. Restart the *Nailgun* container with dependencies by running::
|
|
||||||
|
|
||||||
# dockerctl restart nailgun
|
|
||||||
# dockerctl restart nginx
|
|
||||||
# dockerctl shell cobbler
|
|
||||||
# cobbler sync
|
|
||||||
# exit
|
|
||||||
|
|
||||||
#. Make sure the *nginx* and the *nailgun* docker services finished the restart
|
|
||||||
process before go on with the new section::
|
|
||||||
|
|
||||||
# dockerctl check
|
|
||||||
|
|
||||||
|
|
||||||
Create the MidoNet roles
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
MidoNet core functionality depends on two roles that are not provided by Fuel
|
|
||||||
on default:
|
|
||||||
|
|
||||||
- the **NSDB** role, which deploys the Network State DataBase services, namely
|
|
||||||
ZooKeeper and Cassandra.
|
|
||||||
|
|
||||||
- the **Gateway** role, which provides the MidoNet gateway service needed for
|
|
||||||
handling external *OpenStack* traffic. (See `MidoNet Fuel Plugin User Guide`_ for
|
|
||||||
more info about networking in MidoNet)
|
|
||||||
|
|
||||||
The above roles are added automatically by plugin post-install script,
|
|
||||||
assuming the plugin is installed on top of clean Fuel master installation.
|
|
||||||
In case the process has to be done manually, follow these steps:
|
|
||||||
|
|
||||||
NSDB role
|
|
||||||
`````````
|
|
||||||
|
|
||||||
#. Create a YAML file with the **NSDB** role definition, like this:
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
name: nsdb
|
|
||||||
meta:
|
|
||||||
name: Network State Database for MidoNet
|
|
||||||
description: MidoNet Synchronization Services
|
|
||||||
volumes_roles_mapping:
|
|
||||||
- allocate_size: min
|
|
||||||
id: os
|
|
||||||
|
|
||||||
#. Name it, for instance, ``nsdb.yaml``. Push the role for the environment
|
|
||||||
(``Ubuntu 2015.1.0-7.0``) using the
|
|
||||||
`Fuel CLI <https://docs.mirantis.com/openstack/fuel/fuel-7.0/user-guide.html#using-fuel-cli>`_:
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
$ fuel release
|
|
||||||
---|----------------------|-------------|------------------|-------------
|
|
||||||
2 | Kilo on Ubuntu 14.04 | available | Ubuntu | 2015.1.0-7.0
|
|
||||||
1 | Kilo on CentOS 6.5 | unavailable | CentOS | 2015.1.0-7.0
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
$ fuel role --create --release 2 --file nsdb.yaml
|
|
||||||
|
|
||||||
|
|
||||||
Gateway role
|
|
||||||
````````````
|
|
||||||
|
|
||||||
#. Create the role for **MidoNet Gateway** by creating a file called
|
|
||||||
``gateway.yaml`` with the following contents:
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
name: midonet-gw
|
|
||||||
meta:
|
|
||||||
name: MidoNet HA Gateway
|
|
||||||
description: MidoNet Gateway
|
|
||||||
volumes_roles_mapping:
|
|
||||||
- allocate_size: min
|
|
||||||
id: os
|
|
||||||
|
|
||||||
#. Create the role for the environment (``Ubuntu 2015.1.0-7.0``) using the
|
|
||||||
`Fuel CLI <https://docs.mirantis.com/openstack/fuel/fuel-7.0/user-guide.html#using-fuel-cli>`_:
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
$ fuel release
|
|
||||||
---|----------------------|-------------|------------------|-------------
|
|
||||||
2 | Kilo on Ubuntu 14.04 | available | Ubuntu | 2015.1.0-7.0
|
|
||||||
1 | Kilo on CentOS 6.5 | unavailable | CentOS | 2015.1.0-7.0
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
$ fuel role --create --release 2 --file gateway.yaml
|
|
||||||
|
|
||||||
|
|
||||||
Edit the Fuel deployment graph dependency cycle
|
|
||||||
-----------------------------------------------
|
|
||||||
|
|
||||||
The roles that were just added needs to be accompanied with appropriate
|
|
||||||
deployment tasks, so that `Fuel's Deployment Graph
|
|
||||||
<https://docs.fuel-infra.org/fuel-dev/develop/modular-architecture.html#granular-deployment-process>`_
|
|
||||||
is fully populated. Again, needed deployment tasks are added automatically by
|
|
||||||
plugin post-install script, assuming the plugin is installed on top of clean
|
|
||||||
Fuel master installation. In case the process still has to be done manually,
|
|
||||||
follow these steps:
|
|
||||||
|
|
||||||
#. Create a group type for Fuel |FuelVer| in a YAML file called
|
|
||||||
``/tmp/midonet_groups.yaml`` with the following content::
|
|
||||||
|
|
||||||
- id: nsdb
|
|
||||||
parameters:
|
|
||||||
strategy:
|
|
||||||
type: parallel
|
|
||||||
requires:
|
|
||||||
- deploy_start
|
|
||||||
required_for:
|
|
||||||
- deploy_end
|
|
||||||
role:
|
|
||||||
- nsdb
|
|
||||||
type: group
|
|
||||||
tasks:
|
|
||||||
- logging
|
|
||||||
- hiera
|
|
||||||
- globals
|
|
||||||
- netconfig
|
|
||||||
- id: midonet-gw
|
|
||||||
parameters:
|
|
||||||
strategy:
|
|
||||||
type: parallel
|
|
||||||
required_for:
|
|
||||||
- deploy_end
|
|
||||||
requires:
|
|
||||||
- deploy_start
|
|
||||||
role:
|
|
||||||
- midonet-gw
|
|
||||||
tasks:
|
|
||||||
- logging
|
|
||||||
- hiera
|
|
||||||
- globals
|
|
||||||
- netconfig
|
|
||||||
type: group
|
|
||||||
|
|
||||||
|
|
||||||
#. Download the deployment tasks for the **release 2** (``Ubuntu 2015.1.0-7.0``):
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
$ fuel release
|
|
||||||
---|----------------------|-------------|------------------|-------------
|
|
||||||
2 | Kilo on Ubuntu 14.04 | available | Ubuntu | 2015.1.0-7.0
|
|
||||||
1 | Kilo on CentOS 6.5 | unavailable | CentOS | 2015.1.0-7.0
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
fuel rel --rel 2 --deployment-tasks --download
|
|
||||||
|
|
||||||
#. A file ``./release_2/deployment_tasks.yaml`` will be downloaded.
|
|
||||||
|
|
||||||
#. Without moving from your current directory, append the
|
|
||||||
``/tmp/midonet_groups.yaml`` file into the ``deployment_tasks.yaml``:
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
cat /tmp/midonet_groups.yaml >> ./release_2/deployment_tasks.yaml
|
|
||||||
|
|
||||||
#. Upload the edited ``deployment-tasks`` file to the ``release 2``:
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
fuel rel --rel 2 --deployment-tasks --upload
|
|
||||||
|
|
||||||
|
|
||||||
#. Current Fuel Plugins framework only allows to apply tasks on
|
|
||||||
*pre_deployment* and *post_deployment* stages, adding these groups
|
|
||||||
and tasks into the main graph will allow **NSDB** and **Gateway**
|
|
||||||
associated tasks to:
|
|
||||||
|
|
||||||
- Configure *logging* to see Puppet and MCollective logs related to the tasks
|
|
||||||
from the Fuel Web UI.
|
|
||||||
|
|
||||||
- Access to hiera variables.
|
|
||||||
|
|
||||||
- Access to global variables.
|
|
||||||
|
|
||||||
- Configure the IP addresses for
|
|
||||||
`each Fuel network type <https://docs.mirantis.com/openstack/fuel/fuel-7.0/reference-architecture.html#network-architecture>`_.
|
|
||||||
|
|
||||||
.. _Experimental Features: https://docs.mirantis.com/openstack/fuel/fuel-7.0/operations.html#enable-experimental-features
|
|
||||||
.. _Fuel Plugin Catalog: https://www.mirantis.com/products/openstack-drivers-and-plugins/fuel-plugins/
|
|
||||||
|
|
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 248 KiB After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 118 KiB |
After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 50 KiB |
|
@ -9,10 +9,7 @@ Appendix B - references
|
||||||
|
|
||||||
- `MidoNet Web Site <http://midonet.org/>`_
|
- `MidoNet Web Site <http://midonet.org/>`_
|
||||||
- `MidoNet v2015.06 Documentation <http://docs.midonet.org/>`_
|
- `MidoNet v2015.06 Documentation <http://docs.midonet.org/>`_
|
||||||
- `MidoNet v2015.06 Code <https://github.com/midonet/midonet/tree/stable/v2015.06.2>`_
|
- `MidoNet v2015.06 Code <https://github.com/midonet/midonet/tree/stable/v2015.06.3>`_
|
||||||
- `Midokura Enterprise MidoNet (MEM) v1.9 Documentation <http://docs.midokura.com/docs/latest/manager-guide/content/index.html>`_
|
- `Midokura Enterprise MidoNet (MEM) v1.9 Documentation <http://docs.midokura.com/docs/latest/manager-guide/content/index.html>`_
|
||||||
- `Midokura Enterprise MidoNet (MEM) 30 Day Trial <http://www.midokura.com/mem-eval/>`_
|
- `Midokura Enterprise MidoNet (MEM) 30 Day Trial <http://www.midokura.com/mem-eval/>`_
|
||||||
- `Fuel Enable Experimental Features <https://docs.mirantis.com/openstack/fuel/fuel-7.0/operations.html#enable-experimental-features>`_
|
|
||||||
- `Fuel Plugins Catalog <https://www.mirantis.com/products/openstack-drivers-and-plugins/fuel-plugins/>`_
|
- `Fuel Plugins Catalog <https://www.mirantis.com/products/openstack-drivers-and-plugins/fuel-plugins/>`_
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
Appendixes
|
||||||
|
==========
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
licenses
|
||||||
|
appendix
|
||||||
|
bgp-peer
|
|
@ -1,8 +1,11 @@
|
||||||
|
.. raw:: pdf
|
||||||
|
|
||||||
Setting up test BGP peer
|
PageBreak oneColumn
|
||||||
========================
|
|
||||||
|
|
||||||
`BGP`_ is routing is an exterior gateway protocol supported and recommended to
|
Appendix C - Setting up test BGP peer
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
`BGP`_ routing is an exterior gateway protocol supported and recommended to
|
||||||
MidoNet production use case. An external BGP peer is necessary for Floating IP
|
MidoNet production use case. An external BGP peer is necessary for Floating IP
|
||||||
(FIP) traffic between the deployed OpenStack cloud instances and the external
|
(FIP) traffic between the deployed OpenStack cloud instances and the external
|
||||||
network(s). These BGP peers are usually available for production or data-center
|
network(s). These BGP peers are usually available for production or data-center
|
||||||
|
@ -44,7 +47,6 @@ in this guide:
|
||||||
- VyOS management IP on eth0 interface: **10.20.0.254/24**
|
- VyOS management IP on eth0 interface: **10.20.0.254/24**
|
||||||
- Default gateway for management subnet: **10.20.0.1**
|
- Default gateway for management subnet: **10.20.0.1**
|
||||||
|
|
||||||
|
|
|
||||||
|
|
||||||
Also, BGP protocol itself needs some parameters to be set up. For our simple
|
Also, BGP protocol itself needs some parameters to be set up. For our simple
|
||||||
demonstration we assume that VyOS BGP peer that we are creating is going to
|
demonstration we assume that VyOS BGP peer that we are creating is going to
|
||||||
|
@ -60,7 +62,6 @@ and IP addresses:
|
||||||
- MidoNet BGP gateway IP address: **10.88.88.2**
|
- MidoNet BGP gateway IP address: **10.88.88.2**
|
||||||
- MidoNet BGP gateway AS number: **12345**
|
- MidoNet BGP gateway AS number: **12345**
|
||||||
|
|
||||||
|
|
|
||||||
|
|
||||||
Finally, to fulfill the purpose of this BGP setup, we need to know which
|
Finally, to fulfill the purpose of this BGP setup, we need to know which
|
||||||
Floating IP subnet is going to be handled by MidoNet-based OpenStack cloud,
|
Floating IP subnet is going to be handled by MidoNet-based OpenStack cloud,
|
||||||
|
@ -68,7 +69,6 @@ so we specify subnet:
|
||||||
|
|
||||||
- Floating IP subnet: **200.200.200.0/24**
|
- Floating IP subnet: **200.200.200.0/24**
|
||||||
|
|
||||||
|
|
|
||||||
|
|
||||||
|
|
||||||
VyOS Installation
|
VyOS Installation
|
||||||
|
@ -339,4 +339,3 @@ in the management network gateway router, 10.20.0.1. For example:
|
||||||
In case management gateway router is not accessible, the above
|
In case management gateway router is not accessible, the above
|
||||||
static route can be set at each individual host that needs to access
|
static route can be set at each individual host that needs to access
|
||||||
"fake" Floating IP network range.
|
"fake" Floating IP network range.
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
sys.path.insert(0, os.path.abspath('../..'))
|
||||||
|
# -- General configuration ----------------------------------------------------
|
||||||
|
|
||||||
|
# Add any Sphinx extension module names here, as strings. They can be
|
||||||
|
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
||||||
|
extensions = [
|
||||||
|
'sphinx.ext.autodoc',
|
||||||
|
'reno.sphinxext',
|
||||||
|
'rst2pdf.pdfbuilder'
|
||||||
|
]
|
||||||
|
|
||||||
|
# autodoc generation is a bit aggressive and a nuisance when doing heavy
|
||||||
|
# text edit cycles.
|
||||||
|
# execute "export SPHINX_DEBUG=1" in your terminal to disable
|
||||||
|
|
||||||
|
# The suffix of source filenames.
|
||||||
|
source_suffix = '.rst'
|
||||||
|
|
||||||
|
# The master toctree document.
|
||||||
|
master_doc = 'index'
|
||||||
|
|
||||||
|
# General information about the project.
|
||||||
|
project = u'fuel-midonet-plugin'
|
||||||
|
copyright = u'2016, Midokura SARL'
|
||||||
|
version = '4.0.0'
|
||||||
|
|
||||||
|
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||||
|
add_function_parentheses = True
|
||||||
|
|
||||||
|
# If true, the current module name will be prepended to all description
|
||||||
|
# unit titles (such as .. function::).
|
||||||
|
add_module_names = True
|
||||||
|
|
||||||
|
# The name of the Pygments (syntax highlighting) style to use.
|
||||||
|
pygments_style = 'sphinx'
|
||||||
|
|
||||||
|
# -- Options for HTML output --------------------------------------------------
|
||||||
|
|
||||||
|
# The theme to use for HTML and HTML Help pages. Major themes that come with
|
||||||
|
# Sphinx are currently 'default' and 'sphinxdoc'.
|
||||||
|
# html_theme_path = ["."]
|
||||||
|
# html_theme = '_theme'
|
||||||
|
# html_static_path = ['static']
|
||||||
|
# html_theme = 'default'
|
||||||
|
|
||||||
|
# Output file base name for HTML help builder.
|
||||||
|
htmlhelp_basename = '%sdoc' % project
|
||||||
|
|
||||||
|
# Grouping the document tree into LaTeX files. List of tuples
|
||||||
|
# (source start file, target name, title, author, documentclass
|
||||||
|
# [howto/manual]).
|
||||||
|
latex_documents = [
|
||||||
|
('index',
|
||||||
|
'%s.tex' % project,
|
||||||
|
u'%s Documentation' % project,
|
||||||
|
u'OpenStack Foundation', 'manual'),
|
||||||
|
]
|
||||||
|
|
||||||
|
pdf_documents = [(master_doc, project, u'MidoNet plugin for Fuel 8', copyright),]
|
||||||
|
|
||||||
|
# Example configuration for intersphinx: refer to the Python standard library.
|
||||||
|
#intersphinx_mapping = {'http://docs.python.org/': None}
|
|
@ -1,3 +1,7 @@
|
||||||
|
.. |FuelVer| replace:: 8.0
|
||||||
|
.. |PrevPluginVer| replace:: 3.0.1
|
||||||
|
.. |PluginVer| replace:: 4.0.0
|
||||||
|
|
||||||
.. raw:: pdf
|
.. raw:: pdf
|
||||||
|
|
||||||
PageBreak oneColumn
|
PageBreak oneColumn
|
||||||
|
@ -12,9 +16,9 @@ puppet manifests to install all the components to deploy easily MidoNet with
|
||||||
Fuel in both lab or production environments.
|
Fuel in both lab or production environments.
|
||||||
|
|
||||||
Fuel MidoNet plugin is capable of deploying MidoNet v2015.06_ on top of Mirantis
|
Fuel MidoNet plugin is capable of deploying MidoNet v2015.06_ on top of Mirantis
|
||||||
OpenStack Fuel version |FuelVer| (including Maintenance Update 2). There are no
|
OpenStack Fuel version |FuelVer|. There are no prerequisites to use the MidoNet
|
||||||
prerequisites to use the MidoNet plugin: MidoNet is Open Source, and the plugin
|
plugin: MidoNet is Open Source, and the plugin sets the repositories from where
|
||||||
sets the repositories from where download and install MidoNet packages.
|
download and install MidoNet packages.
|
||||||
|
|
||||||
This plugin also supports Midokura Enterprise MidoNet (MEM_) installation by
|
This plugin also supports Midokura Enterprise MidoNet (MEM_) installation by
|
||||||
allowing the user to choose the option from the Fuel Web UI.
|
allowing the user to choose the option from the Fuel Web UI.
|
||||||
|
@ -44,7 +48,7 @@ Known Limitations
|
||||||
MidoNet itself supports any number of gateway nodes, it is only a plugin
|
MidoNet itself supports any number of gateway nodes, it is only a plugin
|
||||||
limitation, additional nodes needs to be set up manually.
|
limitation, additional nodes needs to be set up manually.
|
||||||
|
|
||||||
.. _v2015.06: https://github.com/midonet/midonet/tree/stable/v2015.06.2
|
.. _v2015.06: https://github.com/midonet/midonet/releases/tag/v2015.06.3
|
||||||
.. _MEM: http://docs.midokura.com/docs/latest/manager-guide/content/index.html
|
.. _MEM: http://docs.midokura.com/docs/latest/manager-guide/content/index.html
|
||||||
.. _provided: http://www.midokura.com/mem-eval
|
.. _provided: http://www.midokura.com/mem-eval
|
||||||
|
|
||||||
|
@ -54,15 +58,10 @@ Changes in MidoNet plugin |PluginVer|
|
||||||
|
|
||||||
* New features:
|
* New features:
|
||||||
|
|
||||||
* Support for Fuel 7.0 Maintenance Release 2
|
* Support for Fuel |FuelVer|
|
||||||
* Added post_install.sh script that sets up Fuel experimental features,
|
* Tasks are included in the ``deployment`` stage of Fuel instead of in the
|
||||||
customized MidoNet roles and custom deployment graph
|
``post_deployment``, so the time of deployment has decreased around 20-30
|
||||||
|
minutes, as well as it makes the deployment more reliable.
|
||||||
* Bug fixes:
|
* **MidoNet** option available in the *Networking Setup* during the environment
|
||||||
|
creation, making the configuration of an environment with MidoNet much
|
||||||
* Provided updated python-neutron-plugin-midonet debian package
|
easier.
|
||||||
* MidoNet BGP gateway role parameters
|
|
||||||
* Neutron db creation timeouts
|
|
||||||
* Fix some OSTF test scenarios
|
|
||||||
* Numerous documentation fixes
|
|
||||||
|
|
|
@ -14,23 +14,22 @@ MidoNet SDN controller as a Neutron back-end.
|
||||||
MidoNet Networks
|
MidoNet Networks
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
MidoNet changes the behavior of default Neutron deployments, understanding
|
MidoNet changes the behaviour of default Neutron deployments, understanding
|
||||||
what MidoNet plugin does, especially in regard to external networks, is
|
what MidoNet plugin does, especially in regard to external networks, is
|
||||||
essential to configure and use MidoNet Fuel plugin properly.
|
essential to configure and use MidoNet Fuel plugin properly.
|
||||||
|
|
||||||
MidoNet plugin is compatible with both **Neutron + GRE** and
|
MidoNet plugin is compatible with both **Neutron + GRE** and
|
||||||
**Neutron + VxLAN** network tunneling overlays, so let's focus on showing
|
**Neutron + VxLAN** network tunnelling overlays, so let's focus on showing
|
||||||
the differences beteewn the Neutron default ML2 deployments first.
|
the differences between the Neutron default ML2 deployments first.
|
||||||
|
|
||||||
Neutron without MidoNet plugin
|
Neutron without MidoNet plugin
|
||||||
``````````````````````````````
|
``````````````````````````````
|
||||||
|
|
||||||
Fuel |FuelVer| reference architecture contains some useful informaition in
|
Fuel 7.0 reference architecture contains some useful information in
|
||||||
`Neutron Network Topologies
|
`Neutron Network Topologies`_ section. First, let's have an overview of
|
||||||
<https://docs.mirantis.com/openstack/fuel/fuel-7.0/reference-architecture.html#neutron-with-gre-segmentation-and-ovs>`_
|
Neutron-default ML2 topolgy:
|
||||||
section. First, let's have an overview of Neutron-default ML2 topolgy:
|
|
||||||
|
|
||||||
.. image:: images/fuelml2gre.png
|
.. image:: ../images/fuelml2gre.png
|
||||||
:width: 100%
|
:width: 100%
|
||||||
|
|
||||||
In this topology, red, or "North" network represents the Public Internet,
|
In this topology, red, or "North" network represents the Public Internet,
|
||||||
|
@ -42,10 +41,6 @@ service is running on the controller, answers all ARP requests coming from
|
||||||
of the traffic destined to Floating IP assigned to Virtual Machines and places
|
of the traffic destined to Floating IP assigned to Virtual Machines and places
|
||||||
the resulting packets in the overlay of the green, "South" network (br-tun).
|
the resulting packets in the overlay of the green, "South" network (br-tun).
|
||||||
|
|
||||||
Even in an HA deployment, the L3 agent only runs on one of the Controllers, and
|
|
||||||
only gets spawned in another host if the previous one loses connectivity
|
|
||||||
(active-standby Corosync / Pacemaker HA setup).
|
|
||||||
|
|
||||||
Node hosting Neutron Controller has to:
|
Node hosting Neutron Controller has to:
|
||||||
|
|
||||||
- Serve the API requests coming from users
|
- Serve the API requests coming from users
|
||||||
|
@ -67,7 +62,7 @@ environment settings get overridden.
|
||||||
|
|
||||||
MidoNet deployment topology:
|
MidoNet deployment topology:
|
||||||
|
|
||||||
.. image:: images/midonet_fuel.png
|
.. image:: ../images/midonet_fuel.png
|
||||||
:width: 100%
|
:width: 100%
|
||||||
|
|
||||||
On this topology diagram:
|
On this topology diagram:
|
||||||
|
@ -90,16 +85,17 @@ On this topology diagram:
|
||||||
the deployment.
|
the deployment.
|
||||||
|
|
||||||
- **Storage network** is not shown on the diagram, as it is out of scope of
|
- **Storage network** is not shown on the diagram, as it is out of scope of
|
||||||
this guide (and NEutron & MidoNet itself).
|
this guide (and Neutron & MidoNet itself).
|
||||||
|
|
||||||
|
|
||||||
MidoNet gateway is native distributed system, one can place as many gateways
|
MidoNet gateway is native distributed system, one can place as many gateways
|
||||||
necessary, so North-South traffic can be distributed and balanced. Once BGP
|
necessary, so North-South traffic can be distributed and balanced (Although due
|
||||||
sessions are established and routes are exchanged between BGP "peers",
|
plugin limitation you can only deploy one). Once BGP sessions are established
|
||||||
each North-to-South network packet gets routed from the External Public API
|
and routes are exchanged between BGP "peers", each North-to-South network packet
|
||||||
network to one of the MidoNet gateways. It does not matter which of them gets
|
gets routed from the External Public API network to one of the MidoNet gateways.
|
||||||
the packet, they work as if they are a single entity. MidoNet gateway sends
|
It does not matter which of them gets the packet, they work as if they are a
|
||||||
the inbound packet directly to the Compute that hosts the target virtual
|
single entity. MidoNet gateway sends the inbound packet directly to the Compute
|
||||||
machine.
|
that hosts the target virtual machine.
|
||||||
|
|
||||||
In this way controller nodes gets significantly less overloaded, since they
|
In this way controller nodes gets significantly less overloaded, since they
|
||||||
only need to answer user requests and they don't handle VM traffic at all
|
only need to answer user requests and they don't handle VM traffic at all
|
||||||
|
@ -113,110 +109,97 @@ Select Environment
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
#. When creating the environment in the Fuel UI wizard, choose **Neutron with
|
#. When creating the environment in the Fuel UI wizard, choose **Neutron with
|
||||||
tunneling segmentation** (second option) on the Network tab.
|
MidoNet** on the *Networking Setup* section:
|
||||||
|
|
||||||
.. image:: images/tunneling.png
|
.. image:: ../images/tunneling.png
|
||||||
:width: 100%
|
:width: 75%
|
||||||
|
|
||||||
After that, you will be able to choose between *GRE* or *VXLAN* segmentation.
|
After that, you will be able to choose between *GRE* or *VXLAN* segmentation.
|
||||||
MidoNet works with both.
|
MidoNet works with both.
|
||||||
|
|
||||||
#. MidoNet plugin does not interact with the rest of the options, so choose
|
#. MidoNet plugin does not interact with the rest of the options, so choose
|
||||||
whatever your deployment demands on them. Follow instructions from
|
whatever your deployment demands on them. Follow instructions from the
|
||||||
`the official Mirantis OpenStack documentation <https://docs.mirantis.com/openstack/fuel/fuel-7.0/user-guide.html#create-a-new-openstack-environment>`_
|
`official Mirantis OpenStack documentation`_ to finish the configuration.
|
||||||
to finish the configuration.
|
|
||||||
|
|
||||||
Alternatively, this can be done in fuel cli:
|
|
||||||
|
|
||||||
::
|
|
||||||
|
|
||||||
$ fuel env --create --name test-deployment --rel 2 --net neutron --nst tun
|
|
||||||
|
|
||||||
|
|
||||||
Once the environment is created, open the *Settings* tab of the Fuel Web UI.
|
Configure MidoNet Plugin
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Once the environment is created, open the *Settings* tab of the Fuel Web UI, and
|
||||||
|
go to the *Other* section:
|
||||||
|
|
||||||
|
.. image:: ../images/other.png
|
||||||
|
:width: 75%
|
||||||
|
|
||||||
Install Midokura Enterprise MidoNet (Optional)
|
Install Midokura Enterprise MidoNet (Optional)
|
||||||
----------------------------------------------
|
``````````````````````````````````````````````
|
||||||
|
|
||||||
#. Installing Midokura Enterprise MidoNet, you will be able to use some specific
|
#. Installing Midokura Enterprise MidoNet, you will be able to use some specific
|
||||||
features from MidoNet only available on the Enterprise version.
|
features from MidoNet only available on the Enterprise version.
|
||||||
|
|
||||||
#. Activate the option **Install Midokura Enterprise MidoNet**.
|
#. Activate the option **Install Midokura Enterprise MidoNet**.
|
||||||
|
|
||||||
.. image:: images/mem.png
|
.. image:: ../images/mem.png
|
||||||
:width: 100%
|
:width: 75%
|
||||||
|
|
||||||
#. Select the Midokura Enterprise MidoNet (MEM) version and fill the **Username** and
|
#. Select the Midokura Enterprise MidoNet (MEM) version (only 1.9 available now)
|
||||||
**Password** fields for downloading the packages from the repository.
|
and fill the **Username** and **Password** fields for downloading the
|
||||||
|
packages from the repository.
|
||||||
|
|
||||||
.. image:: images/mem_credentials.png
|
.. image:: ../images/mem_credentials.png
|
||||||
:width: 100%
|
:width: 75%
|
||||||
|
|
||||||
|
|
||||||
Configure MidoNet Plugin
|
Choose Tunnel Type
|
||||||
------------------------
|
``````````````````
|
||||||
|
|
||||||
#. Configuring the MidoNet plugin for Fuel, you will override most of the options
|
MidoNet tunnelling is compatible with **GRE** and **VXLAN**.
|
||||||
of the *Public Network* section of the *Settings* tab of the environment:
|
|
||||||
|
|
||||||
.. image:: images/overridden_options.png
|
|
||||||
:width: 100%
|
|
||||||
|
|
||||||
Fuel will still reserve IP addresses of the *IP range* (first row) to assign
|
|
||||||
API-accessible IPs to the OpenStack services, but the rest will be overridden by
|
|
||||||
the plugin options that you are about to configure, making the Floating Network
|
|
||||||
full-overlay and pure floating.
|
|
||||||
|
|
||||||
#. Activate the option **Assign public networks to all nodes**.
|
|
||||||
By default, Fuel only gives public access to Controllers. We need to enable
|
|
||||||
this option in order to have external connectivity to Gateway nodes.
|
|
||||||
|
|
||||||
.. image:: images/public_to_all.png
|
|
||||||
:width: 100%
|
|
||||||
|
|
||||||
#. Select the plugin checkbox and fill the options:
|
|
||||||
|
|
||||||
.. image:: images/plugin_config.png
|
|
||||||
:width: 100%
|
|
||||||
|
|
||||||
Let's explain them:
|
|
||||||
|
|
||||||
- **Tunnel Type**: Here you can choose between GRE or VxLAN as
|
|
||||||
tunneling technology. Both are supported by MidoNet, but VxLAN is
|
|
||||||
recommended for its performance.
|
|
||||||
|
|
||||||
- **Floating Network subnet** Public Network CIDR**: This option represents
|
|
||||||
the CIDR of Neutron's external network (overriding Public Network CIDR for
|
|
||||||
the default Neutron ML2 plugin). This subnet **MUST NOT** be the same as
|
|
||||||
the *Public Network* CIDR section of the *Settings* tab of the
|
|
||||||
environment. Since there is no option to fine-tune this kind of network
|
|
||||||
separation control within Fuel core, one must use MidoNet Fuel plugin
|
|
||||||
settings to do it.
|
|
||||||
|
|
||||||
- **Floating Network Gateway IP**: The Gateway IP address to the MidoNet
|
|
||||||
Virtual IP subnet. This IP address is usually set to the first available
|
|
||||||
IP in the subnet. Make sure that the address really belongs to the
|
|
||||||
*Floating Network subnet* CIDR.
|
|
||||||
|
|
||||||
- **Floating Network Range Start** and **Floating Network Range End**:
|
|
||||||
First and last IP address of the Floating range of IPs available for use
|
|
||||||
on virtual machines.
|
|
||||||
|
|
||||||
- **BGP routing subnet**: IP subnet in which BGP peers resides. Both local
|
|
||||||
and remote BGP peer IP addresses must belong to this subnet.
|
|
||||||
|
|
||||||
|
|
||||||
- **BGP local IP address** and **BGP local AS**: This pair of parameters
|
.. image:: ../images/tunnel_type.png
|
||||||
identifies BGP peer local to MidoNet gateway. They are usually given by
|
:width: 75%
|
||||||
ISP to be set into your networking equipment (in this case your MidoNet
|
|
||||||
gateway) by the network administrators. "AS number" stands for Autonomous
|
|
||||||
System Number.
|
|
||||||
|
|
||||||
- **BGP peer IP address** and **BGP peer AS**: This pair of parameters
|
Both are supported by MidoNet, but VxLAN is recommended for its performance.
|
||||||
usually identifies BGP peer on the side of your ISP. They are usually
|
|
||||||
given by ISP to be set into your BGP peer so that those peers know where
|
Floating Network Options
|
||||||
to find each other.
|
````````````````````````
|
||||||
|
|
||||||
|
Configure the Floating fields of the plugin options (they are already been
|
||||||
|
filled by default, but you will need to change them for sure):
|
||||||
|
|
||||||
|
|
||||||
|
.. image:: ../images/floating_network.png
|
||||||
|
:width: 75%
|
||||||
|
|
||||||
|
|
||||||
|
Configuring the floating fields in *MidoNet plugin*, you will override most of the
|
||||||
|
options of the *Neutron L3/Floating Network Parameters* section of the
|
||||||
|
*Networks* tab of the environment:
|
||||||
|
|
||||||
|
.. image:: ../images/overridden_options.png
|
||||||
|
:width: 75%
|
||||||
|
|
||||||
|
So this *Floating IP range* (first row) will be completely ignored. This
|
||||||
|
range has to match with the *CIDR* of the *Public Network*:
|
||||||
|
|
||||||
|
.. image:: ../images/public_network.png
|
||||||
|
:width: 75%
|
||||||
|
|
||||||
|
Which only will be used for API-accessible IPs to the OpenStack services but not
|
||||||
|
for Virtual Machine's floating IPs. Please refer to `Neutron with Midonet
|
||||||
|
plugin`_ section of this document if it is not clear enough to you.
|
||||||
|
|
||||||
|
Configure BGP
|
||||||
|
`````````````
|
||||||
|
|
||||||
|
Fill the BGP attributes:
|
||||||
|
|
||||||
|
|
||||||
|
.. image:: ../images/bgp_params.png
|
||||||
|
:width: 75%
|
||||||
|
|
||||||
|
There is a nice tutorial in this document: **Setting up test BGP peer** to run a
|
||||||
|
BGP peer for testing environments.
|
||||||
|
|
||||||
|
|
||||||
Assign Roles to Nodes
|
Assign Roles to Nodes
|
||||||
|
@ -225,30 +208,30 @@ Assign Roles to Nodes
|
||||||
#. Go to the *Nodes* tab and you will see the **Network State DataBase** and
|
#. Go to the *Nodes* tab and you will see the **Network State DataBase** and
|
||||||
**MidoNet HA Gateway** roles available to be assigned to roles.
|
**MidoNet HA Gateway** roles available to be assigned to roles.
|
||||||
|
|
||||||
.. image:: images/nodes_to_roles.png
|
.. image:: ../images/nodes_to_roles.png
|
||||||
:width: 100%
|
:width: 75%
|
||||||
|
|
||||||
#. Some general advice to be followed:
|
#. Some general advice to be followed:
|
||||||
|
|
||||||
- **Gateway** role should be given to a dedicated node.
|
- **Gateway** role should be given to a dedicated node.
|
||||||
|
|
||||||
- **NSDB** role can be combined with any other roles, but note that it needs
|
- **NSDB** role can be combined with any other roles, but note that it needs
|
||||||
at least 4GB RAM for itself (dedicated storage hihgly recommended).
|
at least 4GB RAM for itself (dedicated storage hihgly recommended).
|
||||||
|
|
||||||
|
|
||||||
|
Fuel will force you to choose at least one **NSDB** node in your environment (3
|
||||||
|
are recommended).
|
||||||
|
|
||||||
|
|
||||||
Finish environment configuration
|
Finish environment configuration
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
#. Run `network verification check <https://docs.mirantis.com/openstack/fuel/fuel-7.0/user-guide.html#verify-networks>`_
|
We recommend to run a `Connectivity Check`_ before deploy the environment
|
||||||
|
|
||||||
#. Press `Deploy button <https://docs.mirantis.com/openstack/fuel/fuel-7.0/user-guide.html#deploy-changes>`_ to once you are done with environment configuration.
|
|
||||||
|
|
||||||
|
|
||||||
Operations and Troubleshooting
|
Operations and Troubleshooting
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
A successful deployment done with MidoNet Fuel plugin will produce fully
|
A successful deployment done with MidoNet Fuel plugin will produce fully
|
||||||
working OpenStack environment, with MidoNet Neutron network back-end.
|
working OpenStack environment, with MidoNet as a Neutron network back-end.
|
||||||
MidoNet is fully compatible with Neutron and Nova APIs and most of its
|
MidoNet is fully compatible with Neutron and Nova APIs and most of its
|
||||||
aspects can be directly managed by OpenStack Horizon WEB interface, as well
|
aspects can be directly managed by OpenStack Horizon WEB interface, as well
|
||||||
as Neutron API.
|
as Neutron API.
|
||||||
|
@ -262,6 +245,8 @@ the deployment went fine, please see `MidoNet Troubleshooting Guide`_.
|
||||||
|
|
||||||
.. _MidoNet Operations Guide: https://docs.midonet.org/docs/v2015.06/en/operations-guide/content/index.html
|
.. _MidoNet Operations Guide: https://docs.midonet.org/docs/v2015.06/en/operations-guide/content/index.html
|
||||||
.. _MidoNet Troubleshooting Guide: https://docs.midonet.org/docs/v2015.06/en/troubleshooting-guide/content/index.html
|
.. _MidoNet Troubleshooting Guide: https://docs.midonet.org/docs/v2015.06/en/troubleshooting-guide/content/index.html
|
||||||
|
.. _`Connectivity Check`: https://docs.mirantis.com/openstack/fuel/fuel-8.0/user-guide.html#verify-networks
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Troubleshooting MidoNet Fuel deployment
|
Troubleshooting MidoNet Fuel deployment
|
||||||
|
@ -289,3 +274,6 @@ messages, they should either be included in MidoNet support claims to help
|
||||||
to help the troubleshooting or an action can be taken by user to prevent issue
|
to help the troubleshooting or an action can be taken by user to prevent issue
|
||||||
from happening on re-deployment.
|
from happening on re-deployment.
|
||||||
|
|
||||||
|
|
||||||
|
.. _`Neutron Network Topologies`: https://docs.mirantis.com/openstack/fuel/fuel-7.0/reference-architecture.html#neutron-with-gre-segmentation-and-ovs
|
||||||
|
.. _`official Mirantis OpenStack documentation`: https://docs.mirantis.com/openstack/fuel/fuel-7.0/user-guide.html#create-a-new-openstack-environment
|
|
@ -1,30 +1,29 @@
|
||||||
|
.. |FuelVer| replace:: 8.0
|
||||||
|
.. |PrevPluginVer| replace:: 3.0.1
|
||||||
|
.. |PluginVer| replace:: 4.0.0
|
||||||
|
|
||||||
.. |FuelVer| replace:: 7.0
|
|
||||||
.. |PrevPluginVer| replace:: 3.0.0
|
|
||||||
.. |PluginVer| replace:: 3.0.1
|
|
||||||
|
|
||||||
=============================
|
Document purpose
|
||||||
Guide to the MidoNet Plugin
|
================
|
||||||
=============================
|
|
||||||
|
|
||||||
.. class:: center
|
|
||||||
|
|
||||||
version 3.0-|PluginVer|-1 for Fuel |FuelVer|
|
|
||||||
|
|
||||||
|
This document will guide you through the steps of install, configure and use the
|
||||||
|
MidoNet plugin version |PluginVer| for Fuel |FuelVer|.
|
||||||
|
|
||||||
.. raw:: pdf
|
.. raw:: pdf
|
||||||
|
|
||||||
PageBreak oneColumn
|
PageBreak oneColumn
|
||||||
|
|
||||||
|
Contents
|
||||||
|
========
|
||||||
|
|
||||||
.. contents::
|
.. toctree::
|
||||||
.. section-numbering::
|
:maxdepth: 2
|
||||||
|
|
||||||
|
|
||||||
.. raw:: pdf
|
|
||||||
|
|
||||||
PageBreak oneColumn
|
|
||||||
|
|
||||||
|
description
|
||||||
|
terms
|
||||||
|
installation
|
||||||
|
guide
|
||||||
|
appendixes
|
||||||
|
|
||||||
Revision history
|
Revision history
|
||||||
================
|
================
|
||||||
|
@ -41,6 +40,9 @@ Revision history
|
||||||
0.3 07.03.2016 Samir Ibradzic Added release notes
|
0.3 07.03.2016 Samir Ibradzic Added release notes
|
||||||
and troubleshooting
|
and troubleshooting
|
||||||
(samir@midokura.com)
|
(samir@midokura.com)
|
||||||
|
4.0 24.03.2016 Jaume Devesa Adapt to Fuel 8
|
||||||
|
|
||||||
|
(jaume@midokura.com)
|
||||||
========= =============== ========================== =========================
|
========= =============== ========================== =========================
|
||||||
|
|
||||||
.. raw:: pdf
|
.. raw:: pdf
|
||||||
|
@ -48,16 +50,3 @@ Revision history
|
||||||
PageBreak oneColumn
|
PageBreak oneColumn
|
||||||
|
|
||||||
|
|
||||||
Document purpose
|
|
||||||
================
|
|
||||||
|
|
||||||
This document will guide you through the steps of install, configure and use the
|
|
||||||
MidoNet plugin version |PluginVer| for Fuel |FuelVer|.
|
|
||||||
|
|
||||||
.. include:: content/description.rst
|
|
||||||
.. include:: content/terms.rst
|
|
||||||
.. include:: content/installation.rst
|
|
||||||
.. include:: content/guide.rst
|
|
||||||
.. include:: content/licenses.rst
|
|
||||||
.. include:: content/appendix.rst
|
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
|
||||||
|
.. raw:: pdf
|
||||||
|
|
||||||
|
PageBreak oneColumn
|
||||||
|
|
||||||
|
|
||||||
|
Installation Guide
|
||||||
|
==================
|
||||||
|
|
||||||
|
Install the Plugin
|
||||||
|
------------------
|
||||||
|
|
||||||
|
To install the MidoNet Fuel plugin:
|
||||||
|
|
||||||
|
#. Download the plugin from the `Fuel Plugin Catalog`_
|
||||||
|
|
||||||
|
#. Log into Fuel Master node and install the plugin using the `Fuel CLI`_:
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
# fuel plugins --install midonet-fuel-plugin-4.0-4.0.0-1.noarch.rpm
|
||||||
|
|
||||||
|
#. Verify that the plugin is installed correctly:
|
||||||
|
::
|
||||||
|
|
||||||
|
# fuel plugins
|
||||||
|
id | name | version | package_version
|
||||||
|
---|---------|---------|----------------
|
||||||
|
9 | midonet | 4.0.1 | 4.0.0
|
||||||
|
|
||||||
|
.. _`Fuel Plugin Catalog`: https://www.mirantis.com/products/openstack-drivers-and-plugins/fuel-plugins/
|
||||||
|
.. _`Fuel CLI`: https://docs.mirantis.com/openstack/fuel/fuel-8.0/user-guide.html#using-fuel-cli
|
|
@ -4,7 +4,7 @@
|
||||||
PageBreak oneColumn
|
PageBreak oneColumn
|
||||||
|
|
||||||
|
|
||||||
Appendix B - licenses
|
Appendix A - licenses
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
Third Party Components Used in MidoNet OSS
|
Third Party Components Used in MidoNet OSS
|
||||||
|
@ -63,13 +63,10 @@ Puppet Modules
|
||||||
====================== ==========
|
====================== ==========
|
||||||
Name License
|
Name License
|
||||||
====================== ==========
|
====================== ==========
|
||||||
midonet-midonet Apache 2.0
|
|
||||||
ripienaar-module_data Apache 2.0
|
ripienaar-module_data Apache 2.0
|
||||||
puppetlabs-inifile Apache 2.0
|
|
||||||
deric-zookeeper Apache 2.0
|
deric-zookeeper Apache 2.0
|
||||||
midonet-cassandra Apache 2.0
|
midonet-cassandra Apache 2.0
|
||||||
puppetlabs-apt Apache 2.0
|
|
||||||
puppetlabs-java Apache 2.0
|
puppetlabs-java Apache 2.0
|
||||||
puppetlabs-tomcat Apache 2.0
|
puppetlabs-tomcat Apache 2.0
|
||||||
|
midonet-midonet Apache 2.0
|
||||||
====================== ==========
|
====================== ==========
|
||||||
|
|
|
@ -39,7 +39,7 @@ attributes:
|
||||||
value: ''
|
value: ''
|
||||||
label: "MEM repository password"
|
label: "MEM repository password"
|
||||||
description: "Password for Midokura Enterprise MidoNet (MEM) repository"
|
description: "Password for Midokura Enterprise MidoNet (MEM) repository"
|
||||||
type: "text"
|
type: "password"
|
||||||
weight: 9
|
weight: 9
|
||||||
restrictions:
|
restrictions:
|
||||||
- condition: "settings:midonet-fuel-plugin.mem.value == false"
|
- condition: "settings:midonet-fuel-plugin.mem.value == false"
|
||||||
|
@ -63,7 +63,7 @@ attributes:
|
||||||
|
|
||||||
# Floating IP range #
|
# Floating IP range #
|
||||||
floating_cidr:
|
floating_cidr:
|
||||||
value: ''
|
value: '200.200.200.0/24'
|
||||||
label: 'Floating Network subnet'
|
label: 'Floating Network subnet'
|
||||||
description: 'CIDR of the Floating Network. Will override the default settings'
|
description: 'CIDR of the Floating Network. Will override the default settings'
|
||||||
weight: 20
|
weight: 20
|
||||||
|
@ -73,7 +73,7 @@ attributes:
|
||||||
error: 'Floating Network must be a CIDR'
|
error: 'Floating Network must be a CIDR'
|
||||||
|
|
||||||
gateway:
|
gateway:
|
||||||
value: ''
|
value: '200.200.200.1'
|
||||||
label: 'Floating Network Gateway IP'
|
label: 'Floating Network Gateway IP'
|
||||||
description: 'Gateway of the Floating Network. Will override the default settings'
|
description: 'Gateway of the Floating Network. Will override the default settings'
|
||||||
weight: 21
|
weight: 21
|
||||||
|
@ -83,7 +83,7 @@ attributes:
|
||||||
error: 'Floating Network gateway must be an IP address'
|
error: 'Floating Network gateway must be an IP address'
|
||||||
|
|
||||||
floating_ip_range_start:
|
floating_ip_range_start:
|
||||||
value: ''
|
value: '200.200.200.100'
|
||||||
label: 'Floating Network range start'
|
label: 'Floating Network range start'
|
||||||
description: 'First IP address of the Floating Network range. Will override the default settings'
|
description: 'First IP address of the Floating Network range. Will override the default settings'
|
||||||
weight: 22
|
weight: 22
|
||||||
|
@ -93,7 +93,7 @@ attributes:
|
||||||
error: 'Floating Network range start value must be an IP address'
|
error: 'Floating Network range start value must be an IP address'
|
||||||
|
|
||||||
floating_ip_range_end:
|
floating_ip_range_end:
|
||||||
value: ''
|
value: '200.200.200.200'
|
||||||
label: 'Floating Network range end'
|
label: 'Floating Network range end'
|
||||||
description: 'Last IP address of the Floating Network range. Will override the default settings'
|
description: 'Last IP address of the Floating Network range. Will override the default settings'
|
||||||
weight: 23
|
weight: 23
|
||||||
|
@ -104,7 +104,7 @@ attributes:
|
||||||
|
|
||||||
## BGP Options ###
|
## BGP Options ###
|
||||||
bgp_cidr:
|
bgp_cidr:
|
||||||
value: ''
|
value: '10.88.88.0/30'
|
||||||
label: 'BGP routing subnet'
|
label: 'BGP routing subnet'
|
||||||
description: 'CIDR of the BGP network'
|
description: 'CIDR of the BGP network'
|
||||||
weight: 30
|
weight: 30
|
||||||
|
@ -114,7 +114,7 @@ attributes:
|
||||||
error: 'BGP Network must be a CIDR'
|
error: 'BGP Network must be a CIDR'
|
||||||
|
|
||||||
bgp_ip:
|
bgp_ip:
|
||||||
value: ''
|
value: '10.88.88.2'
|
||||||
label: 'BGP local IP address'
|
label: 'BGP local IP address'
|
||||||
description: 'IP address of the first Local BGP peer'
|
description: 'IP address of the first Local BGP peer'
|
||||||
weight: 31
|
weight: 31
|
||||||
|
@ -124,7 +124,7 @@ attributes:
|
||||||
error: 'Local BGP peer must be an IP address'
|
error: 'Local BGP peer must be an IP address'
|
||||||
|
|
||||||
local_as:
|
local_as:
|
||||||
value: ''
|
value: '12345'
|
||||||
label: 'BGP local AS'
|
label: 'BGP local AS'
|
||||||
description: 'Autonomous System Number of the MidoNet Gateway'
|
description: 'Autonomous System Number of the MidoNet Gateway'
|
||||||
weight: 32
|
weight: 32
|
||||||
|
@ -134,7 +134,7 @@ attributes:
|
||||||
error: "BGP local AS must be an integer of 5 digits"
|
error: "BGP local AS must be an integer of 5 digits"
|
||||||
|
|
||||||
remote_ip1:
|
remote_ip1:
|
||||||
value: ''
|
value: '10.88.88.1'
|
||||||
label: 'BGP peer IP address'
|
label: 'BGP peer IP address'
|
||||||
description: 'IP address of the BGP peer'
|
description: 'IP address of the BGP peer'
|
||||||
weight: 33
|
weight: 33
|
||||||
|
@ -144,7 +144,7 @@ attributes:
|
||||||
error: 'Remote BGP peer must be an IP address'
|
error: 'Remote BGP peer must be an IP address'
|
||||||
|
|
||||||
remote_as1:
|
remote_as1:
|
||||||
value: ''
|
value: '65535'
|
||||||
label: 'BGP peer AS'
|
label: 'BGP peer AS'
|
||||||
description: 'Autonomous System Number of the BGP peer'
|
description: 'Autonomous System Number of the BGP peer'
|
||||||
weight: 34
|
weight: 34
|
||||||
|
@ -152,4 +152,3 @@ attributes:
|
||||||
regex:
|
regex:
|
||||||
source: '^([0-9]){5}$'
|
source: '^([0-9]){5}$'
|
||||||
error: "Remote AS must be an integer of 5 digits"
|
error: "Remote AS must be an integer of 5 digits"
|
||||||
|
|
||||||
|
|
|
@ -1,20 +1,18 @@
|
||||||
name: midonet-fuel-plugin
|
name: midonet-fuel-plugin
|
||||||
title: Neutron Midonet plugin
|
title: Neutron Midonet plugin
|
||||||
version: 3.0.1
|
version: 4.0.0
|
||||||
description: Enable to use plugin Midonet for Neutron
|
description: Enable to use plugin Midonet for Neutron
|
||||||
fuel_version: ['7.0']
|
fuel_version: ['8.0']
|
||||||
|
is_hotpluggable: false
|
||||||
|
|
||||||
releases:
|
releases:
|
||||||
- os: ubuntu
|
- os: ubuntu
|
||||||
version: 2015.1.0-7.0
|
version: liberty-8.0
|
||||||
mode: ['ha', 'multinode']
|
mode: ['ha', 'multinode']
|
||||||
deployment_scripts_path: deployment_scripts/
|
deployment_scripts_path: deployment_scripts/
|
||||||
repository_path: repositories/ubuntu
|
repository_path: repositories/ubuntu
|
||||||
- os: centos
|
|
||||||
version: 2015.1.0-7.0
|
package_version: '4.0.0'
|
||||||
mode: ['ha', 'multinode']
|
|
||||||
deployment_scripts_path: deployment_scripts/
|
|
||||||
repository_path: repositories/centos
|
|
||||||
package_version: '3.0.0'
|
|
||||||
licenses: ['Apache 2.0']
|
licenses: ['Apache 2.0']
|
||||||
authors: ['Lucas Eznarriaga <lucas@midokura.com>, Midokura',
|
authors: ['Lucas Eznarriaga <lucas@midokura.com>, Midokura',
|
||||||
'Jaume Devesa <jaume@midokura.com>, Midokura',
|
'Jaume Devesa <jaume@midokura.com>, Midokura',
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
nsdb:
|
||||||
|
name: Network State Database for MidoNet
|
||||||
|
description: MidoNet Synchronization Services
|
||||||
|
has_primary: false
|
||||||
|
public_ip_required: false
|
||||||
|
weight: 100
|
||||||
|
limits:
|
||||||
|
min: 1
|
||||||
|
recommended: 3
|
||||||
|
|
||||||
|
midonet-gw:
|
||||||
|
name: MidoNet HA Gateway
|
||||||
|
description: OpenStack node Gateway using MidoNet BGP
|
||||||
|
has_primary: false
|
||||||
|
public_ip_required: true
|
||||||
|
weight: 100
|
||||||
|
conflicts:
|
||||||
|
- controller
|
109
post_install.sh
|
@ -1,109 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# Fuel 7.0 default deployment config hack script
|
|
||||||
#
|
|
||||||
|
|
||||||
#TODO: rollback all changes on package uninstall (uninstall.sh)
|
|
||||||
|
|
||||||
KEYSTONE_PASS=$(sed -n '/"FUEL_ACCESS"/,/^"/s/\(^[ ]*"password": "\)\(.*\)\("\)/\2/p')
|
|
||||||
[ -z "$KEYSTONE_PASS" ] && KEYSTONE_PASS=$(sed -n '/FUEL_ACCESS/,/^[ ]/s/\(^[ ]*password: \)\(.*\)\(\)/\2/p')
|
|
||||||
[ -z "$KEYSTONE_PASS" ] && KEYSTONE_PASS=admin
|
|
||||||
export KEYSTONE_USER=admin
|
|
||||||
export KEYSTONE_PASS
|
|
||||||
FUEL_VER=$(fuel --version 2>&1 | tail -n1 | cut -c 1-3)
|
|
||||||
YAML_CFG=/etc/fuel/$FUEL_VER/version.yaml
|
|
||||||
|
|
||||||
# Enable Fuel experimental features
|
|
||||||
if ! grep -q "\- experimental" $YAML_CFG; then
|
|
||||||
echo "Enableing Fuel experimental features in $YAML_CFG"
|
|
||||||
sed -i 's|^\([ ]*\)- mirantis|\0\n\1- experimental|' $YAML_CFG
|
|
||||||
dockerctl restart nailgun > /dev/null
|
|
||||||
echo -n "Restarting Nailgun"
|
|
||||||
while ! fuel plugins &> /dev/null; do
|
|
||||||
echo -n .
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
echo
|
|
||||||
# dockerctl restart nginx
|
|
||||||
# dockerctl shell cobbler
|
|
||||||
# cobbler sync
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Generate and register additional roles
|
|
||||||
echo "Updating MidoNet NSDB & GW Fuel roles:"
|
|
||||||
cat > /tmp/role-nsdb.yaml << THEEND
|
|
||||||
name: nsdb
|
|
||||||
meta:
|
|
||||||
name: Network State Database for MidoNet
|
|
||||||
description: MidoNet Synchronization Services
|
|
||||||
volumes_roles_mapping:
|
|
||||||
- allocate_size: min
|
|
||||||
id: os
|
|
||||||
THEEND
|
|
||||||
cat > /tmp/role-gw.yaml << THEEND
|
|
||||||
name: midonet-gw
|
|
||||||
meta:
|
|
||||||
name: MidoNet HA Gateway
|
|
||||||
description: MidoNet Gateway
|
|
||||||
volumes_roles_mapping:
|
|
||||||
- allocate_size: min
|
|
||||||
id: os
|
|
||||||
THEEND
|
|
||||||
REL=$(fuel rel 2>/dev/null | grep "on Ubuntu" | awk '{ print $1 }')
|
|
||||||
fuel role --update --rel $REL --file /tmp/role-nsdb.yaml 2> /dev/null
|
|
||||||
fuel role --update --rel $REL --file /tmp/role-gw.yaml 2> /dev/null
|
|
||||||
rm -rf /tmp/role-nsdb.yaml /tmp/role-gw.yaml
|
|
||||||
|
|
||||||
# Check if additional deployment tasks needs to be enabled
|
|
||||||
pushd /tmp > /dev/null
|
|
||||||
fuel rel --rel $REL --deployment-tasks --download 2> /dev/null
|
|
||||||
if ! grep -q "\- id: nsdb" release_$REL/deployment_tasks.yaml; then
|
|
||||||
echo "Enabling MidoNet NSDB Fuel deployment tasks"
|
|
||||||
cat >> release_$REL/deployment_tasks.yaml << THEEND
|
|
||||||
- id: nsdb
|
|
||||||
parameters:
|
|
||||||
strategy:
|
|
||||||
type: parallel
|
|
||||||
requires:
|
|
||||||
- deploy_start
|
|
||||||
required_for:
|
|
||||||
- deploy_end
|
|
||||||
role:
|
|
||||||
- nsdb
|
|
||||||
type: group
|
|
||||||
tasks:
|
|
||||||
- logging
|
|
||||||
- hiera
|
|
||||||
- globals
|
|
||||||
- netconfig
|
|
||||||
THEEND
|
|
||||||
fuel rel --rel $REL --deployment-tasks --upload 2> /dev/null
|
|
||||||
fi
|
|
||||||
if ! grep -q "\- id: midonet-gw" release_$REL/deployment_tasks.yaml; then
|
|
||||||
echo "Enabling MidoNet GW Fuel deployment tasks"
|
|
||||||
cat >> release_$REL/deployment_tasks.yaml << THEEND
|
|
||||||
- id: midonet-gw
|
|
||||||
parameters:
|
|
||||||
strategy:
|
|
||||||
type: parallel
|
|
||||||
required_for:
|
|
||||||
- deploy_end
|
|
||||||
requires:
|
|
||||||
- deploy_start
|
|
||||||
role:
|
|
||||||
- midonet-gw
|
|
||||||
tasks:
|
|
||||||
- logging
|
|
||||||
- hiera
|
|
||||||
- globals
|
|
||||||
- netconfig
|
|
||||||
type: group
|
|
||||||
THEEND
|
|
||||||
fuel rel --rel $REL --deployment-tasks --upload 2> /dev/null
|
|
||||||
fi
|
|
||||||
rm -rf /tmp/release_$REL/deployment_tasks.yaml
|
|
||||||
popd > /dev/null
|
|
||||||
|
|
||||||
echo Done.
|
|
||||||
echo
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ MidoNet open source version that will be deployed is v2015.06.
|
||||||
Midokura Enterprise Midonet (MEM) version that will be deployed is
|
Midokura Enterprise Midonet (MEM) version that will be deployed is
|
||||||
1.9.
|
1.9.
|
||||||
|
|
||||||
This plugin currently is only compatible with version 7.0 of Mirantis
|
This plugin currently is only compatible with version 8.0 of Mirantis
|
||||||
OpenStack Fuel.
|
OpenStack Fuel.
|
||||||
|
|
||||||
Problem description
|
Problem description
|
||||||
|
@ -41,14 +41,14 @@ What is new from the previous versions
|
||||||
======================================
|
======================================
|
||||||
|
|
||||||
This plugin was originally developed for Fuel 6.1, and there are some
|
This plugin was originally developed for Fuel 6.1, and there are some
|
||||||
important changes included in this plugin version for Fuel 7.0:
|
important changes included in this plugin version for Fuel 8.0:
|
||||||
|
|
||||||
- Regarding encapsulation methods, the plugin only supported GRE on
|
- Regarding encapsulation methods, the plugin only supported GRE on
|
||||||
previous versions. Now it supports both GRE and VxLAN.
|
previous versions. Now it supports both GRE and VxLAN.
|
||||||
|
|
||||||
- Regarding OS support, the plugin supported both CentOS 6.5 and
|
- Regarding OS support, the plugin supported both CentOS 6.5 and
|
||||||
Ubuntu 14.04 on previous versions. Now it only supports Ubuntu
|
Ubuntu 14.04 on previous versions. Now it only supports Ubuntu
|
||||||
14.04, since Fuel 7.0 itself only supports this OS version.
|
14.04, since Fuel 8.0 itself only supports this OS version.
|
||||||
|
|
||||||
Alternatives
|
Alternatives
|
||||||
------------
|
------------
|
||||||
|
@ -68,8 +68,8 @@ None.
|
||||||
Upgrade impact
|
Upgrade impact
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
This plugin is only compatible with Fuel 7.0. If an upgrade is performed
|
This plugin is only compatible with Fuel 8.0. If an upgrade is performed
|
||||||
on the Fuel Master node to Fuel version higher than 7.0, it could stop
|
on the Fuel Master node to Fuel version higher than 8.0, it could stop
|
||||||
working.
|
working.
|
||||||
|
|
||||||
Security impact
|
Security impact
|
||||||
|
@ -125,7 +125,7 @@ Work Items
|
||||||
Dependencies
|
Dependencies
|
||||||
============
|
============
|
||||||
|
|
||||||
* Fuel 7.0
|
* Fuel 8.0
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
=======
|
=======
|
||||||
|
|
194
tasks.yaml
|
@ -1,184 +1,26 @@
|
||||||
#
|
# Install the MidoNet dependencies
|
||||||
# Pre-deployment tasks
|
- role:
|
||||||
#
|
- primary-controller
|
||||||
|
- controller
|
||||||
# When the node is not the controller and we need to configure the public
|
- compute
|
||||||
# address of the node, somehow it fails saying that openvswitch is not
|
- nsdb
|
||||||
# installed. By creating the file '/etc/hiera/override/node/${::fqdn}.yaml and
|
- midonet-gw
|
||||||
# setting use_neutron:true on it we force that openvswitch will be installed by
|
stage: pre_deployment
|
||||||
# the l23network module. that does not mean that we will install neutron there.
|
|
||||||
- id: midonet_trick_l23network
|
|
||||||
role: [nsdb, compute, midonet-gw]
|
|
||||||
stage: pre_deployment/6001
|
|
||||||
required_for: [pre_deployment_end]
|
|
||||||
type: puppet
|
|
||||||
parameters:
|
|
||||||
puppet_manifest: puppet/manifests/midonet-trick-l23network.pp
|
|
||||||
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
|
||||||
timeout: 720
|
|
||||||
|
|
||||||
#
|
|
||||||
# Post-deployment tasks
|
|
||||||
#
|
|
||||||
|
|
||||||
# Configure the repositories and the puppet modules we need to deploy
|
|
||||||
# midonet on the nodes.
|
|
||||||
- id: midonet_install_dependencies
|
|
||||||
role: [primary-controller, controller, compute, nsdb, midonet-gw]
|
|
||||||
stage: post_deployment/1003
|
|
||||||
required_for: [post_deployment_end]
|
|
||||||
type: shell
|
type: shell
|
||||||
parameters:
|
parameters:
|
||||||
cmd: ./install_dependencies.sh
|
cmd: bash install_midonet_puppet_modules.sh
|
||||||
timeout: 1440
|
timeout: 1440
|
||||||
|
|
||||||
- id: midonet_install_repositories
|
# Override neutron params
|
||||||
role: [primary-controller, controller, compute, nsdb, midonet-gw]
|
- role:
|
||||||
stage: post_deployment/1004
|
- primary-controller
|
||||||
required_for: [post_deployment_end]
|
- controller
|
||||||
|
- compute
|
||||||
|
- nsdb
|
||||||
|
- midonet-gw
|
||||||
|
stage: pre_deployment
|
||||||
type: puppet
|
type: puppet
|
||||||
parameters:
|
parameters:
|
||||||
puppet_manifest: puppet/manifests/midonet-define-repositories.pp
|
puppet_manifest: puppet/manifests/midonet-override-hiera.pp
|
||||||
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
|
||||||
timeout: 720
|
|
||||||
|
|
||||||
# Enable IP forward in all the nodes that will install midolman agent
|
|
||||||
- id: midonet_enable_ip_forward
|
|
||||||
role: [nsdb, compute, controller, primary-controller]
|
|
||||||
stage: post_deployment/4400
|
|
||||||
required_for: [post_deployment_end]
|
|
||||||
type: puppet
|
|
||||||
parameters:
|
|
||||||
puppet_manifest: puppet/manifests/midonet-enable-ip-forward.pp
|
|
||||||
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
|
||||||
timeout: 720
|
|
||||||
|
|
||||||
# This task will install and configure the `nsdb` role (with zookeeper
|
|
||||||
# and cassandra)
|
|
||||||
- id: midonet_cassandra_and_zookeeper
|
|
||||||
role: [nsdb]
|
|
||||||
stage: post_deployment/6001
|
|
||||||
required_for: [deploy_end]
|
|
||||||
type: puppet
|
|
||||||
parameters:
|
|
||||||
puppet_manifest: puppet/manifests/midonet-nsdb.pp
|
|
||||||
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
||||||
timeout: 1440
|
timeout: 1440
|
||||||
|
|
||||||
# Only running on primary controller: since we can only set tasks on
|
|
||||||
# post-deployments, reaching this point means Neutron is deployed with
|
|
||||||
# ML2 plugin (the default one). This script cleans the networks created
|
|
||||||
# by the regular deployment.
|
|
||||||
- id: midonet_clean_neutron_db
|
|
||||||
role: [primary-controller]
|
|
||||||
stage: post_deployment/6400
|
|
||||||
type: shell
|
|
||||||
parameters:
|
|
||||||
cmd: ./clean_neutron.sh
|
|
||||||
timeout: 1440
|
|
||||||
fail_on_error: false
|
|
||||||
|
|
||||||
# Disable all the Neutron services: neutorn-server, l3-agent, dhcp-agent
|
|
||||||
# metadata-agent
|
|
||||||
- id: midonet_disable_services
|
|
||||||
role: [primary-controller, controller]
|
|
||||||
stage: post_deployment/6405
|
|
||||||
type: puppet
|
|
||||||
parameters:
|
|
||||||
puppet_manifest: puppet/manifests/midonet-disable-services.pp
|
|
||||||
puppet_modules: puppet/modules:/etc/puppet/modules
|
|
||||||
timeout: 720
|
|
||||||
|
|
||||||
# Deploy the midonet api in the controllers
|
|
||||||
- id: midonet_deploy_api
|
|
||||||
role: [primary-controller, controller]
|
|
||||||
stage: post_deployment/6410
|
|
||||||
type: puppet
|
|
||||||
parameters:
|
|
||||||
puppet_manifest: puppet/manifests/midonet-install-api.pp
|
|
||||||
puppet_modules: puppet/modules:/etc/puppet/modules/
|
|
||||||
timeout: 1440
|
|
||||||
|
|
||||||
# Install, configure and run MidoNet agent and remove any other
|
|
||||||
# openvswitch package which is not the Kernel module
|
|
||||||
- id: midonet_agent
|
|
||||||
role: [primary-controller, controller, compute, midonet-gw]
|
|
||||||
stage: post_deployment/6415
|
|
||||||
type: puppet
|
|
||||||
parameters:
|
|
||||||
puppet_manifest: puppet/manifests/midonet-install-agent.pp
|
|
||||||
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
|
||||||
timeout: 1440
|
|
||||||
|
|
||||||
# During deployment, openvswitch has created a datapath called `ovs-services`.
|
|
||||||
# Stop MidoNet agent, and clean the datapath, and run MidoNet agent again
|
|
||||||
- id: midonet_delete_datapaths
|
|
||||||
role: [primary-controller, controller, compute, midonet-gw]
|
|
||||||
stage: post_deployment/6420
|
|
||||||
type: puppet
|
|
||||||
parameters:
|
|
||||||
puppet_manifest: puppet/manifests/midonet-delete-datapaths.pp
|
|
||||||
puppet_modules: puppet/modules:/etc/puppet/modules
|
|
||||||
timeout: 720
|
|
||||||
|
|
||||||
# Install nova-rootwrap network filters
|
|
||||||
- id: midonet_nova_network
|
|
||||||
role: [compute]
|
|
||||||
stage: post_deployment/6421
|
|
||||||
type: puppet
|
|
||||||
parameters:
|
|
||||||
puppet_manifest: puppet/manifests/midonet-install-nova-network.pp
|
|
||||||
puppet_modules: puppet/modules:/etc/puppet/modules
|
|
||||||
timeout: 720
|
|
||||||
|
|
||||||
# Register any host that runs MidoNet agent to the default tunnelzone
|
|
||||||
- id: midonet_host_registry
|
|
||||||
role: [primary-controller, controller, compute, midonet-gw]
|
|
||||||
stage: post_deployment/6425
|
|
||||||
type: puppet
|
|
||||||
parameters:
|
|
||||||
puppet_manifest: puppet/manifests/midonet-host-registry.pp
|
|
||||||
puppet_modules: "puppet/modules/:/etc/puppet/modules/"
|
|
||||||
timeout: 720
|
|
||||||
|
|
||||||
# Reconfigure neturon files to run with MidoNet plugin
|
|
||||||
- id: midonet_reconfigure_neutron
|
|
||||||
role: [primary-controller, controller]
|
|
||||||
stage: post_deployment/6430
|
|
||||||
type: puppet
|
|
||||||
parameters:
|
|
||||||
puppet_manifest: puppet/manifests/midonet-reconfigure-neutron.pp
|
|
||||||
puppet_modules: puppet/modules:/etc/puppet/modules
|
|
||||||
timeout: 720
|
|
||||||
|
|
||||||
# Clean and run Neutron database. That may help if someday we need a MidoNet
|
|
||||||
# specific database table
|
|
||||||
- id: midonet_recreate_neutron_db
|
|
||||||
role: [primary-controller]
|
|
||||||
stage: post_deployment/6435
|
|
||||||
type: puppet
|
|
||||||
parameters:
|
|
||||||
puppet_manifest: puppet/manifests/midonet-recreate-neutron-db.pp
|
|
||||||
puppet_modules: puppet/modules:/etc/puppet/modules
|
|
||||||
timeout: 1440
|
|
||||||
|
|
||||||
# Recreate the default networks on Neutron database and restart Neutron
|
|
||||||
# services
|
|
||||||
- id: midonet_restart_neutron
|
|
||||||
role: [primary-controller, controller]
|
|
||||||
stage: post_deployment/6440
|
|
||||||
type: puppet
|
|
||||||
parameters:
|
|
||||||
puppet_manifest: puppet/manifests/midonet-restart-neutron.pp
|
|
||||||
puppet_modules: puppet/modules:/etc/puppet/modules
|
|
||||||
timeout: 720
|
|
||||||
|
|
||||||
# In Gateway node: register the node as the gateway of the deployment
|
|
||||||
- id: midonet_configure_gateway
|
|
||||||
role: [midonet-gw]
|
|
||||||
stage: post_deployment/6500
|
|
||||||
type: puppet
|
|
||||||
parameters:
|
|
||||||
puppet_manifest: puppet/manifests/midonet-gateway-bgp.pp
|
|
||||||
puppet_modules: puppet/modules:/etc/puppet/modules
|
|
||||||
timeout: 1440
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
volumes_roles_mapping:
|
||||||
|
nsdb:
|
||||||
|
- {allocate_size: "min", id: "os"}
|
||||||
|
- {allocate_size: "all", id: "vm"}
|
||||||
|
volumes: []
|