Adapt metadata and params to Fuel 7.0

Added python-neutron-plugin-midonet to Ubuntu repository

Also deleted the same package for CentOS, since it's not supported for
Fuel 7.0

Install Kilo instead of Juno

Edited several manifest to adapt it to Fuel 7.0

Added new tasks and roles files for Fuel 7.0

These files were not available for previous Fuel versions

Minor changes in environment_config and tasks files

Change-Id: Ib99c4b955fb709c1e05d395a6085d8435f8a36da
This commit is contained in:
Carmela Rubinos 2016-01-13 12:16:45 +01:00
parent b1b8e68431
commit 4a57eb3af5
20 changed files with 173 additions and 150 deletions

View File

@ -2,6 +2,6 @@ start on runlevel [123456]
stop on shutdown
script
puppet apply --modulepath=/etc/fuel/plugins/midonet-fuel-plugin-2.2/puppet/modules:/etc/puppet/modules /etc/fuel/plugins/midonet-fuel-plugin-2.2/puppet/manifests/midonet-gateway-bgp.pp
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
end script

View File

@ -34,9 +34,9 @@ if $mem {
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-juno/stable/RHEL",
midonet_openstack_repo => "http://${mem_user}:${mem_password}@yum.midokura.com/repo/openstack-kilo/stable/RHEL",
midonet_stage => '',
openstack_release => 'juno'
openstack_release => 'kilo'
}
}
'Ubuntu': {
@ -47,9 +47,9 @@ if $mem {
class { '::midonet::repository':
midonet_repo => "http://${mem_user}:${mem_password}@apt.midokura.com/midonet/${mem_version}/stable",
manage_distro_repo => false,
midonet_openstack_repo => "http://${mem_user}:${mem_password}@apt.midokura.com/openstack/juno/stable",
midonet_openstack_repo => "http://${mem_user}:${mem_password}@apt.midokura.com/openstack/kilo/stable",
midonet_stage => 'trusty',
openstack_release => 'juno'
openstack_release => 'kilo'
}
}
}
@ -59,15 +59,16 @@ if $mem {
class { '::midonet::repository':
midonet_repo => "http://repo.midonet.org/midonet/${oss_version}/RHEL",
manage_distro_repo => false,
openstack_release => 'juno'
openstack_release => 'kilo'
}
}
'Ubuntu': {
class { '::midonet::repository':
midonet_repo => "http://repo.midonet.org/midonet/${oss_version}",
manage_distro_repo => false,
openstack_release => 'juno'
openstack_release => 'kilo'
}
}
}
}

View File

@ -25,3 +25,4 @@ exec {'sleep 3':
exec {'service midolman start':
path => $service_path
}

View File

@ -1,5 +1,6 @@
$nodes_hash = hiera('nodes', {})
$roles = node_roles($nodes_hash, hiera('uid'))
# Extract hiera data
$network_metadata = hiera_hash('network_metadata')
$roles = $network_metadata['nodes']["$::hostname"]['node_roles']
$ovs_agent_name = $operatingsystem ? {
'CentOS' => 'neutron-openvswitch-agent',

View File

@ -1,18 +1,19 @@
$fuel_settings = parseyaml($astute_settings_yaml)
$management_address = hiera('management_vip')
$username = $fuel_settings['access']['user']
$password = $fuel_settings['access']['password']
$tenant_name = $fuel_settings['access']['tenant']
$midonet_settings = $fuel_settings['midonet-fuel-plugin']
$gateway_nodes = filter_nodes($fuel_settings['nodes'], 'role', 'midonet-gw')
$gateways_hash_ips = nodes_to_hash($gateway_nodes, 'name', 'public_address')
$gw_ip = $gateways_hash_ips[$::hostname]
$gateways_hash_mask = nodes_to_hash($gateway_nodes, 'name', 'public_netmask')
$gw_mask = $gateways_hash_mask[$::hostname]
$net_hash = public_network_hash($gw_ip, $gw_mask)
$access_data = hiera_hash('access')
$username = $access_data['user']
$password = $access_data['password']
$tenant_name = $access_data['tenant']
$midonet_settings = hiera_hash('midonet-fuel-plugin')
$f_net_cidr = split($midonet_settings['floating_cidr'], '/')
$remote_peers = generate_remote_peers($midonet_settings)
$nodes_hash = hiera('nodes')
$node = filter_nodes($nodes_hash, 'fqdn', $::fqdn)
$gw_ip = $node[0]['public_address']
$gw_mask = $node[0]['public_netmask']
$net_hash = public_network_hash($gw_ip, $gw_mask)
notify {"peers":
message => "floating neeet si $remote_peers"
}
@ -61,7 +62,7 @@ exec {"set up external bridge":
file {"/etc/init/midonet-network.conf":
ensure => present,
source => "/etc/fuel/plugins/midonet-fuel-plugin-2.2/puppet/files/startup.conf"
source => "/etc/fuel/plugins/midonet-fuel-plugin-3.0/puppet/files/startup.conf"
} ->
midonet_gateway { $::fqdn:

View File

@ -1,10 +1,13 @@
$fuel_settings = parseyaml($astute_settings_yaml)
$api_ip = $::fuel_settings['management_vip']
# Extract data from hiera
$api_ip = hiera('management_vip')
$access_data = hiera_hash('access')
$username = $access_data['user']
$password = $access_data['password']
$tenant_name = $access_data['tenant']
$tz_type = $::fuel_settings['midonet-fuel-plugin']['tunnel_type']
$username = $fuel_settings['access']['user']
$password = $fuel_settings['access']['password']
$tenant_name = $fuel_settings['access']['tenant']
# Plugin settings data
$midonet_settings = hiera_hash('midonet-fuel-plugin')
$tz_type = $midonet_settings['tunnel_type']
$service_path = $operatingsystem ? {
'CentOS' => '/sbin',

View File

@ -1,13 +1,16 @@
$fuel_settings = parseyaml($astute_settings_yaml)
$all_nodes = $fuel_settings['nodes']
$nsdb_nodes = filter_nodes($all_nodes, 'role', 'nsdb')
$zoo_ips = generate_api_zookeeper_ips($nsdb_nodes)
$cass_hash = nodes_to_hash($nsdb_nodes, 'name', 'internal_address')
$api_ip = $::fuel_settings['management_vip']
$username = $fuel_settings['access']['user']
$password = $fuel_settings['access']['password']
$tenant_name = $fuel_settings['access']['tenant']
# Extract data from hiera
$network_metadata = hiera_hash('network_metadata')
$neutron_config = hiera_hash('neutron_config')
$segmentation_type = $neutron_config['L2']['segmentation_type']
$nsdb_hash = get_nodes_hash_by_roles($network_metadata, ['nsdb'])
$nsdb_mgmt_ips = get_node_to_ipaddr_map_by_network_role($nsdb_hash, 'management')
$zoo_ips_hash = generate_api_zookeeper_ips(values($nsdb_mgmt_ips))
$cass_ips = values($nsdb_mgmt_ips)
$api_ip = hiera('management_vip')
$access_data = hiera_hash('access')
$username = $access_data['user']
$password = $access_data['password']
$tenant_name = $access_data['tenant']
$ovsdb_service_name = $operatingsystem ? {
'CentOS' => 'openvswitch',
@ -38,8 +41,8 @@ package {$openvswitch_package:
} ->
class {'::midonet::midonet_agent':
zk_servers => $zoo_ips,
cassandra_seeds => values($cass_hash),
zk_servers => $zoo_ips_hash,
cassandra_seeds => $cass_ips
} ->
class {'::midonet::midonet_cli':
@ -48,3 +51,15 @@ class {'::midonet::midonet_cli':
password => $password,
tenant_name => $tenant_name,
}
# Firewall rule to allow the udp port used for vxlan tunnelling of overlay
# traffic from midolman hosts to other midolman hosts.
if $segmentation_type =='tun' {
firewall {'6677 vxlan port':
port => '6677',
proto => 'udp',
action => 'accept',
}
}

View File

@ -1,19 +1,24 @@
$fuel_settings = parseyaml($astute_settings_yaml)
$all_nodes = $fuel_settings['nodes']
$nsdb_nodes = filter_nodes($all_nodes, 'role', 'nsdb')
$zoo_ips = generate_api_zookeeper_ips($nsdb_nodes)
$primary_controller_nodes = filter_nodes($all_nodes, 'role', 'primary-controller')
$controllers = concat($primary_controller_nodes, filter_nodes($all_nodes, 'role', 'controller'))
# Extract data from hiera
$network_metadata = hiera_hash('network_metadata')
$controllers_map = get_nodes_hash_by_roles($network_metadata, ['controller', 'primary-controller'])
$controllers_mgmt_ips = get_node_to_ipaddr_map_by_network_role($controllers_map, 'management')
$nsdb_hash = get_nodes_hash_by_roles($network_metadata, ['nsdb'])
$nsdb_mgmt_ips = get_node_to_ipaddr_map_by_network_role($nsdb_hash, 'management')
$zoo_ips_hash = generate_api_zookeeper_ips(values($nsdb_mgmt_ips))
$management_vip = hiera('management_vip')
$public_vip = hiera('public_vip')
$keystone_data = hiera_hash('keystone')
$access_data = hiera_hash('access')
$public_ssl_hash = hiera('public_ssl')
class {'::midonet::midonet_api':
zk_servers => $zoo_ips,
zk_servers => $zoo_ips_hash,
keystone_auth => true,
keystone_host => $::fuel_settings['management_vip'],
keystone_admin_token => $::fuel_settings['keystone']['admin_token'],
keystone_tenant_name => $::fuel_settings['access']['tenant'],
keystone_host => $management_vip,
keystone_admin_token => $keystone_data['admin_token'],
keystone_tenant_name => $access_data['tenant'],
bind_address => $::ipaddress_br_mgmt,
api_ip => $::fuel_settings['public_vip'],
api_ip => $public_vip,
api_port => '8081',
}
@ -22,10 +27,10 @@ Haproxy::Service { use_include => true }
Haproxy::Balancermember { use_include => true }
Openstack::Ha::Haproxy_service {
server_names => filter_hash($controllers, 'name'),
ipaddresses => filter_hash($controllers, 'internal_address'),
public_virtual_ip => $::fuel_settings['public_vip'],
internal_virtual_ip => $::fuel_settings['management_vip'],
server_names => keys($controllers_mgmt_ips),
ipaddresses => values($controllers_mgmt_ips),
public_virtual_ip => $public_vip,
internal_virtual_ip => $management_vip
}
openstack::ha::haproxy_service { 'midonetapi':

View File

@ -12,11 +12,12 @@
# License for the specific language governing permissions and limitations
# under the License.
$fuel_settings = parseyaml($astute_settings_yaml)
$all_nodes = $fuel_settings['nodes']
$nsdb_nodes = filter_nodes($all_nodes, 'role', 'nsdb')
$zoo_hash = generate_zookeeper_hash($nsdb_nodes)
$cass_hash = nodes_to_hash($nsdb_nodes, 'name', 'internal_address')
# Extract data from hiera
$fuel_settings = parseyaml($astute_settings_yaml)
$network_metadata = hiera_hash('network_metadata')
$nsdb_map = get_nodes_hash_by_roles($network_metadata, ['nsdb'])
$zoo_hash = generate_zookeeper_hash($nsdb_map)
$nsdb_mgmt_map = get_node_to_ipaddr_map_by_network_role($nsdb_map, 'management')
class {'::zookeeper':
servers => values($zoo_hash),
@ -25,8 +26,8 @@ class {'::zookeeper':
}
class {'::cassandra':
seeds => values($cass_hash),
seed_address => $cass_hash["${::hostname}"],
seeds => values($nsdb_mgmt_map),
seed_address => $nsdb_mgmt_map["${::hostname}"]
}
firewall {'500 zookeeper ports':

View File

@ -1,63 +1,16 @@
$fuel_settings = parseyaml($astute_settings_yaml)
$address = hiera('management_vip')
# amqp settings
$controllers = hiera('controllers')
$controller_internal_addresses = nodes_to_hash($controllers,'name','internal_address')
$controller_nodes = ipsort(values($controller_internal_addresses))
$internal_address = hiera('internal_address')
if $internal_address in $controller_nodes {
# prefer local MQ broker if it exists on this node
$amqp_nodes = concat(['127.0.0.1'], fqdn_rotate(delete($controller_nodes, $internal_address)))
} else {
$amqp_nodes = fqdn_rotate($controller_nodes)
}
$amqp_port = '5673'
$amqp_hosts = inline_template("<%= @amqp_nodes.map {|x| x + ':' + @amqp_port}.join ',' %>")
$rabbit_hash = hiera('rabbit_hash', {})
$service_endpoint = hiera('management_vip')
# 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']
ensure_resource('file', '/etc/neutron/plugins/midonet', {
ensure => directory,
owner => 'root',
group => 'neutron',
mode => '0640'}
)
neutron_plugin_midonet {
'MIDONET/midonet_uri': value => "http://${address}:8081/midonet-api";
'MIDONET/username': value => $fuel_settings['access']['user'];
'MIDONET/password': value => $fuel_settings['access']['password'];
'MIDONET/project_id': value => $fuel_settings['access']['tenant'];
} ->
package {'python-neutron-plugin-midonet':
ensure => present
}
if $::osfamily == 'Debian' {
file_line { '/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG':
path => '/etc/default/neutron-server',
match => '^NEUTRON_PLUGIN_CONFIG=(.*)$',
line => "NEUTRON_PLUGIN_CONFIG=/etc/neutron/plugins/midonet/midonet.ini",
notify => Service['neutron-server'],
}
}
# In RH, this link is used to start Neutron process but in Debian, it's used only
# to manage database synchronization.
if defined(File['/etc/neutron/plugin.ini']) {
File <| path == '/etc/neutron/plugin.ini' |> { target => '/etc/neutron/plugins/midonet/midonet.ini' }
}
else {
file {'/etc/neutron/plugin.ini':
ensure => link,
target => '/etc/neutron/plugins/midonet/midonet.ini'
}
}
# 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,
@ -65,7 +18,7 @@ class {'::neutron':
use_syslog => false,
log_facility => 'LOG_USER',
base_mac => 'fa:16:3e:00:00:00',
core_plugin => 'midonet.neutron.plugin.MidonetPluginV2',
core_plugin => 'neutron.plugins.midonet.plugin.MidonetPluginV2',
service_plugins => [],
allow_overlapping_ips => true,
mac_generation_retries => 32,
@ -74,13 +27,21 @@ class {'::neutron':
report_interval => 5,
rabbit_user => $rabbit_hash['user'],
rabbit_host => ['localhost'],
rabbit_hosts => [$amqp_hosts],
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,

View File

@ -1,17 +1,19 @@
$fuel_settings = parseyaml($astute_settings_yaml)
$access_hash = hiera('access', {})
$keystone_admin_tenant = $access_hash[tenant]
$neutron_settings = hiera('quantum_settings')
$nets = $neutron_settings['predefined_networks']
# 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']
$nodes_hash = hiera('nodes', {})
$roles = node_roles($nodes_hash, hiera('uid'))
# 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']
$segment_id = $nets['net04']['L2']['segment_id']
$vm_net_l3 = $nets['net04']['L3']
$midonet_settings = $::fuel_settings['midonet-fuel-plugin']
$tz_type = $midonet_settings['tunnel_type']
$vm_net = { shared => false,
"L2" => { network_type => $tz_type,
router_ext => false,
@ -22,15 +24,13 @@ $vm_net = { shared => false,
tenant => 'admin'
}
$range_start = $midonet_settings['floating_ip_range_start']
$range_end = $midonet_settings['floating_ip_range_end']
$allocation_pools = "start=$range_start,end=$range_end"
service { 'neutron-server':
ensure => running,
}
if member($roles, 'primary-controller') {
if member($node_roles, 'primary-controller') {
exec {'refresh-dhcp-agent':
command => 'crm resource start p_neutron-dhcp-agent',
path => '/usr/bin:/usr/sbin',

View File

@ -20,7 +20,7 @@ module Puppet::Parser::Functions
result = []
nodes_hash = argv[0]
nodes_hash.each do |zk_ip|
result.push({'ip' => zk_ip['internal_address']})
result.push({'ip' => zk_ip})
end
return result
end

View File

@ -19,12 +19,10 @@ module Puppet::Parser::Functions
) do |argv|
nodes_hash = argv[0]
result = {}
sorted_ctrls = nodes_hash
sorted_ctrls.sort! {|a,b| a['uid'].to_i <=> b['uid'].to_i}
sorted_ctrls.each do |ctrl|
result[ctrl['fqdn']] = { 'host' => ctrl['internal_address'],
'id' => (sorted_ctrls.index(ctrl)+1).to_s
}
nodes_hash.each do |ctrl|
result[ctrl[1]['fqdn']] = { 'host' => ctrl[1]['network_roles']['management'],
'id' => (nodes_hash.keys().index(ctrl).to_i + 1).to_s
}
end
return result
end

17
deployment_tasks.yaml Normal file
View File

@ -0,0 +1,17 @@
- id: mido-nsdb
type: group
role: [nsdb]
requires: []
required_for: [pre_deployment_end]
parameters:
strategy:
type: parallel
- id: midonet-gw
type: group
role: [midonet-gw]
requires: [deploy_start]
required_for: [deploy_end]
parameters:
strategy:
type: parallel

View File

@ -1,7 +1,7 @@
attributes:
metadata:
restrictions:
- condition: cluster:net_provider != 'neutron' or networking_parameters:segmentation_type != 'gre'
- condition: cluster:net_provider != 'neutron'
action: hide
mem:
value: false

View File

@ -1,23 +1,23 @@
name: midonet-fuel-plugin
title: Neutron Midonet plugin
version: 2.2.0
version: 3.0.0
description: Enable to use plugin Midonet for Neutron
fuel_version: ['6.1']
fuel_version: ['7.0']
releases:
- os: ubuntu
version: 2014.2.2-6.1
version: 2015.1.0-7.0
mode: ['ha', 'multinode']
deployment_scripts_path: deployment_scripts/
repository_path: repositories/ubuntu
- os: centos
version: 2014.2.2-6.1
version: 2015.1.0-7.0
mode: ['ha', 'multinode']
deployment_scripts_path: deployment_scripts/
repository_path: repositories/centos
package_version: '2.0.0'
package_version: '3.0.0'
licenses: ['Apache 2.0']
authors: ['Lucas Eznarriaga <lucas@midokura.com>, Midokura',
'Jaume Devesa <jaume@midokura.com>, Midokura',
'Carmela Rubinos <carmela@midokura.com>, Midokura']
homepage: https://github.com/stackforge/fuel-plugin-midonet
homepage: 'https://github.com/stackforge/fuel-plugin-midonet'
groups: ['network']

19
node_roles.yaml Normal file
View File

@ -0,0 +1,19 @@
mido-nsdb:
name: 'mido-nsdb'
description: "Network State Database for MidoNet"
has_primary: false
public_ip_required: false
weight: 100
volumes_roles_mapping:
- allocate_size: min
id: os
midonet-gw:
name: 'midonet-gw'
description: "MidoNet HA Gateway"
has_primary: true
public_ip_required: true
weight: 101
volumes_roles_mapping:
- allocate_size: min
id: os

View File

@ -152,7 +152,7 @@
timeout: 720
# Clean and run Neutron database. That may help if someday we need a MidoNet
# specific database table (like in v2.0 we will need, the `tasks` one)
# specific database table
- id: midonet_recreate_neutron_db
role: [primary-controller]
stage: post_deployment/6435