From 849d51833bdb16e8f04370270cd3e082ad9db928 Mon Sep 17 00:00:00 2001 From: Harry Huang Date: Wed, 11 Oct 2017 18:11:52 +0800 Subject: Config dpdk and ovs switch dpdk interface driver and bring up corresponding ovs bridges. Change-Id: I07bd9b332978482507711cfbd8ad29802a8b1a8c Signed-off-by: Harry Huang --- plugins/dpdk/roles/config-dpdk/tasks/compute.yml | 82 ++++++++++++++++++++++ .../dpdk/roles/config-dpdk/tasks/config-dpdk.yml | 16 +++++ plugins/dpdk/roles/config-dpdk/tasks/main.yml | 11 +++ .../dpdk/roles/config-dpdk/tasks/neutron_agent.yml | 15 ++++ 4 files changed, 124 insertions(+) create mode 100644 plugins/dpdk/roles/config-dpdk/tasks/compute.yml create mode 100644 plugins/dpdk/roles/config-dpdk/tasks/config-dpdk.yml create mode 100644 plugins/dpdk/roles/config-dpdk/tasks/main.yml create mode 100644 plugins/dpdk/roles/config-dpdk/tasks/neutron_agent.yml (limited to 'plugins/dpdk/roles/config-dpdk/tasks') diff --git a/plugins/dpdk/roles/config-dpdk/tasks/compute.yml b/plugins/dpdk/roles/config-dpdk/tasks/compute.yml new file mode 100644 index 00000000..b5285d79 --- /dev/null +++ b/plugins/dpdk/roles/config-dpdk/tasks/compute.yml @@ -0,0 +1,82 @@ +############################################################################# +# 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: get dpdk interface device name + command: echo "{{ compu_sys_mappings['tenant']['interface'] }}" + register: dpdk_device_name + +- name: get dpdk interface ip + shell: > + ip a show "{{ dpdk_device_name.stdout }}" | grep -E "\" | + awk '{print $2}' + register: dpdk_device_ip + +- debug: + msg: "{{ dpdk_device_ip.stdout }}" + +- name: get dpdk interface device pci + shell: > + {{ devbind_script }} -s | grep {{ dpdk_device_name.stdout }} | + awk '{print $1}' + register: dpdk_device_pci + +- name: switch dpdk interface driver + shell: "{{ switch_driver_script }}" + notify: service openvswitch restart + +- name: kill ovs process + shell: > + ps aux | grep ovs | grep -v grep | awk '{print $2}' | xargs kill -9 | + true + notify: service openvswitch restart + +- name: copy service file + copy: + src: openvswitch-switch.service + dest: /lib/systemd/system/openvswitch-switch.service + notify: service openvswitch restart + +- name: config libvirtd + shell: echo 'user = "root"' >> /etc/libvirt/qemu.conf + notify: service libvirtd restart + +- meta: flush_handlers + +- name: config neutron-openvswitch-agent + blockinfile: + dest: /etc/neutron/plugins/ml2/openvswitch_agent.ini + insertafter: '^\[ovs\]' + block: | + datapath_type=netdev + vhostuser_socket_dir=/usr/local/var/run/openvswitch + +- name: set ovs manager + shell: ovs-vsctl set-manager ptcp:6640:127.0.0.1 + notify: service neutron-openvswitch-agent restart + +- name: config ovs to dpdk + shell: | + ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true + ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-socket-mem="{{ dpdk_memory }}" + notify: service neutron-openvswitch-agent restart + +- name: add dpdk bridge + shell: | + ovs-vsctl add-br br-dpdk -- set bridge br-dpdk datapath_type=netdev + ovs-vsctl add-port br-dpdk dpdk0 -- set Interface dpdk0 \ + type=dpdk options:dpdk-devargs="{{ dpdk_device_pci.stdout }}" + notify: service neutron-openvswitch-agent restart + +- name: bind ip on dpdk bridge + shell: | + ifconfig br-dpdk "{{ dpdk_device_ip.stdout }}" + ifconfig br-dpdk up + notify: service neutron-openvswitch-agent restart + +- meta: flush_handlers diff --git a/plugins/dpdk/roles/config-dpdk/tasks/config-dpdk.yml b/plugins/dpdk/roles/config-dpdk/tasks/config-dpdk.yml new file mode 100644 index 00000000..b0e1a1ed --- /dev/null +++ b/plugins/dpdk/roles/config-dpdk/tasks/config-dpdk.yml @@ -0,0 +1,16 @@ +############################################################################# +# 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 +############################################################################## +--- +- include_vars: "{{ ansible_distribution }}.yml" + +- include: neutron_agent.yml + when: inventory_hostname in groups['neutron_openvswitch_agent'] + +- include: compute.yml + when: inventory_hostname in groups['compute'] diff --git a/plugins/dpdk/roles/config-dpdk/tasks/main.yml b/plugins/dpdk/roles/config-dpdk/tasks/main.yml new file mode 100644 index 00000000..19fc66b7 --- /dev/null +++ b/plugins/dpdk/roles/config-dpdk/tasks/main.yml @@ -0,0 +1,11 @@ +############################################################################## +# 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 +############################################################################## +--- +- include: config-dpdk.yml + when: dpdk is defined and dpdk == "Enable" diff --git a/plugins/dpdk/roles/config-dpdk/tasks/neutron_agent.yml b/plugins/dpdk/roles/config-dpdk/tasks/neutron_agent.yml new file mode 100644 index 00000000..aa65142b --- /dev/null +++ b/plugins/dpdk/roles/config-dpdk/tasks/neutron_agent.yml @@ -0,0 +1,15 @@ +############################################################################# +# 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: config neutron-openvswitch-agent + lineinfile: + dest: /etc/neutron/plugins/ml2/openvswitch_agent.ini + regexp: '^firewall_driver' + line: "firewall_driver = openvswitch" + notify: service neutron-openvswitch-agent restart -- cgit 1.2.3-korg