From bd932968cd12b4da61b8a9011bf93aec1320db09 Mon Sep 17 00:00:00 2001
From: "Pietsch, Martin" <martin.pietsch@tu-dresden.de>
Date: Wed, 2 Oct 2019 14:44:37 +0200
Subject: [PATCH] added installer tasks

---
 tasks/_mergeimages.yml      | 26 ++++++++++++++++++++++++++
 tasks/buildinstaller.yml    | 36 ++++++++++++++++++++++++++++++++++++
 tasks/finaliseinstaller.yml | 31 +++++++++++++++++++++++++++++++
 tasks/installer.yml         |  3 +++
 4 files changed, 96 insertions(+)
 create mode 100644 tasks/_mergeimages.yml
 create mode 100644 tasks/buildinstaller.yml
 create mode 100644 tasks/finaliseinstaller.yml
 create mode 100644 tasks/installer.yml

diff --git a/tasks/_mergeimages.yml b/tasks/_mergeimages.yml
new file mode 100644
index 0000000..3a3b81a
--- /dev/null
+++ b/tasks/_mergeimages.yml
@@ -0,0 +1,26 @@
+
+- name: detect architecture
+  set_fact: 
+     _linux_installer_arch: "x86_64"
+     _linux_installer_corefile: "corepure64.gz"
+  when: _linux_dist_arch == "x86_64" or  _linux_dist_arch == "amd64"
+
+- set_fact: 
+     _linux_installer_arch: "x86"
+     _linux_installer_corefile: "core.gz"
+  when: _linux_dist_arch == "x86" or (_linux_dist_arch | regex_search('i[0-9]86'))
+
+- name: download tiny core linux imagefs file
+  get_url:
+    url: "{{ '%s/%s/%s/release/distribution_files/%s' | format(linux_installer_home_mirror, linux_installer_version, _linux_installer_arch, _linux_installer_corefile) }}"
+    dest: "{{ '/tmp/%s' | format(_linux_installer_corefile) }}"
+
+- name: merge tiny core image with installer image
+  shell: "{{ 'cat /tmp/%s %s >/tmp/linux_%s_%s.gz' | format(_linux_installer_corefile, _linux_installer_image_file.path, linux_installer_distribution, _linux_dist_arch) }}"
+
+- name: register install image
+  include_role:
+    name: package.pxelinux
+    tasks_from: registerimage
+    vars:     
+      pxelinux_image_buildpath: "{{ '%s/mfsbsd-%s-RELEASE-%s.img' | format(mfsbsdroot, distdata[1], distdata[0]) }}"     pxelinux_image_distribution: "freebsd"     pxelinux_image_release: "{{ distdata[1] }}"     pxelinux_image_architecture: "{{ distdata[0] }}"
diff --git a/tasks/buildinstaller.yml b/tasks/buildinstaller.yml
new file mode 100644
index 0000000..432f37f
--- /dev/null
+++ b/tasks/buildinstaller.yml
@@ -0,0 +1,36 @@
+
+- name: create installer build root directory
+  tempfile:
+    state: directory
+  register: _linux_install_dir
+
+- name: publish installer build root
+  set_fact:
+    linux_build_installer_root: "{{ _linux_install_dir.path }}"  
+
+- name: create installers opt directory
+  file:
+    path: "{{ '%s/opt' | format(linux_build_installer_root) }}"
+    state: directory
+
+- name: create installers opt directory
+  file:
+    path: "{{ '%s/root' | format(linux_build_installer_root) }}"
+    state: directory
+
+- name: install basic installer scripts
+  copy:
+    src: profile
+    dest: "{{ '%s/root/.profile' | format(linux_build_installer_root) }}"
+
+- name: install basic installer scripts
+  copy:
+    src: "{{ _linux_install_file.name }}"
+    dest: "{{ '%s/opt/%s' | format(linux_build_installer_root, _linux_install_file.name) }}"
+    mode: "{{ _linux_install_file.mode }}"
+  loop:
+    - {"name": "bootlocal.sh", "mode": "0775" }
+  loop_control:
+    loop_var: _linux_install_file
+
+
diff --git a/tasks/finaliseinstaller.yml b/tasks/finaliseinstaller.yml
new file mode 100644
index 0000000..d8382d7
--- /dev/null
+++ b/tasks/finaliseinstaller.yml
@@ -0,0 +1,31 @@
+
+- name: create temporary linux installer image name
+  tempfile:
+    suffix: ".gz"
+  register: _linux_installer_image_file
+
+- name: compress linux installer
+  shell: "{{ 'find | cpio -o -H newc -R +0:+0 | gzip -2 > %s' | format(_linux_installer_image_file.path) }}"
+  args:
+    chdir: "{{ linux_build_installer_root }}"
+
+- include_role:
+     name: system.linux
+     tasks_from: _mergeimages
+  loop: "{{ system_supported_architectures[linux_installer_distribution] }}"   
+  loop_control:      
+    loop_var: _linux_dist_arch
+
+- name: cleanup installers build root directory
+  file:
+    path: "{{ linux_build_installer_root }}"
+    state: absent
+
+- name: cleanup compressed linux installer image
+  file:
+    path: "{{ _linux_installer_image_file.path }}"
+    state: absent
+
+- include_role:
+     name: system
+     tasks_from: installer
diff --git a/tasks/installer.yml b/tasks/installer.yml
new file mode 100644
index 0000000..61fbad0
--- /dev/null
+++ b/tasks/installer.yml
@@ -0,0 +1,3 @@
+
+- include_tasks: buildinstaller.yml
+- include_tasks: finaliseinstaller.yml
-- 
GitLab