diff options
Diffstat (limited to 'ansible')
-rw-r--r-- | ansible/build_yardstick_image.yml | 21 | ||||
-rw-r--r-- | ansible/group_vars/all.yml | 7 | ||||
-rw-r--r-- | ansible/inventory.ini | 3 | ||||
-rw-r--r-- | ansible/nsb_setup.yml | 45 | ||||
-rw-r--r-- | ansible/prepare_openstack.yml | 44 | ||||
-rw-r--r-- | ansible/roles/add_custom_repos/tasks/ubuntu.yml | 7 | ||||
-rw-r--r-- | ansible/roles/add_custom_repos/templates/sources.list.j2 | 5 | ||||
-rw-r--r-- | ansible/roles/create_image/tasks/main.yml | 23 | ||||
-rw-r--r-- | ansible/roles/create_samplevnfs_image/tasks/main.yml | 24 | ||||
-rwxr-xr-x | ansible/roles/enable_hugepages_on_boot/tasks/main.yml | 55 | ||||
-rw-r--r-- | ansible/roles/enable_hugepages_on_boot/tasks/manual_modify_grub.yml | 17 | ||||
-rw-r--r-- | ansible/roles/enable_hugepages_on_boot/vars/main.yml | 2 | ||||
-rw-r--r-- | ansible/ubuntu_server_baremetal_deploy_samplevnfs.yml | 5 | ||||
-rw-r--r-- | ansible/yardstick-install-inventory.ini | 18 |
14 files changed, 202 insertions, 74 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/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/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..8456c9e59 --- /dev/null +++ b/ansible/prepare_openstack.yml @@ -0,0 +1,44 @@ +# 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 + +### +# Build yardstick image for openstack quest +# check included file for other vars/env +### +- include: build_yardstick_image.yml + vars: + YARD_IMG_ARCH: amd64 + release: xenial + +### +# Delete old yardstick image and flavors +# Upload new image +### +- name: cleanup old openstack images, upload new + 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/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/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/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/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 + |