workspace: "{{ lookup('env', 'workspace')|default('/tmp/workspace/yardstick', true) }}"
raw_imgfile_basename: "yardstick-{{ release }}-server.raw"
+ growpart_package:
+ RedHat: cloud-utils-growpart
+ Debian: cloud-guest-utils
environment:
- PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/bin
- "{{ proxy_env }}"
key: image_builder
- package: name=parted state=present
+ - package: name=kpartx state=present
+ - package: name="{{ growpart_package[ansible_os_family] }}" 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) }}"
- set_fact:
raw_imgfile: "{{ workspace }}/{{ raw_imgfile_basename }}"
- # cleanup non-lxd
+ # cleanup non-lxd
- name: unmount all old mount points
mount:
name: "{{ item }}"
command: kpartx -dv "{{ raw_imgfile }}"
ignore_errors: true
+ - name: Debug dump loop devices
+ command: losetup -a
+ ignore_errors: true
+
+ - name: delete loop devices for image file
+ # use this because kpartx -dv will fail if raw_imgfile was delete
+ # but in theory we could have deleted file still attached to loopback device?
+ # use grep because of // and awk
+ shell: losetup -O NAME,BACK-FILE | grep "{{ raw_imgfile_basename }}" | awk '{ print $1 }' | xargs -l1 losetup -v -d
+ ignore_errors: true
+
+ - name: Debug dump loop devices again
+ command: losetup -a
+ ignore_errors: true
+
- name: delete {{ raw_imgfile }}
file:
path: "{{ raw_imgfile }}"
command: "qemu-img resize -f raw {{ raw_imgfile }} +2G"
- name: resize parition to allow for more VNFs
- command: "parted -s -a optimal {{ raw_imgfile }} resizepart 1 100%"
+ # use growpart because maybe it handles GPT better than parted
+ command: growpart {{ raw_imgfile }} 1
- name: create mknod devices in chroot
command: "mknod -m 0660 /dev/loop{{ item }} b 7 {{ item }}"
tags: mknod_devices
- name: find first partition device
-# command: kpartx -l "{{ loop_device }}"
command: kpartx -l "{{ raw_imgfile }}"
register: kpartx_res
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: