Puppet Class: neutron::plugins::midonet

Defined in:
manifests/plugins/midonet.pp

Overview

Class: midonet::neutron_plugin

Install and configure Midonet Neutron Plugin. Please note that this manifest does not install the ‘python-neutron-midonet-plugin’ package, it only configures Neutron to do so needed for this deployment. Check out the MidoNet module to do so.

Parameters

midonet_api_ip

IP address of the MidoNet api service

midonet_api_port

IP address of the MidoNet port service. MidoNet runs in a Tomcat, so 8080 is used by default.

keystone_username

Username from which midonet api will authenticate against Keystone (neutron service is desirable and defaulted)

keystone_password

Password from which midonet api will authenticate against Keystone

keystone_tenant

Tenant from which midonet api will authenticate against Keystone (services tenant is desirable and defaulted)

sync_db

Whether ‘midonet-db-manage’ should run to create and/or syncrhonize the database with MidoNet specific tables. Defaults to false

Examples

An example call would be:

class {'neutron:plugins::midonet':
    midonet_api_ip    => '23.123.5.32',
    midonet_api_port  => '8080',
    keystone_username => 'neutron',
    keystone_password => '32kjaxT0k3na',
    keystone_tenant   => 'services',
    sync_db           => true
}

You can alternatively use the Hiera’s yaml style:

neutron::plugin::midonet::midonet_api_ip: '23.213.5.32'
neutron::plugin::midonet::port: '8080'
neutron::plugin::midonet::keystone_username: 'neutron'
neutron::plugin::midonet::keystone_password: '32.kjaxT0k3na'
neutron::plugin::midonet::keystone_tenant: 'services'
neutron::plugin::midonet::sync_db: true

Authors

Midonet (MidoNet.org)

Copyright © 2015 Midokura SARL, All Rights Reserved.

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.

Parameters:

  • midonet_api_ip (Any) (defaults to: '127.0.0.1')
  • midonet_api_port (Any) (defaults to: '8080')
  • keystone_username (Any) (defaults to: 'neutron')
  • keystone_password (Any) (defaults to: undef)
  • keystone_tenant (Any) (defaults to: 'services')
  • sync_db (Any) (defaults to: false)


68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# File 'manifests/plugins/midonet.pp', line 68

class neutron::plugins::midonet (
  $midonet_api_ip    = '127.0.0.1',
  $midonet_api_port  = '8080',
  $keystone_username = 'neutron',
  $keystone_password = undef,
  $keystone_tenant   = 'services',
  $sync_db           = false
) {

  include ::neutron::params

  Neutron_plugin_midonet<||> ~> Service['neutron-server']

  ensure_resource('file', '/etc/neutron/plugins/midonet', {
    ensure => directory,
    owner  => 'root',
    group  => 'neutron',
    mode   => '0640'}
  )

  # Ensure the neutron package is installed before config is set
  # under both RHEL and Ubuntu
  if ($::neutron::params::server_package) {
    Package['neutron-server'] -> Neutron_plugin_midonet<||>
  } else {
    Package['neutron'] -> Neutron_plugin_midonet<||>
  }

  # Although this manifest does not install midonet plugin package because it
  # is not available in common distro repos, this statement forces you to
  # have an orchestrator/wrapper manifest that does that job.
  Package[$::neutron::params::midonet_server_package] -> Neutron_plugin_midonet<||>

  neutron_plugin_midonet {
    'MIDONET/midonet_uri':  value => "http://${midonet_api_ip}:${midonet_api_port}/midonet-api";
    'MIDONET/username':     value => $keystone_username;
    'MIDONET/password':     value => $keystone_password, secret =>true;
    'MIDONET/project_id':   value => $keystone_tenant;
  }

  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=${::neutron::params::midonet_config_file}",
      require => [ Package['neutron-server'], Package[$::neutron::params::midonet_server_package] ],
      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 => $::neutron::params::midonet_config_file }
  }
  else {
    file {'/etc/neutron/plugin.ini':
      ensure  => link,
      target  => $::neutron::params::midonet_config_file,
      require => Package[$::neutron::params::midonet_server_package]
    }
  }

  if $sync_db {

    Package<| title == $::neutron::params::midonet_server_package |> ~> Exec['midonet-db-sync']

    exec { 'midonet-db-sync':
      command     => 'midonet-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini upgrade head',
      path        => '/usr/bin',
      before      => Service['neutron-server'],
      subscribe   => Neutron_config['database/connection'],
      refreshonly => true
    }
  }
}