# Copyright (c) 2017 Intel Corporation. # # 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. --- #- patch: src="{{ item }}" basedir="{{ dpdk_path }}" strip=0 # with_fileglob: # - "{{ local_nsb_path }}/patches/dpdk_custom_patch/rte_pipeline.patch" # #- patch: src="{{ item }}" basedir="{{ dpdk_path }}" strip=1 # with_fileglob: # - "{{ local_nsb_path }}/patches/dpdk_custom_patch/0*.patch" - name: find kernel for image, (including chroot) find_kernel: kernel: "{{ ansible_kernel }}" register: found_kernel # Do this before installing kernel headers - name: Set dpdk_kernel to be the kernel we found set_fact: dpdk_kernel: "{{ found_kernel.kernel }}" - include: "{{ ansible_os_family }}.yml" - name: set RTE_KERNELDIR to point to found kernel set_fact: RTE_KERNELDIR: "/lib/modules/{{ dpdk_kernel }}/build" - command: make -j {{ ansible_processor_vcpus }} config T={{ dpdk_make_arch }} O={{ dpdk_make_arch }} args: chdir: "{{ dpdk_path }}" environment: RTE_KERNELDIR: "{{ RTE_KERNELDIR }}" - name: enable RTE_PORT_STATS_COLLECT lineinfile: dest: "{{ dpdk_path }}/{{ dpdk_make_arch }}/.config" regexp: '^CONFIG_RTE_PORT_STATS_COLLECT=n' line: 'CONFIG_RTE_PORT_STATS_COLLECT=y' - name: enable DPDK RTE_PORT_PCAP lineinfile: dest: "{{ dpdk_path }}/{{ dpdk_make_arch }}/.config" regexp: '^CONFIG_RTE_PORT_PCAP=n' line: 'CONFIG_RTE_PORT_PCAP=y' - name: enable DPDK RTE_TABLE_STATS_COLLECT lineinfile: dest: "{{ dpdk_path }}/{{ dpdk_make_arch }}/.config" regexp: '^CONFIG_RTE_TABLE_STATS_COLLECT=n' line: 'CONFIG_RTE_TABLE_STATS_COLLECT=y' - name: enable DPDK RTE_PIPELINE_STATS_COLLECT lineinfile: dest: "{{ dpdk_path }}/{{ dpdk_make_arch }}/.config" regexp: '^CONFIG_RTE_PIPELINE_STATS_COLLECT=n' line: 'CONFIG_RTE_PIPELINE_STATS_COLLECT=y' # This is requied for collectd? but it breaks PROX? #- name: enable CONFIG_RTE_BUILD_SHARED_LIB # lineinfile: # dest: "{{ dpdk_path }}/{{ dpdk_make_arch }}/.config" # regexp: '^CONFIG_RTE_BUILD_SHARED_LIB=n' # line: 'CONFIG_RTE_BUILD_SHARED_LIB=y' # #- name: enable DPDK CONFIG_RTE_EAL_PMD_PATH # lineinfile: # dest: "{{ dpdk_path }}/{{ dpdk_make_arch }}/.config" # regexp: '^CONFIG_RTE_EAL_PMD_PATH=""' # line: 'CONFIG_RTE_EAL_PMD_PATH="{{ dpdk_pmd_path }}"' # TODO: disable ASLR - name: make dpdk command: make -j {{ ansible_processor_vcpus }} args: chdir: "{{ dpdk_path }}/{{ dpdk_make_arch}}" environment: RTE_KERNELDIR: "{{ RTE_KERNELDIR }}" #- name: make install DPDK into /usr for collectd and other programs # make: # chdir: "{{ dpdk_path }}/{{ dpdk_make_arch}}" # target: install # params: "T={{ RTE_TARGET }}" ## params: "prefix={{ usr_prefix }}" # environment: # RTE_KERNELDIR: "{{ RTE_KERNELDIR }}" # become: yes - file: path: "{{ dpdk_module_dir}}" state: directory - copy: src: "{{ dpdk_path }}/{{ dpdk_make_arch }}/kmod/igb_uio.ko" dest: "{{ dpdk_module_dir }}/igb_uio.ko" remote_src: yes - name: run depmod for dpdk_kernel command: depmod "{{ dpdk_kernel }}" - file: path: "{{ INSTALL_BIN_PATH }}" state: directory - set_fact: major: "{{ dpdk_version.split('.')[0] }}" minor: "{{ dpdk_version.split('.')[1] }}" - set_fact: major_minor_version: "{{ major }}.{{ minor }}" - name: copy dpdk-devbind.py to correct location copy: src: "{{ dpdk_devbind_usertools if major_minor_version|float >= 17.02 else dpdk_devbind_tools }}" dest: "{{ INSTALL_BIN_PATH }}/dpdk-devbind.py" remote_src: yes force: yes mode: 0755 - name: make vPE binary command: make -j {{ ansible_processor_vcpus }} args: chdir: "{{ dpdk_path }}/examples/ip_pipeline" environment: RTE_SDK: "{{ dpdk_path }}" - name: Copy vPE to correct location copy: src: "{{ dpdk_path }}/examples/ip_pipeline/build/app/ip_pipeline" dest: "{{ INSTALL_BIN_PATH }}/vPE_vnf" remote_src: yes force: yes mode: 0755