aboutsummaryrefslogtreecommitdiffstats
path: root/resources/tools/testbed-setup/ansible/roles
diff options
context:
space:
mode:
Diffstat (limited to 'resources/tools/testbed-setup/ansible/roles')
-rw-r--r--resources/tools/testbed-setup/ansible/roles/calibration/tasks/main.yaml59
-rw-r--r--resources/tools/testbed-setup/ansible/roles/common/defaults/main.yaml1
-rw-r--r--resources/tools/testbed-setup/ansible/roles/csit_sut_image/files/Dockerfile173
-rw-r--r--resources/tools/testbed-setup/ansible/roles/csit_sut_image/files/supervisord.conf24
-rw-r--r--resources/tools/testbed-setup/ansible/roles/csit_sut_image/tasks/main.yaml27
-rw-r--r--resources/tools/testbed-setup/ansible/roles/performance_tuning/defaults/main.yaml8
-rw-r--r--resources/tools/testbed-setup/ansible/roles/performance_tuning/tasks/main.yaml2
-rw-r--r--resources/tools/testbed-setup/ansible/roles/vpp_device/tasks/main.yaml2
8 files changed, 258 insertions, 38 deletions
diff --git a/resources/tools/testbed-setup/ansible/roles/calibration/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/calibration/tasks/main.yaml
index e88c39c180..a6e8898f9d 100644
--- a/resources/tools/testbed-setup/ansible/roles/calibration/tasks/main.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/calibration/tasks/main.yaml
@@ -1,7 +1,7 @@
---
# file: roles/calibration/tasks/main.yaml
-- name: Calibration - Install Distribution - Release - Machine Prerequisites
+- name: Install Distribution - Release - Machine Prerequisites
package:
name: "{{ packages | flatten(levels=1) }}"
state: latest
@@ -9,41 +9,42 @@
tags:
- install-dependencies
-- name: Calibration - Check CPU Power States
+- name: Check CPU Power States
shell: "lscpu"
register: current_lscpu
changed_when: false
- failed_when: |
- 'CPU min MHz' in current_lscpu.stdout and
- 'Intel(R) Xeon(R)' in current_lscpu.stdout
tags:
- check-cpu-frequency
-- name: Calibration - Check Kernel Version of "{{ kernel_version }}"
- shell: "uname -r"
- register: current_kernel_version
- changed_when: false
- failed_when: |
- current_kernel_version.stdout not in kernel_version
+- name: Check CPU Power States
+ assert:
+ that:
+ - "'CPU min MHz' not in current_lscpu.stdout or 'Intel(R) Xeon(R)' not in ansible_processor"
+ fail_msg: "CPU configuration!"
+ success_msg: "CPU configuration match."
tags:
- - check-kernel-version
+ - check-cpu-frequency
-- name: Calibration - Check Kernel Parameters
- shell: "cat /proc/cmdline"
- register: current_kernel_parameters
- changed_when: false
- failed_when: |
- 'isolcpus' not in current_kernel_parameters.stdout or
- 'nohz_full' not in current_kernel_parameters.stdout or
- 'rcu_nocbs' not in current_kernel_parameters.stdout or
- 'processor.max_cstate=1' not in current_kernel_parameters.stdout or
- 'nmi_watchdog=0' not in current_kernel_parameters.stdout or
- 'intel_iommu=on' not in current_kernel_parameters.stdout or
- 'nosoftlockup' not in current_kernel_parameters.stdout
+- name: Check Kernel Parameters
+ assert:
+ that:
+ - item in ansible_cmdline and grub[item] == ansible_cmdline[item]
+ fail_msg: "Kernel parameters!"
+ success_msg: "Kernel parameters match."
+ loop: "{{ grub.keys()|sort }}"
tags:
- - check-cmdline
+ - check-kernel-params
+
+- name: Check Kernel Version
+ assert:
+ that:
+ - ansible_kernel not in kernel_version_by_distro_by_arch
+ fail_msg: "Kernel version!"
+ success_msg: "Kernel version match."
+ tags:
+ - check-kernel-version
-- name: Calibration - Get Spectre Meltdown Checker
+- name: Get Spectre Meltdown Checker
get_url:
url: "https://meltdown.ovh"
dest: "/opt/spectre-meltdown-checker.sh"
@@ -51,7 +52,7 @@
tags:
- check-spectre-meltdown
-- name: Calibration - Run Spectre Meltdown Checker
+- name: Run Spectre Meltdown Checker
shell: "/opt/spectre-meltdown-checker.sh --no-color || true"
async: 60
poll: 0
@@ -60,13 +61,13 @@
tags:
- check-spectre-meltdown
-- name: Calibration - {{ ansible_machine }} Specific
+- name: "{{ ansible_machine }} Specific"
include_tasks: "{{ ansible_machine }}.yaml"
tags:
- check-machine-specific
- check-jitter-tool
-- name: Check sync status
+- name: Check Sync Status
async_status:
jid: "{{ spectre_meltdown_async.ansible_job_id }}"
register: "spectre_meltdown_poll_results"
diff --git a/resources/tools/testbed-setup/ansible/roles/common/defaults/main.yaml b/resources/tools/testbed-setup/ansible/roles/common/defaults/main.yaml
index 13db641423..5517b20e1f 100644
--- a/resources/tools/testbed-setup/ansible/roles/common/defaults/main.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/common/defaults/main.yaml
@@ -19,6 +19,7 @@ packages_by_distro:
ubuntu:
- "build-essential"
- "libpcap-dev"
+ - "net-tools"
- "python-all"
- "python-apt"
- "python-cffi"
diff --git a/resources/tools/testbed-setup/ansible/roles/csit_sut_image/files/Dockerfile b/resources/tools/testbed-setup/ansible/roles/csit_sut_image/files/Dockerfile
new file mode 100644
index 0000000000..6dddad6ebb
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/csit_sut_image/files/Dockerfile
@@ -0,0 +1,173 @@
+# Copyright (c) 2020 Cisco and/or its affiliates.
+# 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.
+
+FROM ubuntu:18.04
+LABEL Description="CSIT vpp-device ubuntu 18.04 SUT image"
+LABEL Version="master"
+
+# Setup the environment
+ENV DEBIAN_FRONTEND=noninteractive
+ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
+ENV NOTVISIBLE "in users profile"
+ENV VPP_PYTHON_PREFIX=/var/cache/vpp/python
+
+# Install packages and Docker
+RUN apt-get -q update \
+ && apt-get install -y -qq \
+ # general tools
+ apt-transport-https \
+ bridge-utils \
+ cloud-init \
+ curl \
+ gdb \
+ locales \
+ net-tools \
+ openssh-server \
+ pciutils \
+ rsyslog \
+ software-properties-common \
+ ssh \
+ sudo \
+ supervisor \
+ tar \
+ vim \
+ wget \
+ # csit requirements
+ cmake \
+ dkms \
+ gfortran \
+ libblas-dev \
+ libffi-dev \
+ liblapack-dev \
+ libpcap-dev \
+ libssl-dev \
+ python-all \
+ python-apt \
+ python-cffi \
+ python-cffi-backend \
+ python-dev \
+ python-enum34 \
+ python-pip \
+ python-setuptools \
+ python-virtualenv \
+ python3-all \
+ python3-apt \
+ python3-cffi \
+ python3-cffi-backend \
+ python3-dev \
+ python3-pip \
+ python3-setuptools \
+ python3-virtualenv \
+ qemu-system \
+ socat \
+ strongswan \
+ unzip \
+ tcpdump \
+ zlib1g-dev \
+ # vpp requirements
+ ca-certificates \
+ libapr1 \
+ libmbedcrypto1 \
+ libmbedtls10 \
+ libmbedx509-0 \
+ libnuma1 \
+ sshpass \
+ && curl -L https://packagecloud.io/fdio/master/gpgkey | sudo apt-key add - \
+ && curl -s https://packagecloud.io/install/repositories/fdio/master/script.deb.sh | sudo bash \
+ # temp hack due to build.sh
+ && apt-get install -y -qq vpp-ext-deps \
+ && curl -fsSL https://get.docker.com | sh \
+ && rm -rf /var/lib/apt/lists/*
+
+# Configure locales
+RUN locale-gen en_US.UTF-8 \
+ && dpkg-reconfigure locales
+
+# Fix permissions
+RUN chown root:syslog /var/log \
+ && chmod 755 /etc/default
+
+# Create directory structure
+RUN mkdir -p /tmp/dumps \
+ && mkdir -p /var/cache/vpp/python \
+ && mkdir -p /var/run/sshd
+
+# CSIT PIP pre-cache
+RUN pip3 install \
+ ecdsa==0.13.3 \
+ paramiko==2.6.0 \
+ pycrypto==2.6.1 \
+ pypcap==1.2.3 \
+ PyYAML==5.1.1 \
+ requests==2.22.0 \
+ robotframework==3.1.2 \
+ scapy==2.4.3 \
+ scp==0.13.2 \
+ ansible==2.7.8 \
+ dill==0.2.8.2 \
+ numpy==1.17.3 \
+ hdrhistogram==0.6.1 \
+ plotly==4.1.1 \
+ PTable==0.9.2 \
+ Sphinx==2.2.1 \
+ sphinx-rtd-theme==0.4.0 \
+ sphinxcontrib-programoutput==0.15 \
+ sphinxcontrib-robotdoc==0.11.0 \
+ alabaster==0.7.12 \
+ Babel==2.7.0 \
+ bcrypt==3.1.7 \
+ certifi==2019.9.11 \
+ cffi==1.13.2 \
+ chardet==3.0.4 \
+ cryptography==2.8 \
+ docutils==0.15.2 \
+ future==0.18.2 \
+ idna==2.8 \
+ imagesize==1.1.0 \
+ Jinja2==2.10.3 \
+ MarkupSafe==1.1.1 \
+ packaging==19.2 \
+ pbr==5.4.3 \
+ pycparser==2.19 \
+ Pygments==2.4.2 \
+ PyNaCl==1.3.0 \
+ pyparsing==2.4.4 \
+ python-dateutil==2.8.1 \
+ pytz==2019.3 \
+ retrying==1.3.3 \
+ six==1.13.0 \
+ snowballstemmer==2.0.0 \
+ sphinxcontrib-applehelp==1.0.1 \
+ sphinxcontrib-devhelp==1.0.1 \
+ sphinxcontrib-htmlhelp==1.0.2 \
+ sphinxcontrib-jsmath==1.0.1 \
+ sphinxcontrib-qthelp==1.0.2 \
+ sphinxcontrib-serializinghtml==1.1.3 \
+ urllib3==1.25.6
+
+# ARM workaround
+RUN pip3 install \
+ pandas==0.25.3 \
+ scipy==1.1.0
+
+# SSH settings
+RUN echo 'root:Csit1234' | chpasswd \
+ && sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config \
+ && sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd \
+ && echo "export VISIBLE=now" >> /etc/profile
+
+EXPOSE 2222
+
+COPY supervisord.conf /etc/supervisor/supervisord.conf
+
+CMD ["sh", "-c", "rm -f /dev/shm/db /dev/shm/global_vm /dev/shm/vpe-api; /usr/bin/supervisord -c /etc/supervisor/supervisord.conf; /usr/sbin/sshd -D -p 2222"] \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/csit_sut_image/files/supervisord.conf b/resources/tools/testbed-setup/ansible/roles/csit_sut_image/files/supervisord.conf
new file mode 100644
index 0000000000..22a36be5c6
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/csit_sut_image/files/supervisord.conf
@@ -0,0 +1,24 @@
+[unix_http_server]
+file = /tmp/supervisor.sock
+chmod = 0777
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl = unix:///tmp/supervisor.sock
+
+[supervisord]
+pidfile = /tmp/supervisord.pid
+identifier = supervisor
+directory = /tmp
+logfile = /tmp/supervisord.log
+loglevel = debug
+nodaemon = false
+
+[program:vpp]
+command = /usr/bin/vpp -c /etc/vpp/startup.conf
+autostart = false
+autorestart = true
+redirect_stderr = true
+priority = 1 \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/csit_sut_image/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/csit_sut_image/tasks/main.yaml
new file mode 100644
index 0000000000..7b41be8a64
--- /dev/null
+++ b/resources/tools/testbed-setup/ansible/roles/csit_sut_image/tasks/main.yaml
@@ -0,0 +1,27 @@
+---
+# file: roles/csit_sut_image/tasks/main.yaml
+
+- name: Create a directory if it does not exist
+ file:
+ path: "/opt/csit-sut/"
+ state: "directory"
+ mode: 0755
+ tags: csit-sut-image
+
+- name: Copy Build Items
+ copy:
+ src: "{{ item }}"
+ dest: "/opt/csit-sut/"
+ owner: "root"
+ group: "root"
+ mode: 0755
+ with_items:
+ - Dockerfile
+ - supervisord.conf
+ tags: csit-sut-image
+
+- name: Build CSIT SUT Docker Image
+ shell: "docker build -t csit_sut-ubuntu1804:local ."
+ args:
+ chdir: "/opt/csit-sut"
+ tags: csit-sut-image \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/performance_tuning/defaults/main.yaml b/resources/tools/testbed-setup/ansible/roles/performance_tuning/defaults/main.yaml
index edec57aba0..612bc5a946 100644
--- a/resources/tools/testbed-setup/ansible/roles/performance_tuning/defaults/main.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/performance_tuning/defaults/main.yaml
@@ -14,10 +14,4 @@ packages_by_arch:
aarch64:
- []
x86_64:
- - []
-
-grub_cmdline_linux:
- aarch64:
- - "GRUB_CMDLINE_LINUX=\"isolcpus={{ grub.isolcpus }} nohz_full={{ grub.nohz_full }} rcu_nocbs={{ grub.rcu_nocbs }} intel_iommu=on nmi_watchdog=0 audit=0 nosoftlockup processor.max_cstate=1\""
- x86_64:
- - "GRUB_CMDLINE_LINUX=\"isolcpus={{ grub.isolcpus }} nohz_full={{ grub.nohz_full }} rcu_nocbs={{ grub.rcu_nocbs }} numa_balancing=disable intel_pstate=disable intel_iommu=on iommu=pt nmi_watchdog=0 audit=0 nosoftlockup processor.max_cstate=1 intel_idle.max_cstate=1 hpet=disable tsc=reliable mce=off\""
+ - [] \ No newline at end of file
diff --git a/resources/tools/testbed-setup/ansible/roles/performance_tuning/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/performance_tuning/tasks/main.yaml
index 3a8f35b57f..c437b40f86 100644
--- a/resources/tools/testbed-setup/ansible/roles/performance_tuning/tasks/main.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/performance_tuning/tasks/main.yaml
@@ -19,7 +19,7 @@
path: "/etc/default/grub"
state: "present"
regexp: "^GRUB_CMDLINE_LINUX="
- line: "{{ grub_cmdline_linux[ansible_machine] | join() }}"
+ line: "GRUB_CMDLINE_LINUX=\"{% for key, value in grub.items() %}{% if value %}{{key}}={{value}} {% else %}{{key}} {% endif %}{% endfor %}\""
notify:
- "Update GRUB"
tags:
diff --git a/resources/tools/testbed-setup/ansible/roles/vpp_device/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/vpp_device/tasks/main.yaml
index b93853b01f..33b551715f 100644
--- a/resources/tools/testbed-setup/ansible/roles/vpp_device/tasks/main.yaml
+++ b/resources/tools/testbed-setup/ansible/roles/vpp_device/tasks/main.yaml
@@ -82,7 +82,7 @@
path: "/etc/default/grub"
state: "present"
regexp: "^GRUB_CMDLINE_LINUX="
- line: 'GRUB_CMDLINE_LINUX="hugepagesz=2M hugepages={{ grub.nr_hugepages }}"'
+ line: "GRUB_CMDLINE_LINUX=\"{% for key, value in grub.items() %}{% if value %}{{key}}={{value}} {% else %}{{key}} {% endif %}{% endfor %}\""
notify:
- "Update GRUB"
- "Reboot server"