diff options
author | Francisco Redondo Marchena <francisco.marchena@codethink.co.uk> | 2015-04-14 13:10:36 +0000 |
---|---|---|
committer | Francisco Redondo Marchena <francisco.marchena@codethink.co.uk> | 2015-04-14 15:26:43 +0000 |
commit | d0a39c67180aa0bc463d05d3cfefcd3387c8f5a5 (patch) | |
tree | b6577c87c78fd4b704dabb1afaf72d6912f8f003 | |
parent | dbb91b5be1d5634dfc6ec899bbdb63d3252bdcea (diff) | |
download | definitions-d0a39c67180aa0bc463d05d3cfefcd3387c8f5a5.tar.gz |
openstack-network: Add Ansible scripts to configure network with ovs
Change-Id: I215b4d0c23a9c1c82e3668b3f23a9f2766b3173a
4 files changed, 169 insertions, 0 deletions
diff --git a/openstack/usr/share/openstack/extras/00-disable-device.network b/openstack/usr/share/openstack/extras/00-disable-device.network new file mode 100644 index 00000000..8e2532d0 --- /dev/null +++ b/openstack/usr/share/openstack/extras/00-disable-device.network @@ -0,0 +1,2 @@ +[Match] +Name={{ item }} diff --git a/openstack/usr/share/openstack/extras/10-device-dhcp.network b/openstack/usr/share/openstack/extras/10-device-dhcp.network new file mode 100644 index 00000000..6fdbfd8d --- /dev/null +++ b/openstack/usr/share/openstack/extras/10-device-dhcp.network @@ -0,0 +1,5 @@ +[Match] +Name={{ item }} + +[Network] +DHCP=yes diff --git a/openstack/usr/share/openstack/network.yml b/openstack/usr/share/openstack/network.yml new file mode 100644 index 00000000..955a617b --- /dev/null +++ b/openstack/usr/share/openstack/network.yml @@ -0,0 +1,123 @@ +--- +- hosts: localhost + vars_files: + - /etc/openstack/network.conf + tasks: +# 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/ + +# Count number of network interfaces (interfaces starting with 'e') + - shell: ls /sys/class/net | grep ^e.* | wc -l + register: number_interfaces + +# Abort if there number of interfaces != 1 + - fail: + msg: More than one, or none network interfaces found. + when: EXTERNAL_INTERFACE is not defined and number_interfaces.stdout != "1" + + - shell: ls /sys/class/net | grep ^e.* + register: interface_name + when: EXTERNAL_INTERFACE is not defined + + - set_fact: + ETH_INTERFACE: "{{ interface_name.stdout }}" + when: EXTERNAL_INTERFACE is not defined + + - set_fact: + ETH_INTERFACE: "{{ EXTERNAL_INTERFACE }}" + when: EXTERNAL_INTERFACE is defined + + - set_fact: + ETH_MAC_ADDRESS: "{{ hostvars['localhost']['ansible_' + ETH_INTERFACE]['macaddress'] }}" + + - name: Create the /run/systemd/network + file: + path: /run/systemd/network + state: directory + + - name: Disable dhcp on the bound physical interface + template: + src: /usr/share/openstack/extras/00-disable-device.network + dest: /run/systemd/network/00-disable-{{ item }}-config.network + with_items: + - "{{ ETH_INTERFACE }}" + + + - name: Disable dhcp on all the internal interfaces + template: + src: /usr/share/openstack/extras/00-disable-device.network + dest: /run/systemd/network/00-disable-{{ item }}-config.network + with_items: + - br-eth1 + - br-ex + - eth1-br-proxy + - proxy-br-eth1 + - proxy-br-ex + - ovs-system + +#ovs-vsctl \ +# -- add-br br-eth0 \ +# -- add-port br-eth0 $eth_dev \ +# -- set bridge br-eth0 other-config:hwaddr=$eth_mac +# + + + - openvswitch_bridge: + bridge: br-eth0 + state: present + + - openvswitch_port: + bridge: br-eth0 + port: "{{ ETH_INTERFACE }}" + state: present + + - shell: ovs-vsctl set bridge br-eth0 other-config:hwaddr={{ ETH_MAC_ADDRESS }} + + - name: Enable dhcp on the Open vSwitch device that replaces our external interface + template: + src: /usr/share/openstack/extras/10-device-dhcp.network + dest: /run/systemd/network/10-{{ item }}-dhcp.network + with_items: + - br-eth0 + +#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 diff --git a/openstack/usr/share/openstack/openvswitch.yml b/openstack/usr/share/openstack/openvswitch.yml new file mode 100644 index 00000000..8331c639 --- /dev/null +++ b/openstack/usr/share/openstack/openvswitch.yml @@ -0,0 +1,39 @@ +#!/bin/sh +--- +- hosts: localhost + tasks: + + - name: Create openvswitch directories + file: path={{ item }} state=directory + with_items: + - /etc/openvswitch + - /var/run/openvswitch + + - shell: > + ovsdb-tool create /etc/openvswitch/conf.db /usr/share/openvswitch/vswitch.ovsschema + creates=/etc/openvswitch/conf.db + + # We enable the openvswitch-db-server in a different task to identify + # the first time we run this script by identifying when we enable the + # unit. + # + # We need to identify this to initialise the database. + - name: Enable openvswitch database service + service: name={{ item }} enabled=yes + with_items: + - openvswitch-db-server.service + register: openvswitch_db_enable + + - name: Start openvswitch database service + service: name={{ item }} state=started + with_items: + - openvswitch-db-server.service + + - name: initialise openvswitch-db + shell: ovs-vsctl --no-wait init + when: openvswitch_db_enable|changed + + - name: Enable and start openstack-keystone service + service: name={{ item }} enabled=yes state=started + with_items: + - openvswitch.service |