aboutsummaryrefslogtreecommitdiffstats
path: root/resources/tools/vagrant/ansible/roles/csit/tasks/main.yml
blob: 6f226fd54d6824975dd6928b972ede0573ace0e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
---
# 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'
    update_cache: 'yes'

- 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