aboutsummaryrefslogtreecommitdiffstats
path: root/ansible/roles
diff options
context:
space:
mode:
Diffstat (limited to 'ansible/roles')
-rw-r--r--ansible/roles/build_yardstick_image/tasks/cloudimg_modify_nsb.yml2
-rw-r--r--ansible/roles/build_yardstick_image/tasks/post_build.yml21
-rw-r--r--ansible/roles/build_yardstick_image/tasks/pre_build.yml12
-rw-r--r--ansible/roles/configure_rabbitmq/tasks/main.yml37
-rw-r--r--ansible/roles/configure_rabbitmq/templates/rabbitmq.sh.j220
-rw-r--r--ansible/roles/download_civetweb/tasks/main.yml4
-rw-r--r--ansible/roles/download_dpdk/tasks/main.yml4
-rw-r--r--ansible/roles/download_drivers/tasks/i40evf.yml4
-rw-r--r--ansible/roles/download_l2fwd/tasks/main.yml4
-rw-r--r--ansible/roles/download_pktgen/tasks/main.yml4
-rw-r--r--ansible/roles/download_trex/tasks/main.yml4
-rw-r--r--ansible/roles/enable_cpu_isolation_on_boot/defaults/main.yml21
-rw-r--r--ansible/roles/enable_cpu_isolation_on_boot/tasks/main.yml59
-rwxr-xr-xansible/roles/enable_hugepages_on_boot/tasks/main.yml34
-rw-r--r--ansible/roles/enable_iommu_on_boot/tasks/main.yml37
-rw-r--r--ansible/roles/install_image_dependencies/defaults/main.yml2
16 files changed, 212 insertions, 57 deletions
diff --git a/ansible/roles/build_yardstick_image/tasks/cloudimg_modify_nsb.yml b/ansible/roles/build_yardstick_image/tasks/cloudimg_modify_nsb.yml
index c9e386346..8e2c3a623 100644
--- a/ansible/roles/build_yardstick_image/tasks/cloudimg_modify_nsb.yml
+++ b/ansible/roles/build_yardstick_image/tasks/cloudimg_modify_nsb.yml
@@ -1,4 +1,4 @@
-# Copyright (c) 2018 Intel Corporation.
+# Copyright (c) 2018-2019 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
diff --git a/ansible/roles/build_yardstick_image/tasks/post_build.yml b/ansible/roles/build_yardstick_image/tasks/post_build.yml
index c6888f8df..abbf57c03 100644
--- a/ansible/roles/build_yardstick_image/tasks/post_build.yml
+++ b/ansible/roles/build_yardstick_image/tasks/post_build.yml
@@ -35,6 +35,10 @@
state: unmounted
- mount:
+ name: "{{ mountdir }}/run"
+ state: unmounted
+
+- mount:
name: "{{ mountdir }}"
state: unmounted
@@ -44,3 +48,20 @@
- debug:
msg: "yardstick image = {{ imgfile }}"
+
+- set_fact:
+ imgdest: "/var/lib/libvirt/images/{{ imgfile | basename}}"
+ name: "{{ (imgfile | basename | splitext)[0] }}"
+ ext: "{{ (imgfile | basename | splitext)[1] }}"
+
+- name: Verify if imgfile exists in libvirt images
+ stat:
+ path: "{{ imgdest }}"
+ register: imgdest_stat
+
+- set_fact:
+ imgdest: "/var/lib/libvirt/images/{{ name }}_autogen{{ ext }}"
+ when: imgdest_stat.stat.exists
+
+- name: Copy image to libvirt images
+ shell: "cp {{ imgfile }} {{ imgdest }}"
diff --git a/ansible/roles/build_yardstick_image/tasks/pre_build.yml b/ansible/roles/build_yardstick_image/tasks/pre_build.yml
index 2dae38060..3ac8e90e9 100644
--- a/ansible/roles/build_yardstick_image/tasks/pre_build.yml
+++ b/ansible/roles/build_yardstick_image/tasks/pre_build.yml
@@ -45,6 +45,7 @@
with_items:
# order matters
- "{{ mountdir }}/proc"
+ - "{{ mountdir }}/run"
- "{{ mountdir }}"
- "/mnt/{{ release }}"
@@ -178,6 +179,17 @@
fstab: "{{ fake_fstab }}"
state: mounted
+- name: mount chroot /run
+ mount:
+ src: /run
+ name: "{{ mountdir }}/run"
+ fstype: tmpfs
+ opts: bind
+ # !!!!!!! this is required otherwise we add entries to /etc/fstab
+ # and prevent the system from booting
+ fstab: "{{ fake_fstab }}"
+ state: mounted
+
- name: if arm copy qemu-aarch64-static into chroot
copy:
src: /usr/bin/qemu-aarch64-static
diff --git a/ansible/roles/configure_rabbitmq/tasks/main.yml b/ansible/roles/configure_rabbitmq/tasks/main.yml
index 3ad60c1ea..59998abc0 100644
--- a/ansible/roles/configure_rabbitmq/tasks/main.yml
+++ b/ansible/roles/configure_rabbitmq/tasks/main.yml
@@ -12,19 +12,28 @@
# See the License for the specific language governing permissions and
# limitations under the License.
---
-- name: Restart rabbitmq
- service:
- name: rabbitmq-server
- state: restarted
+- block:
+ - name: Restart rabbitmq
+ service:
+ name: rabbitmq-server
+ state: restarted
-- name: rabbitmqctl start_app
- shell: rabbitmqctl start_app
+ - name: rabbitmqctl start_app
+ shell: rabbitmqctl start_app
-- name: Configure rabbitmq
- rabbitmq_user:
- user: yardstick
- password: yardstick
- configure_priv: .*
- read_priv: .*
- write_priv: .*
- state: present
+ - name: Configure rabbitmq
+ rabbitmq_user:
+ user: yardstick
+ password: yardstick
+ configure_priv: .*
+ read_priv: .*
+ write_priv: .*
+ state: present
+ when: install_mode == inst_mode_baremetal
+
+- name: Create rabbitmq file for supervisor
+ template:
+ src: rabbitmq.sh.j2
+ dest: /etc/yardstick/rabbitmq.sh
+ mode: 0755
+ when: install_mode == inst_mode_container
diff --git a/ansible/roles/configure_rabbitmq/templates/rabbitmq.sh.j2 b/ansible/roles/configure_rabbitmq/templates/rabbitmq.sh.j2
new file mode 100644
index 000000000..a91565c01
--- /dev/null
+++ b/ansible/roles/configure_rabbitmq/templates/rabbitmq.sh.j2
@@ -0,0 +1,20 @@
+#!/bin/bash
+trap "rabbitmqctl stop_app" EXIT
+
+rabbitmqctl stop_app
+service rabbitmq-server restart
+rabbitmqctl start_app
+
+tmp_file="/tmp/$(basename -- $0).configured"
+if [ ! -f "$tmp_file" ]; then
+ rabbitmqctl add_user yardstick yardstick
+ rabbitmqctl set_permissions -p / yardstick '.*' '.*' '.*'
+ touch "$tmp_file"
+fi
+
+while :
+do
+ sleep 5
+ service rabbitmq-server status > /dev/null 2>&1 || exit 1
+ rabbitmqctl report | grep "Status of node rabbit@`hostname`" > /dev/null 2>&1 || exit 1
+done
diff --git a/ansible/roles/download_civetweb/tasks/main.yml b/ansible/roles/download_civetweb/tasks/main.yml
index 03dd3ccd3..b6a475774 100644
--- a/ansible/roles/download_civetweb/tasks/main.yml
+++ b/ansible/roles/download_civetweb/tasks/main.yml
@@ -18,6 +18,10 @@
dest: "{{ clone_dest }}/"
validate_certs: False
checksum: "{{ civetweb_sha256s }}"
+ register: package_result
+ until: package_result is succeeded
+ retries: 10
+ delay: 5
- name: unarchive civetweb
unarchive:
diff --git a/ansible/roles/download_dpdk/tasks/main.yml b/ansible/roles/download_dpdk/tasks/main.yml
index 55b466cb7..e434536a3 100644
--- a/ansible/roles/download_dpdk/tasks/main.yml
+++ b/ansible/roles/download_dpdk/tasks/main.yml
@@ -26,6 +26,10 @@
dest: "{{ dpdk_dest }}"
validate_certs: False
checksum: "{{ dpdk_md5[dpdk_version] }}"
+ register: package_result
+ until: package_result is succeeded
+ retries: 10
+ delay: 5
- unarchive:
src: "{{ dpdk_dest }}/{{ dpdk_file }}"
diff --git a/ansible/roles/download_drivers/tasks/i40evf.yml b/ansible/roles/download_drivers/tasks/i40evf.yml
index cb8a09d6c..48a0330ab 100644
--- a/ansible/roles/download_drivers/tasks/i40evf.yml
+++ b/ansible/roles/download_drivers/tasks/i40evf.yml
@@ -23,6 +23,10 @@
dest: "{{ i40evf_dest }}/{{ i40evf_gzfile }}"
validate_certs: False
checksum: "{{ i40evf_checksum[i40evf_version] }}"
+ register: package_result
+ until: package_result is succeeded
+ retries: 10
+ delay: 5
- name: Unarchive the i40evf file
unarchive:
diff --git a/ansible/roles/download_l2fwd/tasks/main.yml b/ansible/roles/download_l2fwd/tasks/main.yml
index 7f2ea25c4..43b0ec366 100644
--- a/ansible/roles/download_l2fwd/tasks/main.yml
+++ b/ansible/roles/download_l2fwd/tasks/main.yml
@@ -20,6 +20,10 @@
get_url:
url: "{{ l2fwd_url }}"
dest: "{{ l2fwd_dest }}"
+ register: package_result
+ until: package_result is succeeded
+ retries: 10
+ delay: 5
- unarchive:
src: "{{ l2fwd_dest }}/{{ l2fwd_file }}"
diff --git a/ansible/roles/download_pktgen/tasks/main.yml b/ansible/roles/download_pktgen/tasks/main.yml
index ff71f207d..b5ac8cfe8 100644
--- a/ansible/roles/download_pktgen/tasks/main.yml
+++ b/ansible/roles/download_pktgen/tasks/main.yml
@@ -22,6 +22,10 @@
dest: "{{ pktgen_dest }}"
validate_certs: False
checksum: "{{ pktgen_sha256s[pktgen_version] }}"
+ register: package_result
+ until: package_result is succeeded
+ retries: 10
+ delay: 5
- unarchive:
src: "{{ pktgen_dest }}/{{ pktgen_file }}"
diff --git a/ansible/roles/download_trex/tasks/main.yml b/ansible/roles/download_trex/tasks/main.yml
index 9df67d939..44449a9c0 100644
--- a/ansible/roles/download_trex/tasks/main.yml
+++ b/ansible/roles/download_trex/tasks/main.yml
@@ -23,6 +23,10 @@
dest: "{{ trex_dest }}"
validate_certs: False
checksum: "{{ trex_sha256s[trex_version] }}"
+ register: package_result
+ until: package_result is succeeded
+ retries: 10
+ delay: 5
- name: unarchive Trex
unarchive:
diff --git a/ansible/roles/enable_cpu_isolation_on_boot/defaults/main.yml b/ansible/roles/enable_cpu_isolation_on_boot/defaults/main.yml
new file mode 100644
index 000000000..fda366682
--- /dev/null
+++ b/ansible/roles/enable_cpu_isolation_on_boot/defaults/main.yml
@@ -0,0 +1,21 @@
+# Copyright (c) 2018-2019 Intel Corporation
+#
+# 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.
+---
+grub_file: "/etc/default/grub"
+isolcpus_help_string: ' # added by Yardstick ansible isolcpus role'
+isolcpu_params: " isolcpus={{ ISOL_CPUS }} nohz=on nohz_full={{ ISOL_CPUS }} rcu_nocbs={{ ISOL_CPUS }}"
+enable_isolcpu: 'GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX{{ isolcpu_params }}"'
+update_grub:
+ Debian: "update-grub2"
+ RedHat: "grub2-mkconfig -o /boot/grub2/grub.cfg"
diff --git a/ansible/roles/enable_cpu_isolation_on_boot/tasks/main.yml b/ansible/roles/enable_cpu_isolation_on_boot/tasks/main.yml
new file mode 100644
index 000000000..e11288bfd
--- /dev/null
+++ b/ansible/roles/enable_cpu_isolation_on_boot/tasks/main.yml
@@ -0,0 +1,59 @@
+# Copyright (c) 2018-2019 Intel Corporation
+#
+# 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.
+---
+- name: Check if isolcpus is set by this role in {{ grub_file}}
+ lineinfile:
+ path: "{{ grub_file }}"
+ regexp: '{{ isolcpus_help_string }}'
+ state: absent
+ check_mode: yes
+ register: is_nsb_isolcpus_role
+ ignore_errors: True
+
+- name: Check if isolcpus is set by someone else
+ lineinfile:
+ path: "{{ grub_file }}"
+ regexp: "isolcpus="
+ state: absent
+ check_mode: yes
+ register: is_isolcpu
+ ignore_errors: True
+
+- name: Send warning that CPU isolation cannot be configured
+ debug:
+ msg: "WARNING: CPU isolation is not configured"
+ when:
+ - not is_nsb_isolcpus_role.changed and not is_isolcpu.changed
+ - ISOL_CPUS is not defined
+
+- name: Send info that CPU isolation configured by someone else
+ debug:
+ msg: "INFO: NOT modified, CPU isolation is already configured by someone."
+ when:
+ - not is_nsb_isolcpus_role.changed and is_isolcpu.changed
+
+- name: Add/update isolcpus when ISOL_CPUS is defined and not set at all or set by this role
+ lineinfile:
+ path: "{{ grub_file }}"
+ regexp: "{{ isolcpus_help_string }}"
+ line: '{{ enable_isolcpu }} {{ isolcpus_help_string }}'
+ when:
+ - is_nsb_isolcpus_role.changed or not is_nsb_isolcpus_role.changed and not is_isolcpu.changed
+ - ISOL_CPUS is defined
+
+- name: Update grub for bare metal usage
+ command: "{{ update_grub[ansible_os_family] }}"
+ when:
+ - is_nsb_isolcpus_role.changed or not is_nsb_isolcpus_role.changed and not is_isolcpu.changed
+ - ISOL_CPUS is defined
diff --git a/ansible/roles/enable_hugepages_on_boot/tasks/main.yml b/ansible/roles/enable_hugepages_on_boot/tasks/main.yml
index 75526eb19..f84e07545 100755
--- a/ansible/roles/enable_hugepages_on_boot/tasks/main.yml
+++ b/ansible/roles/enable_hugepages_on_boot/tasks/main.yml
@@ -1,4 +1,4 @@
-# Copyright (c) 2017 Intel Corporation
+# Copyright (c) 2017-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
---
-- name: check if hugepages are set by this role
+- name: Check if hugepages are set by this role
command: "grep -o '{{ hugepage_param_regex }}' /etc/default/grub"
register: is_mine_huge
ignore_errors: True
@@ -22,46 +22,32 @@
# stat: path="/sys/firmware/efi"
# register: efi
-- name: check if hugepages are set by someone else
+- name: Check if hugepages are set by someone else
command: "grep -o 'default_hugepagesz=' /etc/default/grub"
register: is_huge
ignore_errors: True
-- fail:
+- debug:
msg: "Hugepages already set by someone else"
when: is_mine_huge.stdout == "" and is_huge.stdout != ""
-- name: configure hugepages as idempotent block
+- name: Configure hugepages as idempotent block
block:
- - name: use 8 for auto num_hugepages and 1G size
+ - name: Use 8 for auto num_hugepages and 1G size
set_fact:
num_hugepages: 8
when: num_hugepages|default("auto") == "auto"
- - name: set hugepages in grub
+ - name: Set hugepages in grub
lineinfile:
dest: /etc/default/grub
regexp: '{{ hugepage_param_regex }}'
line: '{{ hugepage_param }}'
state: present
- - name: create hugetables mount
- file:
- path: "{{ hugetable_mount }}"
- state: directory
-
- - name: mount hugetlbfs
- mount:
- name: "{{ hugetable_mount }}"
- src: nodev
- fstype: hugetlbfs
- state: present
-
- - service:
- name: procps
- enabled: yes
-
- include: manual_modify_grub.yml
# only tested on Ubuntu, kernel line is probably different on other distros
when: ansible_distribution == "Ubuntu"
- when: is_mine_huge.stdout == ""
+ when:
+ - is_mine_huge.stdout == ""
+ - is_huge.stdout == ""
diff --git a/ansible/roles/enable_iommu_on_boot/tasks/main.yml b/ansible/roles/enable_iommu_on_boot/tasks/main.yml
index 188b32915..2772a5d52 100644
--- a/ansible/roles/enable_iommu_on_boot/tasks/main.yml
+++ b/ansible/roles/enable_iommu_on_boot/tasks/main.yml
@@ -54,25 +54,26 @@
- not is_nsb_iommu_role.changed
- is_iommu.changed
- - name: Add IOMMU when it is not set
- lineinfile:
- path: "{{ grub_file }}"
- regexp: "{{ iommu_help_string }}"
- line: '{{ enable_iommu }}" {{ iommu_help_string }}'
+ - block:
+ - name: Add IOMMU when it is not set
+ lineinfile:
+ path: "{{ grub_file }}"
+ regexp: "{{ iommu_help_string }}"
+ line: '{{ enable_iommu }}" {{ iommu_help_string }}'
+
+ - name: find boot grub.cfg
+ find:
+ paths: /boot
+ file_type: file
+ patterns: 'grub*.cfg'
+ recurse: yes
+ register: grub_files
+
+ - include: manual_modify_grub.yml
+ # only tested on Ubuntu, kernel line is probably different on other distros
+ with_items: "{{ grub_files.files }}"
when:
+ - ansible_distribution == "Ubuntu"
- not is_nsb_iommu_role.changed
- not is_iommu.changed
-
- - name: find boot grub.cfg
- find:
- paths: /boot
- file_type: file
- patterns: 'grub*.cfg'
- recurse: yes
- register: grub_files
-
- - include: manual_modify_grub.yml
- # only tested on Ubuntu, kernel line is probably different on other distros
- with_items: "{{ grub_files.files }}"
- when: ansible_distribution == "Ubuntu"
when: iommu_boot_params is defined
diff --git a/ansible/roles/install_image_dependencies/defaults/main.yml b/ansible/roles/install_image_dependencies/defaults/main.yml
index 42951bf6d..558e68a9b 100644
--- a/ansible/roles/install_image_dependencies/defaults/main.yml
+++ b/ansible/roles/install_image_dependencies/defaults/main.yml
@@ -30,6 +30,7 @@ install_dependencies:
- libxss-dev
- expect
- libnuma-dev
+ - curl
RedHat:
- bc
- fio
@@ -50,3 +51,4 @@ install_dependencies:
- sysstat
- unzip
- python-devel
+ - curl