ansible: resize VNF image 25/42925/1
authorRoss Brattain <ross.b.brattain@intel.com>
Fri, 1 Sep 2017 09:17:54 +0000 (02:17 -0700)
committerRoss Brattain <ross.b.brattain@intel.com>
Mon, 25 Sep 2017 07:29:39 +0000 (00:29 -0700)
When compiling Trex, DPDK, collectd and all the SampleVNFs
we use more than the 2.2GB size of the original Ubuntu cloud image.

Accordingly we need to resize the image.

If we were not inside a docker container we would use virt-resize
to automatically handle all the cases, but virt-resize launches qemu.

Instead we can use qemu-img to add extra space, then
luckily we can use parted to resize the partition and finally
resize2fs to resize the filesystem.

This limits us to only ext3/4 images, but if we need to
we could add support for other filesystems by checking
file system type.

Change-Id: Iac84b8e6967af5be64c280a7b1eaaf09f5d6b3aa
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
ansible/build_yardstick_image.yml

index 5f91585..35d9da4 100644 (file)
     - name: convert image to raw
       command: "qemu-img convert {{ image_dest }} {{ raw_imgfile }}"
 
+    - name: resize image to allow for more VNFs
+      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%"
+
     - name: create mknod devices in chroot
       command: "mknod -m 0660 /dev/loop{{ item }} b 7 {{ item }}"
       args:
 
     - set_fact:
         image_fs_type: "{{ blkid_res.stdout.strip() }}"
+    - fail:
+        msg: "We only support ext4 image filesystems because we have to resize"
+      when: image_fs_type != "ext4"
+
+    - name: fsck the image filesystem
+      command: "e2fsck -y -f {{ image_first_partition_device  }}"
+
+    - name: resize filesystem to full partition size
+      command: resize2fs {{ image_first_partition_device }}
+
+    - name: fsck the image filesystem
+      command: "e2fsck -y -f {{ image_first_partition_device  }}"
 
     - name: make tmp disposable fstab
       command: mktemp --tmpdir fake_fstab.XXXXXXXXXX