diff --git a/tasks/_mergeimages.yml b/tasks/_mergeimages.yml new file mode 100644 index 0000000000000000000000000000000000000000..3a3b81a897aeacd730c7eec4dfd8874489c5a905 --- /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 0000000000000000000000000000000000000000..432f37ff7b4770a27d90fc81952fc65b35463d25 --- /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 0000000000000000000000000000000000000000..d8382d79b5f4755c454509678cdb8c96bb5fefe9 --- /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 0000000000000000000000000000000000000000..61fbad0a5702d3c27b8b21937281e8a4fea926a4 --- /dev/null +++ b/tasks/installer.yml @@ -0,0 +1,3 @@ + +- include_tasks: buildinstaller.yml +- include_tasks: finaliseinstaller.yml