summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKim <kim.sidney@gmail.com>2021-06-28 12:57:35 +0200
committerGitHub <noreply@github.com>2021-06-28 12:57:35 +0200
commitb077c2942620581bdb519e6584a40cb383a841e0 (patch)
tree5d9e98c1be886bb2bf9bc3d9da676c78caa90fda
parente0ad618192bd652f7a26ed4f34265d4f7de9c45b (diff)
downloadvyos-vm-images-b077c2942620581bdb519e6584a40cb383a841e0.tar.gz
vyos-vm-images-b077c2942620581bdb519e6584a40cb383a841e0.zip
add ability to rebuild an ISO
-rw-r--r--roles/cleanup-ending/tasks/main.yml12
-rw-r--r--roles/compress-image/tasks/main.yml10
-rw-r--r--roles/compress-image/tests/inventory2
-rw-r--r--roles/compress-image/tests/test.yml4
-rw-r--r--roles/copy-iso-content/tasks/main.yml5
-rw-r--r--roles/copy-iso-content/tests/inventory2
-rw-r--r--roles/copy-iso-content/tests/test.yml4
-rw-r--r--roles/create-iso/tasks/main.yml12
-rw-r--r--roles/create-iso/tests/inventory2
-rw-r--r--roles/create-iso/tests/test.yml4
-rw-r--r--roles/extract-image/tasks/main.yml6
-rw-r--r--roles/extract-image/tests/inventory2
-rw-r--r--roles/extract-image/tests/test.yml4
-rw-r--r--roles/install-packages/tasks/main.yml3
-rw-r--r--roles/unmount-all/tasks/main.yml8
15 files changed, 80 insertions, 0 deletions
diff --git a/roles/cleanup-ending/tasks/main.yml b/roles/cleanup-ending/tasks/main.yml
index 3a84b98..1693a68 100644
--- a/roles/cleanup-ending/tasks/main.yml
+++ b/roles/cleanup-ending/tasks/main.yml
@@ -15,3 +15,15 @@
file:
path: "{{ vyos_key_local }}"
state: absent
+
+- name: Delete extracted squashfs path
+ become: true
+ file:
+ path: "{{ vyos_install_root }}"
+ state: absent
+
+- name: Delete temp iso creation path
+ become: true
+ file:
+ path: "/tmp/live-{{ vyos_version }}"
+ state: absent
diff --git a/roles/compress-image/tasks/main.yml b/roles/compress-image/tasks/main.yml
new file mode 100644
index 0000000..99135fa
--- /dev/null
+++ b/roles/compress-image/tasks/main.yml
@@ -0,0 +1,10 @@
+---
+- name: Delete filesystem.squashfs
+ become: true
+ file:
+ path: "/tmp/live-{{ vyos_version }}/live/filesystem.squashfs"
+ state: absent
+
+- name: compress path to squashfs image
+ become: true
+ command: mksquashfs {{ vyos_install_root }} /tmp/live-{{ vyos_version }}/live/filesystem.squashfs -comp xz
diff --git a/roles/compress-image/tests/inventory b/roles/compress-image/tests/inventory
new file mode 100644
index 0000000..878877b
--- /dev/null
+++ b/roles/compress-image/tests/inventory
@@ -0,0 +1,2 @@
+localhost
+
diff --git a/roles/compress-image/tests/test.yml b/roles/compress-image/tests/test.yml
new file mode 100644
index 0000000..96c69cb
--- /dev/null
+++ b/roles/compress-image/tests/test.yml
@@ -0,0 +1,4 @@
+---
+- hosts: localhost
+ roles:
+ - install-image
diff --git a/roles/copy-iso-content/tasks/main.yml b/roles/copy-iso-content/tasks/main.yml
new file mode 100644
index 0000000..fb6571a
--- /dev/null
+++ b/roles/copy-iso-content/tasks/main.yml
@@ -0,0 +1,5 @@
+- name: copy iso files
+ become: true
+ synchronize:
+ src: "/mnt/cdrom/"
+ dest: "/tmp/live-{{ vyos_version }}"
diff --git a/roles/copy-iso-content/tests/inventory b/roles/copy-iso-content/tests/inventory
new file mode 100644
index 0000000..878877b
--- /dev/null
+++ b/roles/copy-iso-content/tests/inventory
@@ -0,0 +1,2 @@
+localhost
+
diff --git a/roles/copy-iso-content/tests/test.yml b/roles/copy-iso-content/tests/test.yml
new file mode 100644
index 0000000..987ef49
--- /dev/null
+++ b/roles/copy-iso-content/tests/test.yml
@@ -0,0 +1,4 @@
+---
+- hosts: localhost
+ roles:
+ - mount-iso
diff --git a/roles/create-iso/tasks/main.yml b/roles/create-iso/tasks/main.yml
new file mode 100644
index 0000000..6eef4e0
--- /dev/null
+++ b/roles/create-iso/tasks/main.yml
@@ -0,0 +1,12 @@
+---
+- name: create new iso
+ become: true
+ command: >
+ xorriso -as mkisofs -R -r -J -joliet-long -l -cache-inodes \
+ -iso-level 3 -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
+ -partition_offset 16 -A "VyOS" -p "live-build 1:20190311.1; \
+ https://debian-live.alioth.debian.org/live-build" \
+ -publisher "autobuild@vyos.net" -V "VyOS" --modification-date={{ lookup('pipe','date +\"%Y%m%d%H%M%S%2N\"') }} \
+ -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
+ -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot \
+ -isohybrid-gpt-basdat -isohybrid-apm-hfsplus -o {{ vyos_cloud_upgrade_iso }} /tmp/live-{{ vyos_version }}
diff --git a/roles/create-iso/tests/inventory b/roles/create-iso/tests/inventory
new file mode 100644
index 0000000..878877b
--- /dev/null
+++ b/roles/create-iso/tests/inventory
@@ -0,0 +1,2 @@
+localhost
+
diff --git a/roles/create-iso/tests/test.yml b/roles/create-iso/tests/test.yml
new file mode 100644
index 0000000..96c69cb
--- /dev/null
+++ b/roles/create-iso/tests/test.yml
@@ -0,0 +1,4 @@
+---
+- hosts: localhost
+ roles:
+ - install-image
diff --git a/roles/extract-image/tasks/main.yml b/roles/extract-image/tasks/main.yml
new file mode 100644
index 0000000..cde5b4d
--- /dev/null
+++ b/roles/extract-image/tasks/main.yml
@@ -0,0 +1,6 @@
+---
+- name: Extract squashfs image from ISO to root partition
+ become: true
+ command: unsquashfs -d {{ vyos_install_root }} {{ vyos_squashfs_image }}
+ args:
+ creates: "{{ vyos_install_root }}"
diff --git a/roles/extract-image/tests/inventory b/roles/extract-image/tests/inventory
new file mode 100644
index 0000000..878877b
--- /dev/null
+++ b/roles/extract-image/tests/inventory
@@ -0,0 +1,2 @@
+localhost
+
diff --git a/roles/extract-image/tests/test.yml b/roles/extract-image/tests/test.yml
new file mode 100644
index 0000000..96c69cb
--- /dev/null
+++ b/roles/extract-image/tests/test.yml
@@ -0,0 +1,4 @@
+---
+- hosts: localhost
+ roles:
+ - install-image
diff --git a/roles/install-packages/tasks/main.yml b/roles/install-packages/tasks/main.yml
index 365d206..deaf215 100644
--- a/roles/install-packages/tasks/main.yml
+++ b/roles/install-packages/tasks/main.yml
@@ -14,8 +14,11 @@
- grub-efi-amd64
- grub-efi-amd64-bin
- grub-common
+ - isolinux
- python-requests
+ - rsync
- unzip
- zlib1g-dev
- squashfs-tools
+ - xorriso
state: present
diff --git a/roles/unmount-all/tasks/main.yml b/roles/unmount-all/tasks/main.yml
index b6fa03d..5ac166e 100644
--- a/roles/unmount-all/tasks/main.yml
+++ b/roles/unmount-all/tasks/main.yml
@@ -38,19 +38,27 @@
name: "{{ vyos_write_root }}"
state: absent
+- name: Check if the raw image file exists
+ stat:
+ path: "{{ vyos_raw_img }}"
+ register: st
+
- name: Remove image partitions
become: true
command: "kpartx -dv {{ vyos_raw_img }}"
+ when: st.stat.exists
- name: Remove /dev/mapper entries
become: true
command: "dmsetup remove {{ item }} || true"
with_items: "{{ loop_partitions.stdout_lines }}"
+ when: loop_partitions.stdout_lines is defined
failed_when: false
- name: Detach {{ loop_device.stdout }}
become: true
command: "losetup -d {{ loop_device.stdout }}"
+ when: loop_device.stdout is defined
failed_when: false
- name: Unmount {{ vyos_cd_squash_root }}