diff options
Diffstat (limited to 'roles')
-rw-r--r-- | roles/installer/debian/iso/tasks/main.yml | 2 | ||||
-rw-r--r-- | roles/installer/debian/usb/tasks/main.yml | 2 | ||||
-rw-r--r-- | roles/installer/ubuntu/iso/defaults/main.yml | 5 | ||||
-rw-r--r-- | roles/installer/ubuntu/iso/tasks/main.yml | 55 | ||||
-rw-r--r-- | roles/installer/ubuntu/iso/templates/grub.cfg.j2 | 18 | ||||
-rw-r--r-- | roles/installer/ubuntu/iso/templates/isolinux.cfg.j2 | 15 |
6 files changed, 95 insertions, 2 deletions
diff --git a/roles/installer/debian/iso/tasks/main.yml b/roles/installer/debian/iso/tasks/main.yml index 3170c7b5..04d913c3 100644 --- a/roles/installer/debian/iso/tasks/main.yml +++ b/roles/installer/debian/iso/tasks/main.yml @@ -4,7 +4,7 @@ vars: debian_installer_distro: "{{ install_distro }}" debian_installer_codename: "{{ install_codename }}" - debian_installer_arch: "{{ install.arch | default('amd64') }}" + debian_installer_arch: "{{ install_cooked.arch | default('amd64') }}" debian_installer_variant: mini-iso import_role: role: installer/debian/fetch diff --git a/roles/installer/debian/usb/tasks/main.yml b/roles/installer/debian/usb/tasks/main.yml index e02f38e6..88da49c8 100644 --- a/roles/installer/debian/usb/tasks/main.yml +++ b/roles/installer/debian/usb/tasks/main.yml @@ -16,7 +16,7 @@ vars: debian_installer_distro: "{{ install_distro }}" debian_installer_codename: "{{ install_codename }}" - debian_installer_arch: "{{ install.arch | default('amd64') }}" + debian_installer_arch: "{{ install_cooked.arch | default('amd64') }}" debian_installer_variant: netboot import_role: role: installer/debian/fetch diff --git a/roles/installer/ubuntu/iso/defaults/main.yml b/roles/installer/ubuntu/iso/defaults/main.yml new file mode 100644 index 00000000..cf498757 --- /dev/null +++ b/roles/installer/ubuntu/iso/defaults/main.yml @@ -0,0 +1,5 @@ +--- +ubuntu_installer_iso_variant: live-server +# ubuntu_installer_iso_variant: desktop + +iso_install_target_dir: "{{ global_artifacts_dir }}/{{ inventory_hostname }}/ubuntu-installer" diff --git a/roles/installer/ubuntu/iso/tasks/main.yml b/roles/installer/ubuntu/iso/tasks/main.yml new file mode 100644 index 00000000..ecfc2265 --- /dev/null +++ b/roles/installer/ubuntu/iso/tasks/main.yml @@ -0,0 +1,55 @@ +--- +- name: download installer + run_once: true + vars: + ubuntu_installer_codename: "{{ install_codename }}" + ubuntu_installer_arch: "{{ install_cooked.arch | default('amd64') }}" + ubuntu_installer_variant: "{{ ubuntu_installer_iso_variant }}" + import_role: + role: installer/ubuntu/fetch + +- block: + - name: create temporary workdir + tempfile: + prefix: "iso-install.{{ inventory_hostname }}." + state: directory + register: tmpdir + + - name: generate autoinstall files + vars: + ubuntu_autoinstall_tmpdir: "{{ tmpdir.path }}" + import_role: + name: installer/ubuntu/autoinstall + + - name: generate isolinux configuration for BIOS boot + template: + src: isolinux.cfg.j2 + dest: "{{ tmpdir.path }}/isolinux.cfg" + + - name: generate grub configuration for UEFI boot + template: + src: grub.cfg.j2 + dest: "{{ tmpdir.path }}/grub.cfg" + + + - name: create destination directory + file: + path: "{{ iso_install_target_dir }}" + state: directory + + - name: make sure target image does not exist + file: + path: "{{ iso_install_target_dir }}/{{ inventory_hostname }}.iso" + state: absent + + - name: generate target iso image + command: xorriso -indev "{{ ubuntu_installer_target_dir }}/{{ ubuntu_installer_filename }}" -outdev "{{ iso_install_target_dir }}/{{ inventory_hostname }}.iso" -pathspecs on -boot_image any replay -update isolinux.cfg /isolinux/isolinux.cfg -update grub.cfg /boot/grub/grub.cfg -add /autoinstall=autoinstall + args: + chdir: "{{ tmpdir.path }}" + + always: + - name: cleanup temporary workdir + when: tmpdir.path is defined + file: + path: "{{ tmpdir.path }}" + state: absent diff --git a/roles/installer/ubuntu/iso/templates/grub.cfg.j2 b/roles/installer/ubuntu/iso/templates/grub.cfg.j2 new file mode 100644 index 00000000..6ba4e6be --- /dev/null +++ b/roles/installer/ubuntu/iso/templates/grub.cfg.j2 @@ -0,0 +1,18 @@ +if loadfont $prefix/font.pf2 ; then + set gfxmode=auto + insmod efi_gop + insmod efi_uga + insmod gfxterm + terminal_output gfxterm +fi + +set menu_color_normal=white/black +set menu_color_highlight=black/light-gray +set timeout=10 +set default=0 + +menuentry "automated installer for {{ inventory_hostname }}" { + set gfxpayload=keep + linux /casper/vmlinuz quiet autoinstall "ds=nocloud;s=/cdrom/autoinstall/" {{ (install_cooked.kernel_cmdline | default([])) | join(' ') }} + initrd /casper/initrd +} diff --git a/roles/installer/ubuntu/iso/templates/isolinux.cfg.j2 b/roles/installer/ubuntu/iso/templates/isolinux.cfg.j2 new file mode 100644 index 00000000..68269dfc --- /dev/null +++ b/roles/installer/ubuntu/iso/templates/isolinux.cfg.j2 @@ -0,0 +1,15 @@ +DEFAULT {{ inventory_hostname }} +TIMEOUT 100 +PROMPT 1 +SAY ***************************************** +SAY ** +SAY ** Distro: {{ install_distro }} +SAY ** Codename: {{ install_codename }} +SAY ** +SAY ** will be booting automated installer for {{ inventory_hostname }} in 10s ... +SAY ** + +LABEL {{ inventory_hostname }} + KERNEL /casper/vmlinuz + INITRD /casper/initrd + APPEND quiet autoinstall ds=nocloud;s=/cdrom/autoinstall/ {{ (install_cooked.kernel_cmdline | default([])) | join(' ') }} |