VM image is built on localhost but should be on remote DUT server.
VM image will be built on server added to group 'yardstick-standalone'.
NSB dependencies will be installed on servers added to groups
'yardstick-baremetal' and 'yardstick-standalone'.
Added extra package installation, copy VM image to libvirt folder.
JIRA: YARDSTICK-1597
Change-Id: Iac4444c6f332c5ea80da033f2fe8371e208d7fbc
Signed-off-by: Stepan Andrushko <stepanx.andrushko@intel.com>
--- /dev/null
+- name: Prepare to build VM
+ hosts: jumphost
+ become: yes
+ vars:
+ img_prop_item: "{{ IMG_PROPERTY }}"
+ img_arch: "{{ YARD_IMG_ARCH }}"
+
+ tasks:
+ - name: Include pre-build
+ include_role:
+ name: build_yardstick_image
+ tasks_from: pre_build.yml
+ when:
+ - installation_mode != inst_mode_container
+
+
+- name: Build VM in chroot
+ hosts: chroot_image
+ connection: chroot
+ become: yes
+ vars:
+ img_property: "{{ IMG_PROPERTY }}"
+ environment: "{{ proxy_env }}"
+
+ tasks:
+ - name: Include image build
+ include_role:
+ name: build_yardstick_image
+ tasks_from: "cloudimg_modify_{{ img_property }}.yml"
+ when:
+ - installation_mode != inst_mode_container
+
+
+- name: Clear up after VM is built
+ hosts: jumphost
+ become: yes
+
+ tasks:
+ - name: Include post-build
+ include_role:
+ name: build_yardstick_image
+ tasks_from: post_build.yml
+ when:
+ - installation_mode != inst_mode_container
normal_image_file: "{{ workspace }}/yardstick-image.img"\r
nsb_image_file: "{{ workspace }}/yardstick-nsb-image.img"\r
ubuntu_image_file: /tmp/workspace/yardstick/yardstick-trusty-server.raw\r
+arch_amd64: "amd64"\r
+arch_arm64: "arm64"\r
+inst_mode_baremetal: "baremetal"\r
+inst_mode_container: "container"\r
+inst_mode_container_pull: "container_pull"\r
+ubuntu_archive:\r
+ "amd64": "http://archive.ubuntu.com/ubuntu/"\r
+ "arm64": "http://ports.ubuntu.com/ubuntu-ports/"\r
installation_mode: "{{ INSTALLATION_MODE | default('baremetal') }}"\r
+yardstick_dir: "{{ YARDSTICK_DIR | default('/home/opnfv/repos/yardstick') }}"\r
proxy_env:\r
PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/bin\r
http_proxy: "{{ lookup('env', 'http_proxy') }}"\r
[yardstick:children]
jumphost
-[yardstick-standalone]
-# standalone-node ansible_host=192.168.2.51 ansible_user=ubuntu ansible_ssh_pass=password ansible_connection=ssh
-
[yardstick-baremetal]
-# baremetal-node ansible_host=192.168.2.52 ansible_user=ubuntu ansible_ssh_pass=password ansible_connection=ssh
+# baremetal-node ansible_host=192.168.2.51 ansible_user=ubuntu ansible_ssh_pass=password ansible_connection=ssh
+
+[yardstick-standalone]
+# standalone-node ansible_host=192.168.2.52 ansible_user=ubuntu ansible_ssh_pass=password ansible_connection=ssh
[all:vars]
-arch_amd64=amd64
-arch_arm64=arm64
-inst_mode_baremetal=baremetal
-inst_mode_container=container
-inst_mode_container_pull=container_pull
-ubuntu_archive={"amd64": "http://archive.ubuntu.com/ubuntu/", "arm64": "http://ports.ubuntu.com/ubuntu-ports/"}
-# When IMG_PROPERTY is passed neither normal nor nsb set "path_to_vm=/path/to/image" to add it to OpenStack
-# path_to_img=/tmp/workspace/yardstick-image.img
# Uncomment credentials below if needed
# ansible_user=root
# ansible_ssh_pass=root
+# ansible_ssh_private_key_file=/root/.ssh/id_rsa
+
+# When IMG_PROPERTY is passed neither normal nor nsb set "path_to_vm=/path/to/image" to add it to OpenStack
+# path_to_img=/tmp/workspace/yardstick-image.img
# List of CPUs to be isolated (not used by default)
# Grub line will be extended with: "isolcpus=<ISOL_CPUS> nohz=on nohz_full=<ISOL_CPUS> rcu_nocbs=1<ISOL_CPUS>"
- hosts: jumphost
become: yes
vars:
- yardstick_dir: "{{ YARDSTICK_DIR | default('/home/opnfv/repos/yardstick') }}"
virtual_environment: "{{ VIRTUAL_ENVIRONMENT | default(False) }}"
nsb_dir: "{{ NSB_DIR | default('/opt/nsb_bin/') }}"
- docker
- barometer_collectd
-
- name: Prepare to build VM
- hosts: jumphost
+ hosts: yardstick-standalone
become: yes
vars:
img_prop_item: "{{ IMG_PROPERTY }}"
img_arch: "{{ YARD_IMG_ARCH }}"
-
- tasks:
- - name: Include pre-build
- include_role:
- name: build_yardstick_image
- tasks_from: pre_build.yml
- when:
- - installation_mode != inst_mode_container
- - IMG_PROPERTY == 'nsb' or IMG_PROPERTY == 'normal'
-
-
-- name: Build VM in chroot
- hosts: chroot_image
- connection: chroot
- become: yes
- vars:
- img_property: "{{ IMG_PROPERTY }}"
environment: "{{ proxy_env }}"
tasks:
- - name: Include image build
- include_role:
- name: build_yardstick_image
- tasks_from: "cloudimg_modify_{{ img_property }}.yml"
+ - file:
+ dest: /tmp/ansible
+ state: directory
+ mode: 0755
+
+ - name: Copy ansible folder to remote DUT
+ copy:
+ src: "."
+ dest: /tmp/ansible
+
+ - name: Install DUT related packages
+ apt:
+ name: "{{ packages }}"
+ vars:
+ packages:
+ - qemu-kvm
+ - libvirt-bin
+ - bridge-utils
+ - fping
+ - genisoimage
+
+ # There is a bug with the easy install ansible module in Ubuntu 16.04 linux.
+ # Refer https://github.com/ansible/ansible/issues/23534
+ - name: Install pip
+ shell: easy_install -U pip
when:
- - installation_mode != inst_mode_container
- - IMG_PROPERTY == 'nsb' or IMG_PROPERTY == 'normal'
+ - ansible_distribution == 'Ubuntu'
+ - ansible_distribution_major_version|int <= 16
+ - name: Install python-pip
+ action: "{{ ansible_pkg_mgr }} name=python-pip state=present"
+ when:
+ - ansible_distribution == 'Ubuntu'
+ - ansible_distribution_major_version|int >= 17
-- name: Clear up after VM is built
- hosts: jumphost
- become: yes
+ - name: Update pip ansible docker
+ pip:
+ name: "ansible==2.5.5"
- tasks:
- - name: Include post-build
- include_role:
- name: build_yardstick_image
- tasks_from: post_build.yml
- when:
- - installation_mode != inst_mode_container
- - IMG_PROPERTY == 'nsb' or IMG_PROPERTY == 'normal'
+ # This is used as workaround as ansible doesn't support chroot on remote server
+ - name: Run ansible on remote
+ shell: "ansible-playbook -e OS_RELEASE={{ OS_RELEASE }} -e IMAGE_PROPERTY={{ IMAGE_PROPERTY }} -e YARD_IMAGE_ARCH={{ YARD_IMAGE_ARCH }} -i install-inventory.ini build_vm.yml -vv"
+ args:
+ chdir: "/tmp/ansible"
- name: Add OpenStack variables, image
volumes:
- "{{ openrc_file|default('/dev/null') }}:/etc/yardstick/openstack.creds:ro"
- /var/run/docker.sock:/var/run/docker.sock
- - /opt:/opt
- /etc/localtime:/etc/localtime:ro
when: installation_mode == inst_mode_container_pull
name: "{{ mountdir }}/proc"\r
state: unmounted\r
\r
+- mount:\r
+ name: "{{ mountdir }}/run"\r
+ state: unmounted\r
+\r
- mount:\r
name: "{{ mountdir }}"\r
state: unmounted\r
\r
- debug:\r
msg: "yardstick image = {{ imgfile }}"\r
+\r
+- set_fact:\r
+ imgdest: "/var/lib/libvirt/images/{{ imgfile | basename}}"\r
+ name: "{{ (imgfile | basename | splitext)[0] }}"\r
+ ext: "{{ (imgfile | basename | splitext)[1] }}"\r
+\r
+- name: Verify if imgfile exists in libvirt images\r
+ stat:\r
+ path: "{{ imgdest }}"\r
+ register: imgdest_stat\r
+\r
+- set_fact:\r
+ imgdest: "/var/lib/libvirt/images/{{ name }}_autogen{{ ext }}"\r
+ when: imgdest_stat.stat.exists\r
+\r
+- name: Copy image to libvirt images\r
+ shell: "cp {{ imgfile }} {{ imgdest }}"\r
with_items:\r
# order matters\r
- "{{ mountdir }}/proc"\r
+ - "{{ mountdir }}/run"\r
- "{{ mountdir }}"\r
- "/mnt/{{ release }}"\r
\r
fstab: "{{ fake_fstab }}"\r
state: mounted\r
\r
+- name: mount chroot /run\r
+ mount:\r
+ src: /run\r
+ name: "{{ mountdir }}/run"\r
+ fstype: tmpfs\r
+ opts: bind\r
+ # !!!!!!! this is required otherwise we add entries to /etc/fstab\r
+ # and prevent the system from booting\r
+ fstab: "{{ fake_fstab }}"\r
+ state: mounted\r
+\r
- name: if arm copy qemu-aarch64-static into chroot\r
copy:\r
src: /usr/bin/qemu-aarch64-static\r
- libxss-dev
- expect
- libnuma-dev
+ - curl
RedHat:
- bc
- fio
- sysstat
- unzip
- python-devel
+ - curl