aboutsummaryrefslogtreecommitdiffstats
path: root/ansible
diff options
context:
space:
mode:
authorVolodymyr Mytnyk <volodymyrx.mytnyk@intel.com>2019-03-25 15:22:54 +0000
committerGerrit Code Review <gerrit@opnfv.org>2019-03-25 15:22:54 +0000
commit1c26b4a706acfde4c2f724f5e9a1ea639d1c3e66 (patch)
tree5c0e5ed5cbcc0a6174adce651ba613c6b7f9af30 /ansible
parent76d7680da6e6effc1a95de3b317cc85495b07aea (diff)
parent91d4cfa839bb2633cba2f70443168c22f895a969 (diff)
Merge "Move VM image build to remote DUT"
Diffstat (limited to 'ansible')
-rw-r--r--ansible/build_vm.yml44
-rw-r--r--ansible/group_vars/all.yml9
-rw-r--r--ansible/install-inventory.ini20
-rw-r--r--ansible/install.yaml79
-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/install_image_dependencies/defaults/main.yml2
7 files changed, 137 insertions, 50 deletions
diff --git a/ansible/build_vm.yml b/ansible/build_vm.yml
new file mode 100644
index 000000000..9774f9ff5
--- /dev/null
+++ b/ansible/build_vm.yml
@@ -0,0 +1,44 @@
+- 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
diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index cd12bf02e..e94d24023 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -7,7 +7,16 @@ release: "{{ OS_RELEASE | default('xenial') }}"
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
+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/"
installation_mode: "{{ INSTALLATION_MODE | default('baremetal') }}"
+yardstick_dir: "{{ YARDSTICK_DIR | default('/home/opnfv/repos/yardstick') }}"
proxy_env:
PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/bin
http_proxy: "{{ lookup('env', 'http_proxy') }}"
diff --git a/ansible/install-inventory.ini b/ansible/install-inventory.ini
index bcd57db65..07d2c13f4 100644
--- a/ansible/install-inventory.ini
+++ b/ansible/install-inventory.ini
@@ -8,24 +8,20 @@ localhost ansible_connection=local
[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>"
diff --git a/ansible/install.yaml b/ansible/install.yaml
index 558c48609..a78a11f68 100644
--- a/ansible/install.yaml
+++ b/ansible/install.yaml
@@ -15,7 +15,6 @@
- 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/') }}"
@@ -105,54 +104,59 @@
- 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
@@ -216,6 +220,5 @@
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
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/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