blob: a452166d6f5cdf9ee30cf6f6a6a0865b1ff9d44e (
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
|
---
- hosts: localhost
vars_files:
- "/etc/openstack/neutron.conf"
tasks:
- name: Create the neutron user.
user: name=neutron comment="Openstack Neutron Daemons" shell=/sbin/nologin home=/var/lib/neutron
- name: Create the /var folders for neutron
file: path={{ item }} state=directory owner=neutron group=neutron
with_items:
- /var/run/neutron
- /var/lock/neutron
- /var/log/neutron
- name: Get service tenant id needed in neutron.conf
shell: |
keystone \
--os-endpoint http://{{ CONTROLLER_HOST_ADDRESS }}:35357/v2.0 \
--os-token {{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }} \
tenant-get service | grep id | tr -d " " | cut -d"|" -f3
register: tenant_service_id
- set_fact: SERVICE_TENANT_ID={{ tenant_service_id.stdout }}
- name: Create the directories needed for Neutron configuration files.
file: path=/etc/{{ item }} state=directory
with_lines:
- (cd /usr/share/openstack && find neutron -type d)
- name: Add configuration needed for neutron using templates
template: src=/usr/share/openstack/{{ item }} dest=/etc/{{ item }}
with_lines:
- (cd /usr/share/openstack && find neutron -type f)
- keystone_user: >
user={{ NEUTRON_SERVICE_USER }}
password={{ NEUTRON_SERVICE_PASSWORD }}
tenant=service
token={{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}
- keystone_user: >
role=admin
user={{ NEUTRON_SERVICE_USER }}
tenant=service
token={{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}
- keystone_service: >
name=neutron
type=network
description="Openstack Compute Networking"
publicurl=http://{{ CONTROLLER_HOST_ADDRESS }}:9696
internalurl=http://{{ CONTROLLER_HOST_ADDRESS }}:9696
adminurl=http://{{ CONTROLLER_HOST_ADDRESS }}:9696
region='regionOne'
token={{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}
- postgresql_user: name={{ NEUTRON_DB_USER }} password={{ NEUTRON_DB_PASSWORD }}
sudo: yes
sudo_user: neutron
- postgresql_db: name=neutron owner={{ NEUTRON_DB_USER }}
sudo: yes
sudo_user: neutron
- shell: |
neutron neutron-db-manage \
--config-file /etc/neutron/neutron.conf \
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini \
upgrade juno
sudo: yes
sudo_user: neutron
# Create the bridges to use the External network mapped
# This configuration is for 1 node and it was taken from:
# https://fosskb.wordpress.com/2014/10/18/openstack-juno-on-ubuntu-14-10/
# and https://fosskb.wordpress.com/2014/06/10/managing-openstack-internaldataexternal-network-in-one-interface/
- name: Get the name of the network device
shell: |
ip addr | perl -pe 'if (/^\d+: ([^:]+)/) { $iface=$1; } if (m@^\s*inet ([^/]+)/@) { print "$iface $1\n"; } $_=undef;' | grep "^e" | head -1 | awk '{ print $1 } '
register: eth_dev
- name: Disable dhcp on the bound physical interface
template: >
src=/usr/share/openstack/extras/00-disable-device.network
dest=/etc/systemd/network/00-disable-{{ eth_dev.stdout }}-config.network
register:
- eth_dev_disabled
- name: Get ip of the network device only if dhcp wasn't disabled
shell: |
ip addr | perl -pe 'if (/^\d+: ([^:]+)/) { $iface=$1; } if (m@^\s*inet ([^/]+)/@) { print "$iface $1\n"; } $_=undef;' | grep "^e" | head -1 | awk '{ print $2 } '
register: eth_ip
when: eth_dev_disabled|changed
- name: >
Deallocate ip address for external interface so we don't try to route
connections out of an interface that not longer works. Run only when
dhcp wasn't disabled for that interface
- shell: ip addr del {{ eth_ip.stdout }} dev {{ eth_dev.stdout }}
when: eth_dev_disabled|changed
- name: Disable dhcp on all the internal interfaces
template: >
src=/usr/share/openstack/extras/00-disable-device.network
dest=/etc/systemd/network/00-disable-{{ item }}-config.network
with_items:
- eth_dev.stdout
- br-eth1
- br-ex
- eth1-br-proxy
- proxy-br-eth1
- proxy-br-ex
- ovs-system
- name: Restart networkd so it understands to not bring up the interfaces disabled
service: name=systemd-networkd.service state=restarted
#ovs-vsctl \
# -- add-br br-eth0 \
# -- add-port br-eth0 $eth_dev \
# -- set bridge br-eth0 other-config:hwaddr=$eth_mac
#
- name: Get mac of the network device only if dhcp wasn't disabled
shell: ip link show {{ eth_dev.stdout }} | sed -r 's/\s+/\n/g' | sed -n '/link\/ether/{n;p}'
register: eth_mac
when: eth_dev_disabled|changed
- openvswitch_bridge: bridge=br-eth0 state=present
- openvswitch_port: bridge=br-eth0 port={{ eht_dev.stdout }} state=present
- shell: ovs_vsctl set bridge br-eth0 other-config:hwaddr={{ eth_mac.stdout }}
when: eth_dev_disabled|changed
- name: Enable dhcp on the Open vSwitch device that replaces our external interface
template: >
src=/usr/share/openstack/extras/10-device-dhcp.network
dest=/etc/systemd/network/10-{{ item }}-dhcp.network
with_items:
- br-eth0
- name: Restart networkd again so it will DHCP in the Open vSwitch interface
service: name=systemd-networkd.service state=restarted
#ovs-vsctl \
# -- add-br br-eth1 \
# -- add-port br-eth1 eth1-br-proxy \
# -- set interface eth1-br-proxy type=patch options:peer=proxy-br-eth1 \
# -- add-port br-eth0 proxy-br-eth1 \
# -- set interface proxy-br-eth1 type=patch options:peer=eth1-br-proxy \
# -- add-br br-ex \
# -- add-port br-ex ex-br-proxy \
# -- set interface ex-br-proxy type=patch options:peer=proxy-br-ex \
# -- add-port br-eth0 proxy-br-ex \
# -- set interface proxy-br-ex type=patch options:peer=ex-br-proxy
- openvswitch_bridge: bridge=br-eth1 state=present
- openvswitch_port: bridge=br-eth1 port=eth1-br-proxy state=present
- shell: ovs-vsctl set interface eth1-br-proxy type=patch options:peer=proxy-br-eth1
- openvswitch_port: bridge=br-eth0 port=proxy-br-eth1 state=present
- shell: ovs-vsctl set interface proxy-br-eth1 type=patch options:peer=eth1-br-proxy \
- openvswitch_bridge: bridge=br-ex state=present
- openvswitch_port: bridge=br-ex port=ex-br-proxy state=present
- shell: ovs-vsctl set interface ex-br-proxy type=patch options:peer=proxy-br-ex
- openvswitch_port: bridge=br-eth0 port=proxy-br-ex state=present
- shell: ovs-vsctl set interface proxy-br-ex type=patch options:peer=ex-br-proxy \
## SERVICES
- name: Enable and start openstack-keystone service
service: name=openstack-keystone.service enabled=yes state=started
|