summaryrefslogtreecommitdiffstats
path: root/ansible
diff options
context:
space:
mode:
Diffstat (limited to 'ansible')
-rw-r--r--ansible/build_yardstick_image.yml21
-rw-r--r--ansible/group_vars/all.yml7
-rw-r--r--ansible/infra_deploy.yml18
-rw-r--r--ansible/inventory.ini3
-rw-r--r--ansible/load_images.yml30
-rw-r--r--ansible/nsb_setup.yml45
-rw-r--r--ansible/prepare_openstack.yml38
-rw-r--r--ansible/roles/add_custom_repos/tasks/ubuntu.yml7
-rw-r--r--ansible/roles/add_custom_repos/templates/sources.list.j25
-rw-r--r--ansible/roles/archive_spec_cpu2006_result/tasks/main.yaml5
-rw-r--r--ansible/roles/create_image/tasks/main.yml23
-rw-r--r--ansible/roles/create_samplevnfs_image/tasks/main.yml24
-rw-r--r--ansible/roles/download_civetweb/defaults/main.yml4
-rw-r--r--ansible/roles/download_drivers/defaults/main.yml21
-rw-r--r--ansible/roles/download_drivers/tasks/i40evf.yml36
-rw-r--r--ansible/roles/download_drivers/tasks/main.yml15
-rwxr-xr-xansible/roles/enable_hugepages_on_boot/tasks/main.yml55
-rw-r--r--ansible/roles/enable_hugepages_on_boot/tasks/manual_modify_grub.yml17
-rw-r--r--ansible/roles/enable_hugepages_on_boot/vars/main.yml2
-rw-r--r--ansible/roles/enable_iommu_on_boot/tasks/main.yml72
-rw-r--r--ansible/roles/enable_iommu_on_boot/tasks/manual_modify_grub.yml34
-rw-r--r--ansible/roles/enable_iommu_on_boot/vars/main.yml17
-rw-r--r--ansible/roles/fetch_spec_cpu2006_result/tasks/main.yaml3
-rw-r--r--ansible/roles/infra_check_requirements/tasks/main.yml43
-rw-r--r--ansible/roles/infra_check_requirements/vars/main.yml17
-rwxr-xr-xansible/roles/install_drivers/tasks/Debian.yml16
-rw-r--r--ansible/roles/install_drivers/tasks/RedHat.yml16
-rw-r--r--ansible/roles/install_drivers/tasks/i40evf.yml31
-rw-r--r--ansible/roles/install_drivers/tasks/main.yml28
-rw-r--r--ansible/roles/install_spec_cpu2006/tasks/main.yaml6
-rw-r--r--ansible/roles/unarchive_spec_cpu2006_result/tasks/main.yaml1
-rw-r--r--ansible/roles/uninstall_spec_cpu2006/tasks/main.yaml4
-rw-r--r--ansible/ubuntu_server_baremetal_deploy_samplevnfs.yml5
-rw-r--r--ansible/ubuntu_server_cloudimg_modify_samplevnfs.yml2
-rw-r--r--ansible/yardstick-install-inventory.ini18
35 files changed, 572 insertions, 117 deletions
diff --git a/ansible/build_yardstick_image.yml b/ansible/build_yardstick_image.yml
index bc57bcd48..7f709873e 100644
--- a/ansible/build_yardstick_image.yml
+++ b/ansible/build_yardstick_image.yml
@@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
---
-- hosts: localhost
+- hosts: jumphost
vars:
boot_modes:
@@ -31,7 +31,8 @@
workspace: "{{ lookup('env', 'workspace')|default('/tmp/workspace/yardstick', true) }}"
raw_imgfile_basename: "yardstick-{{ release }}-server.raw"
environment:
- PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/bin
+ - PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/bin
+ - "{{ proxy_env }}"
tasks:
- group_by:
@@ -40,7 +41,12 @@
- package: name=parted state=present
- set_fact:
- imgfile: "{{ workspace }}/yardstick-image.img"
+ imgfile: "{{ normal_image_file }}"
+ when: img_property == "normal"
+
+ - set_fact:
+ imgfile: "{{ nsb_image_file }}"
+ when: img_property == "nsb"
- set_fact:
mountdir: "{{ lookup('env', 'mountdir')|default('/mnt/yardstick', true) }}"
@@ -196,8 +202,13 @@
nameserver_ip: "{{ ansible_dns.nameservers[0] }}"
image_type: vm
-- name: include {{ img_modify_playbook }}
- include: "{{ img_modify_playbook }}"
+- name: include ubuntu_server_cloudimg_modify.yml
+ include: ubuntu_server_cloudimg_modify.yml
+ when: img_property == "normal"
+
+- name: include ubuntu_server_cloudimg_modify_samplevnfs.yml
+ include: ubuntu_server_cloudimg_modify_samplevnfs.yml
+ when: img_property == "nsb"
- hosts: localhost
tasks:
diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index edd6564d0..359968277 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -1,6 +1,9 @@
---
+target_os: "Ubuntu"
+YARD_IMG_ARCH: "amd64"
clone_dest: /opt/tempT
release: xenial
-target_os: Ubuntu
+normal_image_file: "{{ workspace }}/yardstick-image.img"
+nsb_image_file: "{{ workspace }}/yardstick-nsb-image.img"
ubuntu_image_file: /tmp/workspace/yardstick/yardstick-trusty-server.raw
-proxy_env: {} \ No newline at end of file
+proxy_env: {}
diff --git a/ansible/infra_deploy.yml b/ansible/infra_deploy.yml
new file mode 100644
index 000000000..10f53fbad
--- /dev/null
+++ b/ansible/infra_deploy.yml
@@ -0,0 +1,18 @@
+# Copyright (c) 2018 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.
+---
+- hosts: jumphost
+
+ roles:
+ - infra_check_requirements
diff --git a/ansible/inventory.ini b/ansible/inventory.ini
index 31692a777..a5fbaad95 100644
--- a/ansible/inventory.ini
+++ b/ansible/inventory.ini
@@ -12,3 +12,6 @@ host5 ansible_host=10.1.0.54 ansible_user=root ansible_ssh_pass=root
[nodes:children]
controller
compute
+
+[jumphost]
+localhost ansible_connection=local
diff --git a/ansible/load_images.yml b/ansible/load_images.yml
index a4c130d46..d4b24c864 100644
--- a/ansible/load_images.yml
+++ b/ansible/load_images.yml
@@ -29,41 +29,15 @@
IMAGE_COMMAND: yardstick-img-modify
IMAGE_OUTPUT: "/tmp/workspace/yardstick/yardstick-image.tar.gz"
-# QCOW_IMAGE: "/tmp/workspace/yardstick/yardstick-image.img"
-# RAW_IMAGE: "/tmp/workspace/yardstick/yardstick-image.tar.gz"
-# IMAGE_COMMANDS:
-# 'lxd': yardstick-img-lxd-modify
-# 'default': yardstick-img-modify
-
-
roles:
- role: add_fuel_jumphost
when: "INSTALLER_TYPE == 'fuel'"
- role: detect_fuel_arch
when: "INSTALLER_TYPE == 'fuel'"
-# post_tasks:
-#
-# - command: "{{ DEPLOY_VARS[DEPLOY_SCENARIO].IMAGE_COMMAND }}" "{{ IMAGE_MODIFY_SCRIPT }}"
-# become: true
-# register: image_modify_result
-# retries: 2
-# untils: image_modify_result|succeeded
-#
-# - stat: path="{{ DEPLOY_VARS[DEPLOY_SCENARIO].IMAGE_OUTPUT }}"}
-# register: output_stat
-#
-# - fail: msg=""
-# when: not output_stat
-
-
- include: build_yardstick_image.yml
+ vars:
+ img_property: normal
- include: image_uploaders/upload_yardstick_image.yml
-# upload cirros
-# upload vanilla ubuntu cloud_image
-
-# - include: create_flavors.yml
-
-
diff --git a/ansible/nsb_setup.yml b/ansible/nsb_setup.yml
index 90fba0b1e..bfe5d2349 100644
--- a/ansible/nsb_setup.yml
+++ b/ansible/nsb_setup.yml
@@ -12,37 +12,26 @@
# See the License for the specific language governing permissions and
# limitations under the License.
---
-- include: ubuntu_server_baremetal_deploy_samplevnfs.yml
- vars:
- YARD_IMG_ARCH: amd64
-
-- hosts: localhost
- roles:
- - install_dependencies
- - docker
-
-- include: build_yardstick_image.yml
- vars:
- YARD_IMG_ARCH: amd64
- release: xenial
- when: openrc_file is defined
+#- name: Prepare baremetal machine
+# include: ubuntu_server_baremetal_deploy_samplevnfs.yml
+# vars:
+# YARD_IMG_ARCH: amd64
+#
+#- name: Install jumphost dependencies and configure docker
+# hosts: jumphost
+# environment:
+# "{{ proxy_env }}"
+# roles:
+# - install_dependencies
+# - docker
-- include: clean_images.yml
+- name: "handle all openstack stuff when: openrc_file is defined"
+ include: prepare_openstack.yml
when: openrc_file is defined
-- hosts: localhost
- post_tasks:
- - os_image:
- name: yardstick-samplevnfs
- is_public: yes
- disk_format: qcow2
- container_format: bare
- filename: "{{ raw_imgfile }}"
- properties:
- hw_vif_multiqueue_enabled: true
- environment: "{{ openrc }}"
- when: openrc_file is defined
-
+- name: start yardstick container on jumphost
+ hosts: jumphost
+ tasks:
- name: Start yardstick container
docker_container:
name: yardstick
diff --git a/ansible/prepare_openstack.yml b/ansible/prepare_openstack.yml
new file mode 100644
index 000000000..6f54ef522
--- /dev/null
+++ b/ansible/prepare_openstack.yml
@@ -0,0 +1,38 @@
+# Copyright (c) 2017 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: Convert openrc_file to openrc env dict
+ hosts: jumphost
+ vars_files:
+ - yardstick_config.yml
+ roles:
+ - convert_openrc
+
+- name: Build Yardstick image for OpenStack
+ include: build_yardstick_image.yml
+ vars:
+ YARD_IMG_ARCH: amd64
+ release: xenial
+ img_property: nsb
+
+- name: Cleanup old OpenStack images and upload the new one
+ hosts: jumphost
+ vars_files:
+ - yardstick_config.yml
+ environment:
+ "{{ openrc }}"
+ roles:
+ - clean_images
+ - clean_flavors
+ - create_samplevnfs_image
diff --git a/ansible/roles/add_custom_repos/tasks/ubuntu.yml b/ansible/roles/add_custom_repos/tasks/ubuntu.yml
index c0ba89c0b..4658fe514 100644
--- a/ansible/roles/add_custom_repos/tasks/ubuntu.yml
+++ b/ansible/roles/add_custom_repos/tasks/ubuntu.yml
@@ -12,6 +12,13 @@
# See the License for the specific language governing permissions and
# limitations under the License.
---
+- name: Check multiverse repository
+ shell: "apt-cache policy | grep {{ release }}/multiverse"
+ args:
+ executable: /bin/bash
+ register: multiverse_repos
+ ignore_errors: yes
+
- name: add custom repos
template:
src: sources.list.j2
diff --git a/ansible/roles/add_custom_repos/templates/sources.list.j2 b/ansible/roles/add_custom_repos/templates/sources.list.j2
index af741cb10..61fbe43aa 100644
--- a/ansible/roles/add_custom_repos/templates/sources.list.j2
+++ b/ansible/roles/add_custom_repos/templates/sources.list.j2
@@ -1,5 +1,8 @@
{% if YARD_IMG_ARCH == "arm64" %}
deb [arch={{ YARD_IMG_ARCH }}] http://ports.ubuntu.com/ {{ release }}-backports main restricted universe multiverse
{% else %}
-deb http://archive.ubuntu.com/ubuntu/ {{ release }}-backports main restricted universe multiverse
+deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu/ {{ release }}-backports main restricted universe multiverse
+ {% if multiverse_repos.rc != 0 %}
+deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ {{ release }} multiverse
+ {% endif %}
{% endif %}
diff --git a/ansible/roles/archive_spec_cpu2006_result/tasks/main.yaml b/ansible/roles/archive_spec_cpu2006_result/tasks/main.yaml
index 7f72e1394..0282244ae 100644
--- a/ansible/roles/archive_spec_cpu2006_result/tasks/main.yaml
+++ b/ansible/roles/archive_spec_cpu2006_result/tasks/main.yaml
@@ -10,6 +10,5 @@
- name: archive_spec_cpu2006_result
archive:
- path: /usr/cpu2006/result
- dest: /usr/cpu2006/spec_cpu2006_result.zip
- become: true
+ path: ~/cpu2006/result
+ dest: ~/cpu2006/spec_cpu2006_result.zip
diff --git a/ansible/roles/create_image/tasks/main.yml b/ansible/roles/create_image/tasks/main.yml
new file mode 100644
index 000000000..f63489d2d
--- /dev/null
+++ b/ansible/roles/create_image/tasks/main.yml
@@ -0,0 +1,23 @@
+# Copyright (c) 2017 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: pre-clean openstack enviroment
+ hosts: yardstick
+ vars_files:
+ - yardstick_config.yml
+
+ roles:
+ - convert_openrc
+ - clean_images
+ - clean_flavors
diff --git a/ansible/roles/create_samplevnfs_image/tasks/main.yml b/ansible/roles/create_samplevnfs_image/tasks/main.yml
new file mode 100644
index 000000000..c83cccab5
--- /dev/null
+++ b/ansible/roles/create_samplevnfs_image/tasks/main.yml
@@ -0,0 +1,24 @@
+# Copyright (c) 2017 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: create yardstick-samplevnfs image
+ when: openrc_file is defined
+ os_image:
+ name: yardstick-samplevnfs
+ is_public: yes
+ disk_format: qcow2
+ container_format: bare
+ filename: "{{ raw_imgfile }}"
+ properties:
+ hw_vif_multiqueue_enabled: true
diff --git a/ansible/roles/download_civetweb/defaults/main.yml b/ansible/roles/download_civetweb/defaults/main.yml
index 5efc9bb56..289e52ce8 100644
--- a/ansible/roles/download_civetweb/defaults/main.yml
+++ b/ansible/roles/download_civetweb/defaults/main.yml
@@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
---
-civetweb_url: https://sourceforge.net/projects/civetweb/files/1.9/CivetWeb_V1.9.zip
+civetweb_url: https://iweb.dl.sourceforge.net/project/civetweb/1.9.1/CivetWeb_V1.9.1.zip
civetweb_file: "{{ civetweb_url|basename }}"
civetweb_dest: "{{ clone_dest }}/civetweb"
-civetweb_sha256s: "sha256:947a546bfccd733c79dff9565227fa74f4d17750650ff49312ef4b2d032fa8c8"
+civetweb_sha256s: "sha256:69a82f042eae0197fb50b09861a8e2c5fff2871c196a21edd122bb8ce34ca0f3"
diff --git a/ansible/roles/download_drivers/defaults/main.yml b/ansible/roles/download_drivers/defaults/main.yml
new file mode 100644
index 000000000..ff4c30785
--- /dev/null
+++ b/ansible/roles/download_drivers/defaults/main.yml
@@ -0,0 +1,21 @@
+# Copyright (c) 2018 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.
+---
+i40evf_version: "3.4.2"
+i40evf_gzfile: "i40evf-{{ i40evf_version }}.tar.gz"
+i40evf_url: "https://sourceforge.net/projects/e1000/files/i40evf%20stable/{{ i40evf_version }}/{{ i40evf_gzfile }}/download"
+i40evf_dest: "{{ clone_dest }}/"
+i40evf_path: "{{ i40evf_dest }}/{{ i40evf_gzfile|regex_replace('[.]tar[.]gz$', '') }}"
+i40evf_checksum:
+ "3.4.2": "sha256:a8e2a722fb2f8ac874cb39545a331761841f1724830ff1581d2012dd37314645"
diff --git a/ansible/roles/download_drivers/tasks/i40evf.yml b/ansible/roles/download_drivers/tasks/i40evf.yml
new file mode 100644
index 000000000..cb8a09d6c
--- /dev/null
+++ b/ansible/roles/download_drivers/tasks/i40evf.yml
@@ -0,0 +1,36 @@
+# Copyright (c) 2018 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: Directory to store i40evf driver
+ file:
+ path: "{{ i40evf_dest }}"
+ state: directory
+
+- name: Fetch i40evf driver
+ get_url:
+ url: "{{ i40evf_url }}"
+ dest: "{{ i40evf_dest }}/{{ i40evf_gzfile }}"
+ validate_certs: False
+ checksum: "{{ i40evf_checksum[i40evf_version] }}"
+
+- name: Unarchive the i40evf file
+ unarchive:
+ src: "{{ i40evf_dest }}/{{ i40evf_gzfile }}"
+ dest: "{{ i40evf_dest }}"
+ copy: no
+
+- name: Cleanup the archive to save space
+ file:
+ path: "{{ i40evf_dest }}/{{ i40evf_gzfile }}"
+ state: absent
diff --git a/ansible/roles/download_drivers/tasks/main.yml b/ansible/roles/download_drivers/tasks/main.yml
new file mode 100644
index 000000000..b7c1e0f1f
--- /dev/null
+++ b/ansible/roles/download_drivers/tasks/main.yml
@@ -0,0 +1,15 @@
+# Copyright (c) 2018 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.
+---
+- include: i40evf.yml
diff --git a/ansible/roles/enable_hugepages_on_boot/tasks/main.yml b/ansible/roles/enable_hugepages_on_boot/tasks/main.yml
index 29432d2e4..75526eb19 100755
--- a/ansible/roles/enable_hugepages_on_boot/tasks/main.yml
+++ b/ansible/roles/enable_hugepages_on_boot/tasks/main.yml
@@ -31,34 +31,37 @@
msg: "Hugepages already set by someone else"
when: is_mine_huge.stdout == "" and is_huge.stdout != ""
-- name: use 16 for auto num_hugepages and 1G size
- set_fact:
- num_hugepages: 8
- when: num_hugepages|default("auto") == "auto"
+- name: configure hugepages as idempotent block
+ block:
+ - 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
- lineinfile:
- dest: /etc/default/grub
- regexp: '{{ hugepage_param_regex }}'
- line: '{{ hugepage_param }}'
- state: present
+ - 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: create hugetables mount
+ file:
+ path: "{{ hugetable_mount }}"
+ state: directory
-- name: mount hugetlbfs
- mount:
- name: "{{ hugetable_mount }}"
- src: nodev
- fstype: hugetlbfs
- state: present
+ - name: mount hugetlbfs
+ mount:
+ name: "{{ hugetable_mount }}"
+ src: nodev
+ fstype: hugetlbfs
+ state: present
-- service:
- name: procps
- enabled: yes
+ - 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"
+ - 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 == ""
diff --git a/ansible/roles/enable_hugepages_on_boot/tasks/manual_modify_grub.yml b/ansible/roles/enable_hugepages_on_boot/tasks/manual_modify_grub.yml
index cac10e80e..6fa0c1d25 100644
--- a/ansible/roles/enable_hugepages_on_boot/tasks/manual_modify_grub.yml
+++ b/ansible/roles/enable_hugepages_on_boot/tasks/manual_modify_grub.yml
@@ -20,16 +20,17 @@
recurse: yes
register: grub_files
+- name: check if hugepages are already enabled
+ command: "grep -o 'default_hugepagesz=' {{ item.path }}"
+ register: hugepage_enabled
+ ignore_errors: True
+ with_items: "{{ grub_files.files }}"
-- name: added hugepages to grub manually because we can't run update-grub in chroot
+- name: add hugepages to grub manually because we can't run update-grub in chroot
replace:
dest: "{{ item.path }}"
- # console= should end the line
- regexp: '(linux\s+/boot/vmlinuz.*console=\S+$)'
- # default_hugepagesz=1G hugepagesz=1G hugepages=8
+ regexp: '(linux\s+/boot/vmlinuz.*$)'
replace: '\1 default_hugepagesz={{ huge_pagesize_short[huge_pagesize_mb] }} hugepagesz={{ huge_pagesize_short[huge_pagesize_mb] }} hugepages={{ num_hugepages }}'
with_items: "{{ grub_files.files }}"
-
-
-
-
+ # we suppose consistent /boot/grub/grub.cfg files
+ when: hugepage_enabled['results'][0].stdout == ""
diff --git a/ansible/roles/enable_hugepages_on_boot/vars/main.yml b/ansible/roles/enable_hugepages_on_boot/vars/main.yml
index acdf02509..6fec347b2 100644
--- a/ansible/roles/enable_hugepages_on_boot/vars/main.yml
+++ b/ansible/roles/enable_hugepages_on_boot/vars/main.yml
@@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
---
-hugepage_param_regex: '^GRUB_CMDLINE_LINUX="\$GRUB_CMDLINE_LINUX.*# added by hugepages role'
+hugepage_param_regex: '^GRUB_CMDLINE_LINUX="\$GRUB_CMDLINE_LINUX.*" # added by hugepages role'
hugepage_param: 'GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX default_hugepagesz={{ huge_pagesize_short[huge_pagesize_mb] }} hugepagesz={{ huge_pagesize_short[huge_pagesize_mb] }} hugepages={{ num_hugepages }}" # added by hugepages role'
update_grub:
diff --git a/ansible/roles/enable_iommu_on_boot/tasks/main.yml b/ansible/roles/enable_iommu_on_boot/tasks/main.yml
new file mode 100644
index 000000000..1b98a50b1
--- /dev/null
+++ b/ansible/roles/enable_iommu_on_boot/tasks/main.yml
@@ -0,0 +1,72 @@
+# Copyright (c) 2017 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: Set iommu_boot_params for Intel
+ set_fact:
+ iommu_boot_params: ' intel_iommu=on iommu=pt'
+ when: hostvars[inventory_hostname]['ansible_system_vendor'] == "Intel Corporation"
+
+- name: Set iommu_boot_params for AMD
+ set_fact:
+ iommu_boot_params: ' amd_iommu=on iommu=pt'
+ when: hostvars[inventory_hostname]['ansible_system_vendor'] == "AuthenticAMD"
+
+- name: Set facts for this role
+ set_fact:
+ hugepages_help_string: ' # added by hugepages role'
+ iommu_help_string: ', added by iommu role'
+ hugepages_params: " default_hugepagesz=1G hugepagesz=1G hugepages=8"
+ iommu_original_kernel_params: 'GRUB_CMDLINE_LINUX="\$GRUB_CMDLINE_LINUX{{ hugepages_params }}'
+ iommu_enabled_kernel_params: '{{ iommu_original_kernel_params }}{{ iommu_boot_params }}"'
+ iommu_enabled_kernel_params_with_help: '{{ iommu_original_kernel_params }}{{ iommu_boot_params }}"{{ hugepages_help_string }}{{ iommu_help_string }}'
+
+- name: check if iommu is set by this role in /etc/default/grub
+ lineinfile:
+ path: /etc/default/grub
+ line: '{{ iommu_enabled_kernel_params_with_help }}'
+ #changed_when: no
+ check_mode: yes
+ register: is_mine_iommu_etc_grub
+ ignore_errors: True
+
+- name: check if iommu is set by someone else
+ command: "grep -o 'iommu' /etc/default/grub"
+ register: is_iommu
+ ignore_errors: True
+
+- fail:
+ msg: "Iommu already set by someone else"
+ when: is_mine_iommu_etc_grub.changed == false and is_iommu.stdout != ""
+
+- name: 'Configure iommu in /etc/default/grub'
+# and /boot/grub/grub.cfg(when: ansible_distribution == "Ubuntu")'
+ lineinfile:
+ path: /etc/default/grub
+ regexp: '({{ iommu_original_kernel_params }})"{{ hugepages_help_string }}'
+ line: '\1{{ iommu_boot_params }}"{{ hugepages_help_string }}{{ iommu_help_string }}'
+ backrefs: yes
+ when: is_mine_iommu_etc_grub.changed == true
+
+- 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"
diff --git a/ansible/roles/enable_iommu_on_boot/tasks/manual_modify_grub.yml b/ansible/roles/enable_iommu_on_boot/tasks/manual_modify_grub.yml
new file mode 100644
index 000000000..6760c3f9d
--- /dev/null
+++ b/ansible/roles/enable_iommu_on_boot/tasks/manual_modify_grub.yml
@@ -0,0 +1,34 @@
+# Copyright (c) 2017 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 iommu is set by this role in /boot grub.cfg files
+ lineinfile:
+ path: "{{ item.path }}"
+ regexp: '{{ hugepages_params }}{{ iommu_boot_params }}'
+ line: ''
+ #changed_when: no
+ check_mode: yes
+ register: is_mine_iommu_boot_grub
+ ignore_errors: True
+
+- name: added iommu to grub manually because we can't run update-grub in chroot
+ replace:
+ path: "{{ item.path }}"
+ regexp: '(.*linux\s+/boot/vmlinuz.*)$'
+ replace: '\1{{ iommu_boot_params }}'
+ when: is_mine_iommu_boot_grub.msg != "line replaced"
+
+- debug: var=ansible_kernel
diff --git a/ansible/roles/enable_iommu_on_boot/vars/main.yml b/ansible/roles/enable_iommu_on_boot/vars/main.yml
new file mode 100644
index 000000000..1b642dcb5
--- /dev/null
+++ b/ansible/roles/enable_iommu_on_boot/vars/main.yml
@@ -0,0 +1,17 @@
+# Copyright (c) 2017 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.
+---
+update_grub:
+ Debian: "update-grub2"
+ RedHat: "grub2-mkconfig -o /boot/grub2/grub.cfg"
diff --git a/ansible/roles/fetch_spec_cpu2006_result/tasks/main.yaml b/ansible/roles/fetch_spec_cpu2006_result/tasks/main.yaml
index 370ec7a0c..ccc89000c 100644
--- a/ansible/roles/fetch_spec_cpu2006_result/tasks/main.yaml
+++ b/ansible/roles/fetch_spec_cpu2006_result/tasks/main.yaml
@@ -10,7 +10,6 @@
- name: fetch_spec_cpu2006_result
fetch:
- src: /usr/cpu2006/spec_cpu2006_result.zip
+ src: ~/cpu2006/spec_cpu2006_result.zip
dest: /tmp/
flat: yes
- become: true
diff --git a/ansible/roles/infra_check_requirements/tasks/main.yml b/ansible/roles/infra_check_requirements/tasks/main.yml
new file mode 100644
index 000000000..8d05bbdb7
--- /dev/null
+++ b/ansible/roles/infra_check_requirements/tasks/main.yml
@@ -0,0 +1,43 @@
+# Copyright (c) 2018 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: Include
+ include_vars:
+ file: "{{rs_file}}"
+ name: infra_deploy_vars
+
+- name: Store total CPU, RAM, Disk requested resources
+ set_fact:
+ vcpu_t: "{{item.vcpus|int + vcpu_t|int}}"
+ vram_t: "{{item.ram|int + vram_t|int}}"
+ disk_t: "{{item.disk|int + disk_t|int}}"
+ with_items: "{{infra_deploy_vars.nodes}}"
+
+- name: Fail if not enough RAM
+ fail:
+ msg: "Failed, not enough RAM, required: {{ vram_t }}, available {{ ansible_memory_mb.nocache.free }}"
+ when: ansible_memory_mb.nocache.free < vram_t|int
+
+- name: Fail if not enough CPU
+ fail:
+ msg: "Failed, not enough CPU, required: {{ vcpu_t }}, available {{ ansible_processor_vcpus }}"
+ when: ansible_processor_vcpus < vcpu_t|int
+
+
+- name: Fail if not enough Disk space
+ set_fact:
+ disk_avail: "{% for mount in ansible_mounts if mount.mount == '/' %}{{ (mount.size_available/1024/1024)|int }}{% endfor %}"
+- fail:
+ msg: "Failed, not enough disk space, required {{ disk_t }}, available: {{ disk_avail }}"
+ when: disk_avail|int < disk_t|int
diff --git a/ansible/roles/infra_check_requirements/vars/main.yml b/ansible/roles/infra_check_requirements/vars/main.yml
new file mode 100644
index 000000000..219c33875
--- /dev/null
+++ b/ansible/roles/infra_check_requirements/vars/main.yml
@@ -0,0 +1,17 @@
+# Copyright (c) 2018 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.
+---
+vcpu_t: 0
+vram_t: 0
+disk_t: 0
diff --git a/ansible/roles/install_drivers/tasks/Debian.yml b/ansible/roles/install_drivers/tasks/Debian.yml
new file mode 100755
index 000000000..27f6b74cc
--- /dev/null
+++ b/ansible/roles/install_drivers/tasks/Debian.yml
@@ -0,0 +1,16 @@
+# Copyright (c) 2018 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: Install kernel headers
+ action: "{{ ansible_pkg_mgr }} name=linux-headers-{{ chroot_kernel }} state=present"
diff --git a/ansible/roles/install_drivers/tasks/RedHat.yml b/ansible/roles/install_drivers/tasks/RedHat.yml
new file mode 100644
index 000000000..d2e2a3768
--- /dev/null
+++ b/ansible/roles/install_drivers/tasks/RedHat.yml
@@ -0,0 +1,16 @@
+# Copyright (c) 2018 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: Install kernel headers
+ action: "{{ ansible_pkg_mgr }} name=kernel-headers-{{ chroot_kernel }} state=present"
diff --git a/ansible/roles/install_drivers/tasks/i40evf.yml b/ansible/roles/install_drivers/tasks/i40evf.yml
new file mode 100644
index 000000000..1cd95ceb0
--- /dev/null
+++ b/ansible/roles/install_drivers/tasks/i40evf.yml
@@ -0,0 +1,31 @@
+# Copyright (c) 2018 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: Make i40evf
+ make:
+ chdir: "{{ i40evf_path }}/src"
+ params:
+ BUILD_KERNEL: "{{ chroot_kernel }}"
+
+- name: Make i40evf install
+ make:
+ chdir: "{{ i40evf_path }}/src"
+ target: install
+ params:
+ BUILD_KERNEL: "{{ chroot_kernel }}"
+
+- name: Configure i40evf to load on boot
+ copy:
+ content: i40evf
+ dest: /etc/modules-load.d/i40evf.conf
diff --git a/ansible/roles/install_drivers/tasks/main.yml b/ansible/roles/install_drivers/tasks/main.yml
new file mode 100644
index 000000000..72a432e54
--- /dev/null
+++ b/ansible/roles/install_drivers/tasks/main.yml
@@ -0,0 +1,28 @@
+# Copyright (c) 2018 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: Find kernel for image, (including chroot)
+ find_kernel:
+ kernel: "{{ ansible_kernel }}"
+ register: found_kernel
+
+# Do this before installing kernel headers
+- name: Set chroot_kernel to be the kernel we found
+ set_fact:
+ chroot_kernel: "{{ found_kernel.kernel }}"
+
+- include: "{{ ansible_os_family }}.yml"
+
+# Install drivers
+- include: i40evf.yml
diff --git a/ansible/roles/install_spec_cpu2006/tasks/main.yaml b/ansible/roles/install_spec_cpu2006/tasks/main.yaml
index baa9f6ca0..ea698f5a2 100644
--- a/ansible/roles/install_spec_cpu2006/tasks/main.yaml
+++ b/ansible/roles/install_spec_cpu2006/tasks/main.yaml
@@ -12,13 +12,11 @@
copy:
src: /home/opnfv/repos/yardstick/yardstick/resources/cpu2006-1.2.iso
dest: ~/cpu2006-1.2.iso
- become: true
- name: install SPEC CPU2006
shell:
- mount -t iso9660 -o ro,exec ~/cpu2006-1.2.iso /mnt;
+ sudo mount -t iso9660 -o ro,exec ~/cpu2006-1.2.iso /mnt;
cd /mnt;
- ./install.sh -fd /usr/cpu2006;
+ ./install.sh -fd ~/cpu2006;
args:
executable: /bin/bash
- become: true
diff --git a/ansible/roles/unarchive_spec_cpu2006_result/tasks/main.yaml b/ansible/roles/unarchive_spec_cpu2006_result/tasks/main.yaml
index 86dcc1aeb..07d15d1a9 100644
--- a/ansible/roles/unarchive_spec_cpu2006_result/tasks/main.yaml
+++ b/ansible/roles/unarchive_spec_cpu2006_result/tasks/main.yaml
@@ -13,4 +13,3 @@
src: /tmp/spec_cpu2006_result.zip
dest: /tmp/
remote_src: True
- become: true
diff --git a/ansible/roles/uninstall_spec_cpu2006/tasks/main.yaml b/ansible/roles/uninstall_spec_cpu2006/tasks/main.yaml
index 72d8c93ee..b2a50896e 100644
--- a/ansible/roles/uninstall_spec_cpu2006/tasks/main.yaml
+++ b/ansible/roles/uninstall_spec_cpu2006/tasks/main.yaml
@@ -10,9 +10,8 @@
- name: remove SPEC CPU 2006
file:
- path: /usr/cpu2006
+ path: ~/cpu2006
state: absent
- become: true
- name: umount SPEC CPU 2006 ISO
shell:
@@ -25,4 +24,3 @@
file:
path: ~/cpu2006-1.2.iso
state: absent
- become: true
diff --git a/ansible/ubuntu_server_baremetal_deploy_samplevnfs.yml b/ansible/ubuntu_server_baremetal_deploy_samplevnfs.yml
index 42a7b2d08..479b45c92 100644
--- a/ansible/ubuntu_server_baremetal_deploy_samplevnfs.yml
+++ b/ansible/ubuntu_server_baremetal_deploy_samplevnfs.yml
@@ -12,10 +12,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
---
-- hosts: all
+- hosts: yardstick-standalone:jumphost
vars:
clone_dir: /tmp/yardstick-clone
-
+ environment:
+ "{{ proxy_env }}"
roles:
- add_custom_repos
diff --git a/ansible/ubuntu_server_cloudimg_modify_samplevnfs.yml b/ansible/ubuntu_server_cloudimg_modify_samplevnfs.yml
index dff7f976a..85afa2a30 100644
--- a/ansible/ubuntu_server_cloudimg_modify_samplevnfs.yml
+++ b/ansible/ubuntu_server_cloudimg_modify_samplevnfs.yml
@@ -62,3 +62,5 @@
- install_pmu_tools
- download_collectd
- install_collectd
+ - download_drivers
+ - install_drivers
diff --git a/ansible/yardstick-install-inventory.ini b/ansible/yardstick-install-inventory.ini
index e2647b033..e276076cc 100644
--- a/ansible/yardstick-install-inventory.ini
+++ b/ansible/yardstick-install-inventory.ini
@@ -1,4 +1,20 @@
# the group of systems on which to install yardstick
# by default just localhost
-[yardstick]
+[jumphost]
localhost ansible_connection=local
+
+# section below is only due backward compatibility.
+# it will be removed later
+[yardstick:children]
+jumphost
+
+[yardstick-standalone]
+# uncomment hosts below if you would to test yardstick-standalone/sriov scenarios
+#yardstick-standalone-node ansible_host=192.168.1.2
+#yardstick-standalone-node-2 ansible_host=192.168.1.2
+
+[all:vars]
+# incomment credentials below for yardstick-standalone
+#ansible_user=root
+#ansible_pass=root
+