Puppet Class: openstack::profile::neutron::router

Defined in:
manifests/profile/neutron/router.pp

Overview

The profile to set up a neutron ovs network router



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'manifests/profile/neutron/router.pp', line 2

class openstack::profile::neutron::router {
  Exec { 
    path => '/usr/bin:/usr/sbin:/bin:/sbin', 
    require => Class['openstack::profile::neutron::common'],
  } 
  
  ::sysctl::value { 'net.ipv4.ip_forward': 
    value     => '1',
  }

  $controller_management_address = hiera('openstack::controller::address::management')
  include ::openstack::common::neutron
  include ::openstack::common::ovs

  ### Router service installation
  class { '::neutron::agents::l3':
    debug                   => hiera('openstack::debug'),
    external_network_bridge => 'brex',
    enabled                 => true,
  }

  class { '::neutron::agents::dhcp':
    debug   => hiera('openstack::debug'),
    enabled => true,
  }

  class { '::neutron::agents::metadata':
    auth_password => hiera('openstack::neutron::password'),
    shared_secret => hiera('openstack::neutron::shared_secret'),
    auth_url      => "http://${controller_management_address}:35357/v2.0",
    debug         => hiera('openstack::debug'),
    auth_region   => hiera('openstack::region'),
    metadata_ip   => $controller_management_address,
    enabled       => true,
  }

  class { '::neutron::agents::lbaas':
    debug   => hiera('openstack::debug'),
    enabled => true,
  }

  class { '::neutron::agents::vpnaas':
    enabled => true,
  }

  class { '::neutron::agents::metering':
    enabled => true,
  }

  class { '::neutron::services::fwaas':
    enabled => true,
  }

  # Temporarily fix a bug on RHEL packaging
  if $::osfamily == 'RedHat' {
    file { '/usr/lib/python2.6/site-packages/neutronclient/client.py':
      ensure  => present,
      source  => 'puppet:///modules/openstack/client.py',
      mode    => '0644',
      notify  => Service['neutron-metadata-agent'],
      require => Package['openstack-neutron'],
    }
  }

  $external_bridge = 'brex'
  $external_network = hiera('openstack::network::external')
  $external_device = device_for_network($external_network)
  vs_bridge { $external_bridge:
    ensure => present,
  }
  if $external_device != $external_bridge {
    vs_port { $external_device:
      ensure  => present,
      bridge  => $external_bridge,
      keep_ip => true,
    }
  } else {
    # External bridge already has the external device's IP, thus the external
    # device has already been linked
  }
}