Infra: Vagrant upgrade to focal 39/31939/4
authorpmikus <pmikus@cisco.com>
Fri, 9 Apr 2021 07:04:27 +0000 (07:04 +0000)
committerPeter Mikus <pmikus@cisco.com>
Wed, 21 Apr 2021 12:55:28 +0000 (12:55 +0000)
+ Upgradfe to focal
+ Move to better place
+ Integrate with ansible library

Signed-off-by: pmikus <pmikus@cisco.com>
Change-Id: Ibddea33efa2c3587251f9f03921282fb47ffee31

16 files changed:
csit.infra.vagrant/Vagrantfile [moved from resources/tools/vagrant/Vagrantfile with 67% similarity]
docs/testing_in_vagrant.rst
fdio.infra.ansible/inventories/vagrant_inventory/group_vars/vagrant.yml [new file with mode: 0644]
fdio.infra.ansible/inventories/vagrant_inventory/hosts [new file with mode: 0644]
fdio.infra.ansible/roles/vagrant/defaults/main.yml [new file with mode: 0644]
fdio.infra.ansible/roles/vagrant/files/99-vppdevice.yaml [moved from resources/tools/vagrant/ansible/roles/csit/files/99-vppdevice.yaml with 100% similarity]
fdio.infra.ansible/roles/vagrant/tasks/main.yml [new file with mode: 0644]
fdio.infra.ansible/site.yaml
fdio.infra.ansible/vagrant.yaml [new file with mode: 0644]
resources/tools/vagrant/ansible/group_vars/vppdevice.yml [deleted file]
resources/tools/vagrant/ansible/master.yml [deleted file]
resources/tools/vagrant/ansible/roles/common/tasks/main.yml [deleted file]
resources/tools/vagrant/ansible/roles/csit/defaults/main.yml [deleted file]
resources/tools/vagrant/ansible/roles/csit/tasks/main.yml [deleted file]
resources/tools/vagrant/ansible/vppdevice [deleted file]
resources/tools/vagrant/ansible/vppdevice.yml [deleted file]

similarity index 67%
rename from resources/tools/vagrant/Vagrantfile
rename to csit.infra.vagrant/Vagrantfile
index 1c30719..4088ece 100644 (file)
@@ -34,9 +34,9 @@ Vagrant.configure("2") do |config|
         ansible.compatibility_mode = "2.0"
         ansible.become = true
         ansible.verbose = false
         ansible.compatibility_mode = "2.0"
         ansible.become = true
         ansible.verbose = false
-        ansible.limit = "all"
-        ansible.inventory_path = "ansible/vppdevice"
-        ansible.playbook = "ansible/master.yml"
+        ansible.limit = "vagrant"
+        ansible.inventory_path = "../fdio.infra.ansible/inventories/vagrant/hosts"
+        ansible.playbook = "../fdio.infra.ansible/site.yml"
     end
 
     config.vm.post_up_message = <<-MESSAGE
     end
 
     config.vm.post_up_message = <<-MESSAGE
@@ -47,52 +47,30 @@ Vagrant.configure("2") do |config|
 
     To run some tests use the VPP Device bootstrap script, eg:
         cd /home/vagrant/csit/resources/libraries/bash/entry
 
     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-ubuntu2004-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"
 
     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
+        ./bootstrap_vpp_device.sh csit-vpp-device-master-ubuntu2004-1n-vbox
 
     For more information please visit:
 
     For more information please visit:
-        https://docs.fd.io/csit/rls1908/report/index.html
+        https://docs.fd.io/csit/master/report/
         https://docs.fd.io/csit/master/trending/
 
     MESSAGE
 
         https://docs.fd.io/csit/master/trending/
 
     MESSAGE
 
-    config.vm.define "bionic", primary: true do |bionic|
+    config.vm.define "focal", primary: true do |bionic|
         # Base box definition, currently using
         # 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"
+        #  Official Ubuntu 20.04 LTS (Focal) Daily Build
+        bionic.vm.box = "ubuntu/focal64"
+        bionic.vm.box_version = "v20210407.0.0"
         bionic.vm.box_check_update = false
 
         # Virtualbox machine configuration
         bionic.vm.provider "virtualbox" do |vb|
         bionic.vm.box_check_update = false
 
         # Virtualbox machine configuration
         bionic.vm.provider "virtualbox" do |vb|
-            vb.name = "vppdevice-bionic"
-            vb.gui = false
-            vb.memory = "8192"
-            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
-        #  Official CentOS8 v1905.1
-        centos8.vm.box = "centos/8"
-        centos8.vm.box_version = "1905.1"
-        centos8.vm.box_check_update = false
-
-        # Virtualbox machine configuration
-        centos8.vm.provider "virtualbox" do |vb|
-            vb.name = "vppdevice-centos8"
+            vb.name = "vppdevice-focal"
             vb.gui = false
             vb.memory = "8192"
             vb.cpus = "4"
             vb.gui = false
             vb.memory = "8192"
             vb.cpus = "4"
index d3a0041..b509e3d 100644 (file)
@@ -6,7 +6,7 @@ Install prerequisites
 
 Run all commands from command line.
 
 
 Run all commands from command line.
 
-1. Download and install latest virtualbox from `official page
+1. Download and install virtualbox from `official page
    <https://www.virtualbox.org/wiki/Downloads>`_.
    To verify the installation, run VBoxManage:
 
    <https://www.virtualbox.org/wiki/Downloads>`_.
    To verify the installation, run VBoxManage:
 
@@ -18,7 +18,7 @@ Run all commands from command line.
 
       VBoxManage --version
 
 
       VBoxManage --version
 
-   You should see virtualbox manager version printed, eg: 6.1.12r139181
+   Tested version: 6.1.16r140961
 
 2. Download and install latest vagrant `from official page
    <https://www.vagrantup.com/downloads.html>`_.
 
 2. Download and install latest vagrant `from official page
    <https://www.vagrantup.com/downloads.html>`_.
@@ -26,7 +26,7 @@ Run all commands from command line.
 
       vagrant -v
 
 
       vagrant -v
 
-   You should see vagrant version printed, eg: Vagrant 2.2.9
+   Tested version: Vagrant 2.2.15
 
 3. Install vagrant plugins::
 
 
 3. Install vagrant plugins::
 
@@ -44,7 +44,7 @@ Set up and run Vagrant virtualbox
 Before running following commands change working directory to Vagrant specific directory
 (from within root CSIT directory) ::
 
 Before running following commands change working directory to Vagrant specific directory
 (from within root CSIT directory) ::
 
-    cd resources/libraries/tools/vagrant
+    cd csit.infra.vagrant
 
 This allows Vagrant to automatically find Vagrantfile and corresponding Vagrant environment.
 
 
 This allows Vagrant to automatically find Vagrantfile and corresponding Vagrant environment.
 
@@ -74,7 +74,7 @@ Run tests
 From within the box run the tests using::
 
    cd /home/vagrant/csit/resources/libraries/bash/entry
 From within the box run the tests using::
 
    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-ubuntu2004-1n-vbox
 
 To run only selected tests based on TAGS, export environment variables before
 running the test suite::
 
 To run only selected tests based on TAGS, export environment variables before
 running the test suite::
@@ -83,6 +83,6 @@ running the test suite::
    export GERRIT_EVENT_COMMENT_TEXT="devicetest memif"
 
    # now it will run tests, selected based on tags
    export GERRIT_EVENT_COMMENT_TEXT="devicetest memif"
 
    # now it will run tests, selected based on tags
-   ./bootstrap_vpp_device.sh csit-vpp-device-master-ubuntu1804-1n-vbox
+   ./bootstrap_vpp_device.sh csit-vpp-device-master-ubuntu2004-1n-vbox
 
 
 
 
diff --git a/fdio.infra.ansible/inventories/vagrant_inventory/group_vars/vagrant.yml b/fdio.infra.ansible/inventories/vagrant_inventory/group_vars/vagrant.yml
new file mode 100644 (file)
index 0000000..20cea1d
--- /dev/null
@@ -0,0 +1,5 @@
+---
+# file: vagrant_inventory/group_vars/all.yaml
+
+# Ansible interpreter (for PIP)
+ansible_python_interpreter: "/usr/bin/python3"
\ No newline at end of file
diff --git a/fdio.infra.ansible/inventories/vagrant_inventory/hosts b/fdio.infra.ansible/inventories/vagrant_inventory/hosts
new file mode 100644 (file)
index 0000000..451a016
--- /dev/null
@@ -0,0 +1,4 @@
+# Inventory file for VPP Device vagrant environment
+
+[vagrant]
+localhost    ansible_connection=local
diff --git a/fdio.infra.ansible/roles/vagrant/defaults/main.yml b/fdio.infra.ansible/roles/vagrant/defaults/main.yml
new file mode 100644 (file)
index 0000000..caa3339
--- /dev/null
@@ -0,0 +1,14 @@
+---
+# file: vagrant/defaults/main.yml
+
+# Settings for VPP Device host group
+csit:
+  home: "/home/vagrant/csit"
+  test_user:
+    name: "testuser"
+    password: "$6$/mAr/JDJc0u6/i$sLBptji85Xo/vdAv43bP4NpTaAfSBY8p3G7Uj9p4fKysrvs7XF8.FmlC56j4AzOun6nnf7PA.elytvfWoEHCL1"
+    home: "/home/testuser"
+    shell: "/bin/bash"
+  repository:
+    url: "https://gerrit.fd.io/r/csit"
+    version: "HEAD"
diff --git a/fdio.infra.ansible/roles/vagrant/tasks/main.yml b/fdio.infra.ansible/roles/vagrant/tasks/main.yml
new file mode 100644 (file)
index 0000000..fa4ab4a
--- /dev/null
@@ -0,0 +1,42 @@
+---
+# file: vagrant/tasks/main.yml
+
+# General
+- name: Adjust number of hugepages
+  sysctl:
+    name: "vm.nr_hugepages"
+    value: "512"
+    state: "present"
+    sysctl_file: "/etc/sysctl.d/90-csit.conf"
+    reload: yes
+
+- name: "Add user for running tests: {{ csit.test_user.name }}"
+  user:
+    name: "{{ csit.test_user.name }}"
+    password: "{{ csit.test_user.password }}"
+    home: "{{ csit.test_user.home }}"
+    shell: "{{ csit.test_user.shell }}"
+
+- name: Add vagrant user to docker group
+  user:
+    name: "vagrant"
+    groups:
+      - "docker"
+
+- name: Reload groups for current session
+  command: "/usr/bin/newgrp docker"
+
+- name: Clone CSIT repository
+  become_user: vagrant
+  git:
+    repo: "{{ csit.repository.url }}"
+    dest: "{{ csit.home }}"
+    accept_hostkey: yes
+    version: "{{ csit.repository.version }}"
+
+- name: Load csit docker image from local drive if it exists (/vagrant/csit-sut.tar)
+  shell: |
+    if [ -z "$(docker images -q `cat {{ csit.home }}/VPP_DEVICE_IMAGE`)" ] && [ -e /vagrant/csit-sut.tar ]; then
+      docker load -i /vagrant/csit-sut.tar;
+    fi;
+  ignore_errors: yes
index 4436c21..c2ad98c 100644 (file)
@@ -24,3 +24,7 @@
 - import_playbook: dev.yaml
   tags:
     - dev
 - import_playbook: dev.yaml
   tags:
     - dev
+
+- import_playbook: vagrant.yaml
+  tags:
+    - vagrant
\ No newline at end of file
diff --git a/fdio.infra.ansible/vagrant.yaml b/fdio.infra.ansible/vagrant.yaml
new file mode 100644 (file)
index 0000000..005f786
--- /dev/null
@@ -0,0 +1,24 @@
+---
+# file: vagrant.yaml
+
+- hosts: vagrant
+  remote_user: vagrant
+  become: yes
+  become_user: root
+  gather_facts: false
+  pre_tasks:
+    - name: Gathering Facts
+      gather_facts:
+      tags:
+        - always
+  roles:
+    - role: common
+      tags: common
+    - role: python_env
+      tags: python_env
+    - role: docker
+      tags: docker
+    - role: vpp
+      tags: vpp
+    - role: vagrant
+      tags: vagrant
\ No newline at end of file
diff --git a/resources/tools/vagrant/ansible/group_vars/vppdevice.yml b/resources/tools/vagrant/ansible/group_vars/vppdevice.yml
deleted file mode 100644 (file)
index b920c3b..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
----
-# Ansible interpreter (for PIP)
-ansible_python_interpreter: 'python3'
-# Settings for VPP Device host group
-csit:
-  home: '/home/vagrant/csit'
-  test_user:
-    name: 'testuser'
-    password: '$6$/mAr/JDJc0u6/i$sLBptji85Xo/vdAv43bP4NpTaAfSBY8p3G7Uj9p4fKysrvs7XF8.FmlC56j4AzOun6nnf7PA.elytvfWoEHCL1'
-    home: '/home/testuser'
-    shell: '/bin/bash'
-  repository:
-    url: 'https://gerrit.fd.io/r/csit'
-    version: 'HEAD'
diff --git a/resources/tools/vagrant/ansible/master.yml b/resources/tools/vagrant/ansible/master.yml
deleted file mode 100644 (file)
index ffce5bc..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
----
-# file: master.yml
-- import_playbook: vppdevice.yml
diff --git a/resources/tools/vagrant/ansible/roles/common/tasks/main.yml b/resources/tools/vagrant/ansible/roles/common/tasks/main.yml
deleted file mode 100644 (file)
index 1d4d273..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
----
-# file: common/tasks/main.yml
-
-- name: Set /bin/sh to bash instead of dash
-  alternatives:
-    name: sh
-    link: /bin/sh
-    path: /bin/bash
diff --git a/resources/tools/vagrant/ansible/roles/csit/defaults/main.yml b/resources/tools/vagrant/ansible/roles/csit/defaults/main.yml
deleted file mode 100644 (file)
index 7a8999c..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
----
-# 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'
-    - 'git'
-    - '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
deleted file mode 100644 (file)
index 9c8f575..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
----
-# file: csit/tasks/main.yml
-
-# CentOS 8 specific
-- name: CentOS - Install epel repositories
-  dnf:
-    name:
-      - 'epel-release'
-  when:
-    - ansible_distribution|lower == 'centos'
-
-- name: CentOS - Enable PowerTools
-  command: >
-      dnf config-manager
-      --set-enabled PowerTools
-  when:
-    - ansible_distribution|lower == 'centos'
-
-# NOTE: containerd.io >1.2.0-3 requirement disabled by RH
-#       Unable to install current docker version as of now
-#       Using docker-ce-3:18.09.1-3.el7
-- name: CentOS - Add docker-ce repo
-  command: >
-      dnf config-manager
-      --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
-  when:
-    - ansible_distribution|lower == 'centos'
-
-- name: CentOS - Install docker-ce
-  dnf:
-    name:
-      - 'docker-ce-3:18.09.1-3.el7'
-  when:
-    - ansible_distribution|lower == 'centos'
-
-# Ubuntu specific
-- name: Ubuntu - Add docker-ce GPG key
-  apt_key:
-    url: 'https://download.docker.com/linux/ubuntu/gpg'
-  when:
-    - ansible_distribution|lower == 'ubuntu'
-
-- name: Ubuntu - Add docker-ce repo
-  apt_repository:
-    repo: 'deb https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable'
-    filename: 'docker'
-    mode: 644
-  when:
-      - ansible_distribution|lower == 'ubuntu'
-
-- name: Ubuntu - Install docker-ce
-  apt:
-    name:
-      - 'docker-ce'
-      - 'containerd.io'
-      - 'docker-ce-cli'
-  when:
-    - ansible_distribution|lower == 'ubuntu'
-
-# General
-- name: Install required system tools and packages
-  package:
-    name: "{{ csit_packages | join(',') }}"
-    state: 'latest'
-
-- name: Adjust number of hugepages
-  sysctl:
-    name: 'vm.nr_hugepages'
-    value: '512'
-    state: 'present'
-    sysctl_file: '/etc/sysctl.d/90-csit.conf'
-    reload: 'yes'
-
-- name: "Add user for running tests: {{ csit.test_user.name }}"
-  user:
-    name: '{{ csit.test_user.name }}'
-    password: '{{ csit.test_user.password }}'
-    home: '{{ csit.test_user.home }}'
-    shell: '{{ csit.test_user.shell }}'
-
-- name: "Allow passwordless sudo for user: {{ csit.test_user.name }}"
-  lineinfile:
-    path: '/etc/sudoers.d/{{ csit.test_user.name }}'
-    line: '{{ csit.test_user.name }} ALL=(ALL) NOPASSWD:ALL'
-    create: 'yes'
-    mode: 660
-
-- name: Add vagrant user to docker group
-  user:
-    name: 'vagrant'
-    groups:
-      - 'docker'
-
-- name: Reload groups for current session
-  command: '/usr/bin/newgrp docker'
-
-- name: Load required kernel modules
-  modprobe:
-    name: '{{ item }}'
-    state: 'present'
-  with_items:
-    - vfio-pci
-
-- name: Enable required kernel modules on boot
-  lineinfile:
-    path: '/etc/modules'
-    line: '{{ item }}'
-    create: 'yes'
-    state: 'present'
-    insertafter: EOF
-  with_items:
-    - vfio-pci
-
-- name: Clone CSIT repository
-  become_user: vagrant
-  git:
-    repo: '{{ csit.repository.url }}'
-    dest: '{{ csit.home }}'
-    accept_hostkey: yes
-    version: '{{ csit.repository.version }}'
-
-- name: Prepare python virtual environmant for CSIT
-  become_user: vagrant
-  command: '/usr/bin/virtualenv --python=/usr/bin/python3 {{ csit.home }}/env'
-  args:
-    chdir: '{{ csit.home }}'
-    creates: '{{ csit.home }}/env/bin/activate'
-
-- name: Install python dependencies (from {{ csit.home }}/requirements.txt)
-  become_user: vagrant
-  shell: |
-      source '{{ csit.home }}/env/bin/activate' &&
-      pip3 install --timeout 300 -r '{{ csit.home }}/requirements.txt'
-  args:
-    executable: '/bin/bash'
-
-- name: Load csit docker image from local drive if it exists (/vagrant/csit-sut.tar)
-  shell: |
-    if [ -z "$(docker images -q `cat {{ csit.home }}/VPP_DEVICE_IMAGE`)" ] && [ -e /vagrant/csit-sut.tar ]; then
-      docker load -i /vagrant/csit-sut.tar;
-    fi;
-  ignore_errors: yes
diff --git a/resources/tools/vagrant/ansible/vppdevice b/resources/tools/vagrant/ansible/vppdevice
deleted file mode 100644 (file)
index 3273c64..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# Inventory file for VPP Device box environment
-
-[vppdevice]
-localhost    ansible_connection=local
diff --git a/resources/tools/vagrant/ansible/vppdevice.yml b/resources/tools/vagrant/ansible/vppdevice.yml
deleted file mode 100644 (file)
index 7c3992c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
----
-# file: vppdevice.yml
-- hosts: vppdevice
-  roles:
-    - common
-    - csit
\ No newline at end of file