From e8b2b5a90010999393cd92028dd7d274cc8852c7 Mon Sep 17 00:00:00 2001 From: Peter Mikus Date: Mon, 16 Dec 2019 12:14:44 +0000 Subject: Vagrant: Introduce CentOS8 + Full ansible compatibility - Docker currently not working in Centos8 as it was not yet released Signed-off-by: Peter Mikus Change-Id: I837091621db6bbebc9fee729496384cabe2f5357 --- resources/libraries/bash/function/device.sh | 4 +- resources/tools/vagrant/Vagrantfile | 112 ++++++++++++--------- .../tools/vagrant/ansible/group_vars/vppdevice.yml | 2 + .../vagrant/ansible/roles/common/tasks/main.yml | 10 -- .../vagrant/ansible/roles/csit/defaults/main.yml | 37 +++++++ .../vagrant/ansible/roles/csit/tasks/main.yml | 77 +++++++------- 6 files changed, 139 insertions(+), 103 deletions(-) create mode 100644 resources/tools/vagrant/ansible/roles/csit/defaults/main.yml (limited to 'resources') diff --git a/resources/libraries/bash/function/device.sh b/resources/libraries/bash/function/device.sh index ce88ec8c46..fbdf56a7e1 100644 --- a/resources/libraries/bash/function/device.sh +++ b/resources/libraries/bash/function/device.sh @@ -291,8 +291,8 @@ function get_available_interfaces () { # Add Intel Corporation 82545EM Gigabit Ethernet Controller to the # whitelist. pci_id="0x100f" - tg_netdev=(enpTGa enpTGb) - dut1_netdev=(enpSUTa enpSUTb) + tg_netdev=(enp0s8 enp0s9) + dut1_netdev=(enp0s16 enp0s17) ;; *) die "Unknown specification: ${case_text}!" diff --git a/resources/tools/vagrant/Vagrantfile b/resources/tools/vagrant/Vagrantfile index c1137ce020..f0b842c550 100644 --- a/resources/tools/vagrant/Vagrantfile +++ b/resources/tools/vagrant/Vagrantfile @@ -3,20 +3,13 @@ Vagrant.configure("2") do |config| - # Base box definition, currently using - # Official Ubuntu 18.04 LTS (Bionic Beaver) Daily Build - config.vm.box = "ubuntu/bionic64" - config.vm.box_version = "20190724.1.0" - - # Disable automatic box update checking - config.vm.box_check_update = false - - # Configure cached packages to be shared between instances of the same base box. + # Configure cached packages to be shared between instances of the + # same base box. if Vagrant.has_plugin?("vagrant-cachier") config.cache.scope = :box end - # Configure proxy if needed + # Configure proxy if needed. if Vagrant.has_plugin?("vagrant-proxyconf") config.proxy.http = "http://192.168.0.2:3128/" config.proxy.https = "http://192.168.0.2:3128/" @@ -24,37 +17,18 @@ Vagrant.configure("2") do |config| config.proxy.no_proxy = "localhost,127.0.0.1" end - # Configure testing network interfaces (TG) - config.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: "link1", nic_type: "82545EM", mac: "0800270fe04d" - config.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: "link2", nic_type: "82545EM", mac: "08002761f7ad" - config.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: "link3", nic_type: "82545EM", mac: "080027dc5da4" - - # Configure testing network interfaces (SUT) - config.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: "link1", nic_type: "82545EM", mac: "080027385e58" - config.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: "link2", nic_type: "82545EM", mac: "080027e3f542" - config.vm.network "private_network", type: "dhcp", auto_config: false, virtualbox__intnet: "link3", nic_type: "82545EM", mac: "0800274f7c63" - - # Virtualbox machine configuration - config.vm.provider "virtualbox" do |vb| - vb.name = "vppdevice-bionic" - # Run in headless mode - vb.gui = false - - # Customize the amount of memory and CPUs assigned: - # - for VPP at least 3GB RAM and 2 cores is recommended - vb.memory = "8192" - vb.cpus = "4" - - # Configure network testing interfaces - vb.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"] - vb.customize ["modifyvm", :id, "--nicpromisc3", "allow-all"] - vb.customize ["modifyvm", :id, "--nicpromisc4", "allow-all"] - vb.customize ["modifyvm", :id, "--nicpromisc5", "allow-all"] - vb.customize ["modifyvm", :id, "--nicpromisc6", "allow-all"] - vb.customize ["modifyvm", :id, "--nicpromisc7", "allow-all"] - end + # Configure testing network interfaces (tg). + config.vm.network :private_network, type: "dhcp", auto_config: false, virtualbox__intnet: "link1", nic_type: "82545em", mac: "0800270fe04d" + config.vm.network :private_network, type: "dhcp", auto_config: false, virtualbox__intnet: "link2", nic_type: "82545em", mac: "08002761f7ad" + config.vm.network :private_network, type: "dhcp", auto_config: false, virtualbox__intnet: "link3", nic_type: "82545em", mac: "080027dc5da4" + + # Configure testing network interfaces (sut). + config.vm.network :private_network, type: "dhcp", auto_config: false, virtualbox__intnet: "link1", nic_type: "82545em", mac: "080027385e58" + config.vm.network :private_network, type: "dhcp", auto_config: false, virtualbox__intnet: "link2", nic_type: "82545em", mac: "080027e3f542" + config.vm.network :private_network, type: "dhcp", auto_config: false, virtualbox__intnet: "link3", nic_type: "82545em", mac: "0800274f7c63" - # Provision the box using ansible local (no Ansible installation needed on host) + # Provision the box using ansible local (no Ansible installation needed + # on host). config.vm.provision "ansible_local" do |ansible| ansible.version = "latest" ansible.compatibility_mode = "2.0" @@ -66,26 +40,68 @@ Vagrant.configure("2") do |config| end config.vm.post_up_message = <<-MESSAGE - Your virtual machine is configured! Login to the box using command: - vagrant ssh + vagrant ssh To run some tests use the VPP Device bootstrap script, eg: cd /home/vagrant/csit/resources/libraries/bash/entry - ./bootstrap_vpp_device.sh csit-vpp-device-master-ubuntu1804-1n-vbox + ./bootstrap_vpp_device.sh csit-vpp-device-master-ubuntu1804-1n-vbox To run only selected tests based on TAGS, export environment variables before running the test suite: - export GERRIT_EVENT_TYPE="comment-added" - export GERRIT_EVENT_COMMENT_TEXT="devicetest memif" - ./bootstrap_vpp_device.sh csit-vpp-device-master-ubuntu1804-1n-vbox + export GERRIT_EVENT_TYPE="comment-added" + export GERRIT_EVENT_COMMENT_TEXT="devicetest memif" + ./bootstrap_vpp_device.sh csit-vpp-device-master-ubuntu1804-1n-vbox For more information please visit: - https://docs.fd.io/csit/rls1908/report/index.html - https://docs.fd.io/csit/master/trending/ + https://docs.fd.io/csit/rls1908/report/index.html + https://docs.fd.io/csit/master/trending/ MESSAGE + config.vm.define "bionic", primary: true do |bionic| + # Base box definition, currently using + # Official Ubuntu 18.04 LTS (Bionic Beaver) Daily Build + bionic.vm.box = "ubuntu/bionic64" + bionic.vm.box_version = "20190724.1.0" + bionic.vm.box_check_update = false + + # Virtualbox machine configuration + bionic.vm.provider "virtualbox" do |vb| + vb.name = "vppdevice-bionic" + vb.gui = false + vb.memory = "4096" + vb.cpus = "4" + vb.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"] + vb.customize ["modifyvm", :id, "--nicpromisc3", "allow-all"] + vb.customize ["modifyvm", :id, "--nicpromisc4", "allow-all"] + vb.customize ["modifyvm", :id, "--nicpromisc5", "allow-all"] + vb.customize ["modifyvm", :id, "--nicpromisc6", "allow-all"] + vb.customize ["modifyvm", :id, "--nicpromisc7", "allow-all"] + end + end + + config.vm.define "centos8", autostart: false do |centos8| + # Base box definition, currently using + # Unofficial Centos8 (as currently there is no offical build) + centos8.vm.box = "geerlingguy/centos8" + centos8.vm.box_version = "1.0.2" + centos8.vm.box_check_update = false + + # Virtualbox machine configuration + centos8.vm.provider "virtualbox" do |vb| + vb.name = "vppdevice-centos8" + vb.gui = false + vb.memory = "4096" + vb.cpus = "4" + vb.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"] + vb.customize ["modifyvm", :id, "--nicpromisc3", "allow-all"] + vb.customize ["modifyvm", :id, "--nicpromisc4", "allow-all"] + vb.customize ["modifyvm", :id, "--nicpromisc5", "allow-all"] + vb.customize ["modifyvm", :id, "--nicpromisc6", "allow-all"] + vb.customize ["modifyvm", :id, "--nicpromisc7", "allow-all"] + end + end end diff --git a/resources/tools/vagrant/ansible/group_vars/vppdevice.yml b/resources/tools/vagrant/ansible/group_vars/vppdevice.yml index ffa60e2295..b920c3be18 100644 --- a/resources/tools/vagrant/ansible/group_vars/vppdevice.yml +++ b/resources/tools/vagrant/ansible/group_vars/vppdevice.yml @@ -1,4 +1,6 @@ --- +# Ansible interpreter (for PIP) +ansible_python_interpreter: 'python3' # Settings for VPP Device host group csit: home: '/home/vagrant/csit' diff --git a/resources/tools/vagrant/ansible/roles/common/tasks/main.yml b/resources/tools/vagrant/ansible/roles/common/tasks/main.yml index 68d7751b6a..1d4d273971 100644 --- a/resources/tools/vagrant/ansible/roles/common/tasks/main.yml +++ b/resources/tools/vagrant/ansible/roles/common/tasks/main.yml @@ -1,16 +1,6 @@ --- # file: common/tasks/main.yml -- name: Install required common system packages - apt: - name: - - 'apt-transport-https' - - 'ca-certificates' - - 'curl' - - 'software-properties-common' - state: 'latest' - cache_valid_time: 3600 - - name: Set /bin/sh to bash instead of dash alternatives: name: sh diff --git a/resources/tools/vagrant/ansible/roles/csit/defaults/main.yml b/resources/tools/vagrant/ansible/roles/csit/defaults/main.yml new file mode 100644 index 0000000000..e390adb6b4 --- /dev/null +++ b/resources/tools/vagrant/ansible/roles/csit/defaults/main.yml @@ -0,0 +1,37 @@ +--- +# file: csit/defaults/main.yml + +csit_packages: "{{ csit_packages_base + csit_packages_by_distro[ansible_distribution|lower] }}" + +csit_packages_base: + - 'curl' + - 'python3-cffi' + - 'python3-pip' + - 'python3-setuptools' + - 'virtualenv' + - 'wget' + +csit_packages_by_distro: + centos: + - 'autoconf' + - 'automake' + - 'binutils' + - 'bison' + - 'flex' + - 'gcc' + - 'gcc-c++' + - 'gdb' + - 'glibc-devel' + - 'libpcap-devel' + - 'libtool' + - 'make' + - 'pkgconf' + - 'pkgconf-m4' + - 'pkgconf-pkg-config' + - 'redhat-rpm-config' + - 'rpm-build' + - 'rpm-sign' + - 'strace' + ubuntu: + - 'build-essential' + - 'libpcap-dev' diff --git a/resources/tools/vagrant/ansible/roles/csit/tasks/main.yml b/resources/tools/vagrant/ansible/roles/csit/tasks/main.yml index d684d8ea12..64a4872777 100644 --- a/resources/tools/vagrant/ansible/roles/csit/tasks/main.yml +++ b/resources/tools/vagrant/ansible/roles/csit/tasks/main.yml @@ -1,57 +1,48 @@ --- # file: csit/tasks/main.yml -- name: Upload config to rename network interfaces - copy: - src: 'files/99-vppdevice.yaml' - dest: '/etc/netplan/99-vppdevice.yaml' - owner: 'root' - group: 'root' - mode: 0644 +# TODO: Temporarily disabling due to Centos8 not having netplan. +# Finding better solution via udev requires some work and testing. +#- name: Upload config to rename network interfaces +# copy: +# src: 'files/99-vppdevice.yaml' +# dest: '/etc/netplan/99-vppdevice.yaml' +# owner: 'root' +# group: 'root' +# mode: 0644 +#- name: Apply network config changes +# command: '/usr/sbin/netplan apply' + +- name: Centos8 install epel repositories + dnf: + name: + - 'epel-release' + when: + - ansible_distribution|lower == 'centos' -- name: Apply network config changes - command: '/usr/sbin/netplan apply' +- name: Centos8 enable epel repositories + command: 'dnf config-manager --set-enabled PowerTools' + when: + - ansible_distribution|lower == 'centos' - name: Install required system tools and packages - apt: - name: - - 'curl' - - 'libpcap-dev' - - 'python3-all' - - 'python3-apt' - - 'python3-cffi' - - 'python3-cffi-backend' - - 'python3-dev' - - 'python3-pip' - - 'python3-setuptools' - - 'virtualenv' - - 'wget' - state: 'present' - cache_valid_time: 3600 + package: + name: "{{ csit_packages | join(',') }}" + state: 'latest' + update_cache: 'yes' - name: Adjust number of hugepages sysctl: name: 'vm.nr_hugepages' - value: 512 + value: '512' state: 'present' sysctl_file: '/etc/sysctl.d/90-csit.conf' reload: 'yes' -- name: Add an Apt signing key, for docker-ce repository - apt_key: - url: 'https://download.docker.com/linux/ubuntu/gpg' - state: 'present' - -- name: Add docker-ce apt repository if not present - apt_repository: - repo: 'deb https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable' - state: 'present' - -- name: Install docker-ce if it's not already installed - apt: - name: 'docker-ce' - state: 'present' - cache_valid_time: 3600 +- name: Install docker-ce + command: | + curl -fsSL https://get.docker.com -o get-docker.sh && + sudo sh get-docker.sh - name: "Add user for running tests: {{ csit.test_user.name }}" user: @@ -64,13 +55,13 @@ lineinfile: path: '/etc/sudoers.d/{{ csit.test_user.name }}' line: '{{ csit.test_user.name }} ALL=(ALL) NOPASSWD:ALL' - create: yes + create: 'yes' - name: Add vagrant user to docker group user: name: 'vagrant' groups: - - docker + - 'docker' - name: Reload groups for current session command: '/usr/bin/newgrp docker' @@ -86,6 +77,7 @@ lineinfile: path: '/etc/modules' line: '{{ item }}' + create: 'yes' state: 'present' insertafter: EOF with_items: @@ -100,7 +92,6 @@ version: '{{ csit.repository.version }}' - name: Install and update pip and virtualenv - become_user: vagrant pip: name: - 'virtualenv' -- cgit 1.2.3-korg