From 3bc3a8828c3ceefedd08e1767ae6e3bf2df9ac22 Mon Sep 17 00:00:00 2001 From: Harry Huang Date: Wed, 23 Aug 2017 15:05:02 +0800 Subject: Support multiple physnet mapping JIRA: COMPASS-559 1. support multiple mapping in provider_net_mappings of network.yml and create corresponding ovs bridges 2. support seperate config in sys_intf_mappings of network.yml 3. remove linux bridges in compute nodes for ovs port binding convenience 4. support openstack vlan tenant network 5. modify odl and odl_sfc roles to use configurable provider mapping 6. remove some hard coding Change-Id: Ib57484ce60d029f89c647fd5baf2c7af37c85d0b Signed-off-by: Harry Huang --- .../roles/setup-openvswitch/handlers/main.yml | 12 ++++ .../roles/setup-openvswitch/tasks/compute.yml | 65 ++++++++++++++++++++++ .../roles/setup-openvswitch/tasks/controller.yml | 49 ++++++++++++++++ .../ansible/roles/setup-openvswitch/tasks/main.yml | 22 ++++---- .../ansible/roles/setup-openvswitch/vars/main.yml | 12 ++++ 5 files changed, 150 insertions(+), 10 deletions(-) create mode 100644 deploy/adapters/ansible/roles/setup-openvswitch/handlers/main.yml create mode 100644 deploy/adapters/ansible/roles/setup-openvswitch/tasks/compute.yml create mode 100644 deploy/adapters/ansible/roles/setup-openvswitch/tasks/controller.yml create mode 100644 deploy/adapters/ansible/roles/setup-openvswitch/vars/main.yml (limited to 'deploy/adapters/ansible/roles/setup-openvswitch') diff --git a/deploy/adapters/ansible/roles/setup-openvswitch/handlers/main.yml b/deploy/adapters/ansible/roles/setup-openvswitch/handlers/main.yml new file mode 100644 index 00000000..fb7814b7 --- /dev/null +++ b/deploy/adapters/ansible/roles/setup-openvswitch/handlers/main.yml @@ -0,0 +1,12 @@ +############################################################################ +# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################ +--- +- name: restart neutron-openvswitch-agent + service: + name: neutron-openvswitch-agent + state: restarted diff --git a/deploy/adapters/ansible/roles/setup-openvswitch/tasks/compute.yml b/deploy/adapters/ansible/roles/setup-openvswitch/tasks/compute.yml new file mode 100644 index 00000000..62edd34b --- /dev/null +++ b/deploy/adapters/ansible/roles/setup-openvswitch/tasks/compute.yml @@ -0,0 +1,65 @@ +############################################################################# +# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################# +--- +- name: stop neutron-openvswitch-agent + service: + name: neutron-openvswitch-agent + state: stopped + +- name: remove tunnel_types when vlan + lineinfile: + dest: /etc/neutron/plugins/ml2/openvswitch_agent.ini + state: absent + regexp: '^tunnel_types' + when: + - tenant_net_info["type"] == "vlan" + notify: + - restart neutron-openvswitch-agent + +- name: fix mapping in compute + shell: | + {% set compute_mappings = [] %} + {% for key, value in compu_prv_mappings.iteritems() %} + {% set mapping = key + ":" + value["bridge"] %} + {% set _ = compute_mappings.append(mapping) %} + {% endfor %} + {% if compute_mappings | length != 0 %} + sed -i "s/^\(bridge_mappings\).*/\1 = {{ ','.join(compute_mappings) }}/g" \ + /etc/neutron/plugins/ml2/openvswitch_agent.ini + {% else %} + sed -i "/bridge_mappings/d" /etc/neutron/plugins/ml2/openvswitch_agent.ini + {% endif %} + notify: + - restart neutron-openvswitch-agent + +- name: create compute bridges + openvswitch_bridge: + bridge: "{{ item['name'] }}" + state: present + with_items: + - "{{ provider_net_mappings }}" + when: + - compute in item["role"] + notify: + - restart neutron-openvswitch-agent + +- name: create compute bridge ports + openvswitch_port: + bridge: "{{ item['name'] }}" + port: "{{ item['interface'] }}" + state: present + with_items: + - "{{ provider_net_mappings }}" + when: + - compute in item["role"] + +- name: stop neutron-openvswitch-agent + service: + name: neutron-openvswitch-agent + state: started diff --git a/deploy/adapters/ansible/roles/setup-openvswitch/tasks/controller.yml b/deploy/adapters/ansible/roles/setup-openvswitch/tasks/controller.yml new file mode 100644 index 00000000..258a39e2 --- /dev/null +++ b/deploy/adapters/ansible/roles/setup-openvswitch/tasks/controller.yml @@ -0,0 +1,49 @@ +############################################################################# +# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################# +--- +- name: stop neutron-openvswitch-agent + service: + name: neutron-openvswitch-agent + state: stopped + +- name: remove tunnel_types when vlan + lineinfile: + dest: /etc/neutron/plugins/ml2/openvswitch_agent.ini + state: absent + regexp: '^tunnel_types' + when: + - tenant_net_info["type"] == "vlan" + notify: + - restart neutron-openvswitch-agent + +- name: create controller bridges + openvswitch_bridge: + bridge: "{{ item['name'] }}" + state: present + with_items: + - "{{ provider_net_mappings }}" + when: + - controller in item["role"] + notify: + - restart neutron-openvswitch-agent + +- name: create controller bridge ports + openvswitch_port: + bridge: "{{ item['name'] }}" + port: "{{ item['interface'] }}" + state: present + with_items: + - "{{ provider_net_mappings }}" + when: + - controller in item["role"] + +- name: stop neutron-openvswitch-agent + service: + name: neutron-openvswitch-agent + state: started diff --git a/deploy/adapters/ansible/roles/setup-openvswitch/tasks/main.yml b/deploy/adapters/ansible/roles/setup-openvswitch/tasks/main.yml index a424f974..87e508ca 100644 --- a/deploy/adapters/ansible/roles/setup-openvswitch/tasks/main.yml +++ b/deploy/adapters/ansible/roles/setup-openvswitch/tasks/main.yml @@ -1,16 +1,18 @@ -############################################################################## -# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others. +############################################################################# +# Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## +############################################################################# --- -- name: setup openvswitch - shell: "export ANSIBLE_LOG_PATH=/var/ansible/run/openstack_ocata-opnfv2/ansible.log; \ - cd /opt/openstack-ansible/playbooks; \ - openstack-ansible setup-ovs.yml \ - | tee -a /var/log/osa/ovs.log > /dev/null" - when: NEUTRON_MECHANISM_DRIVERS[0] == "openvswitch" or - NEUTRON_MECHANISM_DRIVERS[0] == "opendaylight" +- include: controller.yml + when: + - inventory_hostname not in groups['nova_compute'] + - NEUTRON_MECHANISM_DRIVERS[0] == "openvswitch" or "opendaylight" + +- include: compute.yml + when: + - inventory_hostname in groups['nova_compute'] + - NEUTRON_MECHANISM_DRIVERS[0] == "openvswitch" or "opendaylight" diff --git a/deploy/adapters/ansible/roles/setup-openvswitch/vars/main.yml b/deploy/adapters/ansible/roles/setup-openvswitch/vars/main.yml new file mode 100644 index 00000000..69ce5ee9 --- /dev/null +++ b/deploy/adapters/ansible/roles/setup-openvswitch/vars/main.yml @@ -0,0 +1,12 @@ +############################################################################## +## Copyright (c) 2017 HUAWEI TECHNOLOGIES CO.,LTD and others. +## +## All rights reserved. This program and the accompanying materials +## are made available under the terms of the Apache License, Version 2.0 +## which accompanies this distribution, and is available at +## http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +controller: "controller" + +compute: "compute" -- cgit 1.2.3-korg