summaryrefslogtreecommitdiffstats
path: root/common/puppet-opnfv/manifests/external_net_presetup.pp
blob: 43866c14e7f7a7a7410d13b45ac332f711b6ad42 (plain)
1
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
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#Copyright 2015 Open Platform for NFV Project, Inc. and its contributors
#
#   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.

class opnfv::external_net_presetup {

  if $public_gateway == '' { fail('public_gateway is empty') }
  if $public_dns == '' { fail('public_dns is empty') }
  if $public_network == '' { fail('public_network is empty') }
  if $public_subnet == '' { fail('public_subnet is empty') }
  if $public_allocation_start == '' { fail('public_allocation_start is empty') }
  if $public_allocation_end == '' { fail('public_allocation_end is empty') }
  if !$controllers_hostnames_array { fail('controllers_hostnames_array is empty') }
  $controllers_hostnames_array_str = $controllers_hostnames_array
  $controllers_hostnames_array = split($controllers_hostnames_array, ',')

  if ($admin_network != '') and ($admin_network != 'false') {
    $admin_nic = get_nic_from_network("$admin_network")
    if $admin_nic == '' { fail('admin_nic was not found') }
    $admin_ip = get_ip_from_nic("admin_nic")
    $admin_netmask = get_netmask_from_nic("$admin_nic")
    #Modify ifcfg Admin network
    augeas { "main-$admin_nic":
        context => "/files/etc/sysconfig/network-scripts/ifcfg-$public_nic",
        changes => [
                "set IPADDR $admin_ip",
                "set NETMASK $admin_netmask",
                "rm GATEWAY",
                "rm DNS1",
                "set DEFROUTE no",
                "rm IPV6_DEFROUTE",
                "rm IPV6_PEERDNS",
                "rm IPV6_PEERROUTES",
                "rm PEERROUTES",
                "set PEERDNS no",
                "set BOOTPROTO static",
                "set IPV6INIT no",
                "set IPV6_AUTOCONF no",
                "set ONBOOT yes",

        ],
        before  => Exec['systemctl restart network'],
    }

  }

  if ($private_network != '') and ($private_network != 'false') {
    $private_nic = get_nic_from_network("$private_network")
    if $private_nic == '' { fail('private_nic was not found') }
    $private_ip = get_ip_from_nic("private_nic")
    $private_netmask = get_netmask_from_nic("$private_nic")
    #Modify ifcfg private network
    augeas { "main-$private_nic":
        context => "/files/etc/sysconfig/network-scripts/ifcfg-$private_nic",
        changes => [
                "set IPADDR $private_ip",
                "set NETMASK $private_netmask",
                "rm GATEWAY",
                "rm DNS1",
                "set DEFROUTE no",
                "rm IPV6_DEFROUTE",
                "rm IPV6_PEERDNS",
                "rm IPV6_PEERROUTES",
                "rm PEERROUTES",
                "set PEERDNS no",
                "set BOOTPROTO static",
                "set IPV6INIT no",
                "set IPV6_AUTOCONF no",
                "set ONBOOT yes",

        ],
        before  => Exec['systemctl restart network'],
    }

  }

  #find public NIC
  $public_nic = get_nic_from_network("$public_network")
  $public_nic_ip = get_ip_from_nic("$public_nic")
  $public_nic_netmask = get_netmask_from_nic("$public_nic")

 if ($public_nic == '') or ($public_nic_ip == '') or ($public_nic == "br-ex") or ($public_nic == "br_ex") {
  notify {"Skipping augeas, public_nic ${public_nic}, public_nic_ip ${public_nic_ip}":}

  exec {'ovs-vsctl -t 10 -- --may-exist add-br br-ex':
       path         => ["/usr/sbin/", "/usr/bin/"],
       unless       => 'ip addr show br-ex | grep "inet "',
       before       => Exec['restart-network-public-nic-ip'],
  }
  ~>
  exec {'systemctl restart network':
       path         => ["/usr/sbin/", "/usr/bin/"],
       refreshonly  => 'true',
  }

  exec {'restart-network-public-nic-ip':
       command      => 'systemctl restart network',
       path         => ["/usr/sbin/", "/usr/bin/"],
       onlyif       => 'ip addr show | grep $(ip addr show br-ex | grep -Eo "inet [\.0-9]+" | cut -d " " -f2) | grep -v br-ex',
  }

 } else {
  #reconfigure public interface to be ovsport
  augeas { "main-$public_nic":
        context => "/files/etc/sysconfig/network-scripts/ifcfg-$public_nic",
        changes => [
                "rm IPADDR",
                "rm NETMASK",
                "rm GATEWAY",
                "rm DNS1",
                "rm BOOTPROTO",
                "rm DEFROUTE",
                "rm IPV6_DEFROUTE",
                "rm IPV6_PEERDNS",
                "rm IPV6_PEERROUTES",
                "rm PEERROUTES",
                "set PEERDNS no",
                "set BOOTPROTO static",
                "set IPV6INIT no",
                "set IPV6_AUTOCONF no",
                "set ONBOOT yes",
                "set TYPE OVSPort",
                "set OVS_BRIDGE br-ex",
                "set PROMISC yes"

        ],
        before  => Class["quickstack::pacemaker::params"],
        require => Service["openvswitch"],
  }

  ->
  #create br-ex interface
  file { 'external_bridge':
        path => '/etc/sysconfig/network-scripts/ifcfg-br-ex',
        owner   => 'root',
        group   => 'root',
        mode    => '0644',
        content => template('opnfv/br_ex.erb'),
        before  => Class["quickstack::pacemaker::params"],
  }
  ->
  exec {'ovs-vsctl -t 10 -- --may-exist add-br br-ex':
       path         => ["/usr/sbin/", "/usr/bin/"],
  }
  ~>
  exec {'systemctl restart network':
       path         => ["/usr/sbin/", "/usr/bin/"],
       refreshonly  => 'true',
  }

 }
}