diff options
author | Ludovit Mikula <ludovit.mikula@pantheon.tech> | 2019-02-06 15:47:23 +0100 |
---|---|---|
committer | Ľudovít Mikula <ludovit.mikula@pantheon.tech> | 2019-04-09 15:10:12 +0200 |
commit | 374ea2f45d17f361aa612becba657ecaade0d0b5 (patch) | |
tree | ca29e9c804c52aa14cc577299443958491f4e994 /resources/tools/vagrant/ansible | |
parent | 42e6c422a5ce4f58813a8c3a44ba0e9ac9238c9a (diff) |
Add vagrant setup for testing VPP device locally
Fixed trailing whitespaces
Fixed tabs vs. spaces
Removed dead code
Changed network interface naming
Changed default number of retries for VPP startup to 120
Updated number of hugepages during provisioning
Externalized CSIT related sysctl settings to 90-csit.conf
Removed hardcoded local docker image name.
Added new interface required for honeycomb device testing.
Change-Id: I5eb38c8b1a4d96e4220dbd2e202e94f1d47e804e
Signed-off-by: Ludovit Mikula <ludovit.mikula@pantheon.tech>
Diffstat (limited to 'resources/tools/vagrant/ansible')
7 files changed, 195 insertions, 0 deletions
diff --git a/resources/tools/vagrant/ansible/group_vars/vppdevice.yml b/resources/tools/vagrant/ansible/group_vars/vppdevice.yml new file mode 100644 index 0000000000..ffa60e2295 --- /dev/null +++ b/resources/tools/vagrant/ansible/group_vars/vppdevice.yml @@ -0,0 +1,12 @@ +--- +# 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 new file mode 100644 index 0000000000..ffce5bc6fc --- /dev/null +++ b/resources/tools/vagrant/ansible/master.yml @@ -0,0 +1,3 @@ +--- +# 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 new file mode 100644 index 0000000000..d5857da05c --- /dev/null +++ b/resources/tools/vagrant/ansible/roles/common/tasks/main.yml @@ -0,0 +1,22 @@ +--- +# file: common/tasks/main.yml + +- name: Update and upgrade system packages and update cache if it's older then 1 hour + apt: + upgrade: dist + cache_valid_time: 3600 + +- name: Install required common system packages + apt: + name: + - apt-transport-https + - ca-certificates + - curl + - software-properties-common + state: latest + +- name: Set /bin/sh to bash instead of dash + alternatives: + name: sh + link: /bin/sh + path: /bin/bash
\ No newline at end of file diff --git a/resources/tools/vagrant/ansible/roles/csit/files/99-vppdevice.yaml b/resources/tools/vagrant/ansible/roles/csit/files/99-vppdevice.yaml new file mode 100644 index 0000000000..bcaa67099d --- /dev/null +++ b/resources/tools/vagrant/ansible/roles/csit/files/99-vppdevice.yaml @@ -0,0 +1,28 @@ +network: + version: 2 + renderer: networkd + ethernets: + enp0s8: + match: + macaddress: 08:00:27:0f:e0:4d + set-name: enpTGa + enp0s9: + match: + macaddress: 08:00:27:61:f7:ad + set-name: enpTGb + enp0s17: + match: + macaddress: 08:00:27:dc:5d:a4 + set-name: enpTGc + enp0s10: + match: + macaddress: 08:00:27:38:5e:58 + set-name: enpSUTa + enp0s16: + match: + macaddress: 08:00:27:e3:f5:42 + set-name: enpSUTb + enp0s18: + match: + macaddress: 08:00:27:4f:7c:63 + set-name: enpSUTc diff --git a/resources/tools/vagrant/ansible/roles/csit/tasks/main.yml b/resources/tools/vagrant/ansible/roles/csit/tasks/main.yml new file mode 100644 index 0000000000..9431fd53be --- /dev/null +++ b/resources/tools/vagrant/ansible/roles/csit/tasks/main.yml @@ -0,0 +1,120 @@ +--- +# 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 + +- name: Apply network config changes + command: /usr/sbin/netplan apply + +- name: Install required system tools and packages + apt: + name: + - wget + - curl + - python-pip + - virtualenv + - libpcap-dev + state: present + +- 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 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 + +- 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 + +- 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 }}" + 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: Install and update pip and virtualenv + become_user: vagrant + pip: + name: + - pip + - virtualenv + state: latest + +- name: Prepare python virtual environmant for CSIT + become_user: vagrant + command: "/usr/bin/virtualenv {{ 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 && pip 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 new file mode 100644 index 0000000000..3273c644a0 --- /dev/null +++ b/resources/tools/vagrant/ansible/vppdevice @@ -0,0 +1,4 @@ +# 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 new file mode 100644 index 0000000000..7c3992cf26 --- /dev/null +++ b/resources/tools/vagrant/ansible/vppdevice.yml @@ -0,0 +1,6 @@ +--- +# file: vppdevice.yml +- hosts: vppdevice + roles: + - common + - csit
\ No newline at end of file |