summaryrefslogtreecommitdiff
path: root/roles/installer/ubuntu/usb
diff options
context:
space:
mode:
Diffstat (limited to 'roles/installer/ubuntu/usb')
-rw-r--r--roles/installer/ubuntu/usb/defaults/main.yml3
-rw-r--r--roles/installer/ubuntu/usb/tasks/main.yml23
-rw-r--r--roles/installer/ubuntu/usb/templates/grub.cfg.j28
-rw-r--r--roles/installer/ubuntu/usb/templates/isolinux.cfg.j214
4 files changed, 44 insertions, 4 deletions
diff --git a/roles/installer/ubuntu/usb/defaults/main.yml b/roles/installer/ubuntu/usb/defaults/main.yml
index 8afdb9f0..5467946d 100644
--- a/roles/installer/ubuntu/usb/defaults/main.yml
+++ b/roles/installer/ubuntu/usb/defaults/main.yml
@@ -1,3 +1,6 @@
---
+ubuntu_installer_usb_variant: live-server
+# ubuntu_installer_usb_variant: desktop
+
### path to the unmounted usb drive (/dev/...)
# installer_ubuntu_usb_devicepath
diff --git a/roles/installer/ubuntu/usb/tasks/main.yml b/roles/installer/ubuntu/usb/tasks/main.yml
index 26df154d..c29fe2f8 100644
--- a/roles/installer/ubuntu/usb/tasks/main.yml
+++ b/roles/installer/ubuntu/usb/tasks/main.yml
@@ -11,8 +11,27 @@
that: usb_install_device.stat.exists and usb_install_device.stat.isblk
msg: the path to the usb drive does not exist or is not a block device
+- 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_usb_variant }}"
+ import_role:
+ role: installer/ubuntu/fetch
+
+- name: write ISO image to usb stick
+ pause:
+ prompt: |
+ Please write the image to the USB drive using something like this:
+
+ $ sudo ddrescue {{ ubuntu_installer_target_dir }}/{{ ubuntu_installer_filename }} {{ usb_install_path }} -D --force
+
+ This will NOT be done automatically.
+
- block:
- name: create temporary workdir
+ run_once: true
tempfile:
prefix: "usb-install.{{ inventory_hostname }}."
state: directory
@@ -25,16 +44,19 @@
name: installer/ubuntu/autoinstall
- name: generate isolinux configuration for BIOS boot
+ run_once: true
template:
src: isolinux.cfg.j2
dest: "{{ tmpdir.path }}/isolinux.cfg"
- name: generate grub configuration for UEFI boot
+ run_once: true
template:
src: grub.cfg.j2
dest: "{{ tmpdir.path }}/grub.cfg"
- name: update iso9660 filesystem on installer usb drive
+ run_once: true
become: yes
command: xorriso -dev "stdio:{{ usb_install_path }}" -pathspecs on -boot_image any replay -update isolinux.cfg /isolinux/isolinux.cfg -update grub.cfg /boot/grub/grub.cfg -find / -disk_name autoinstall -type d -exec rm_r -- -add /autoinstall=autoinstall
args:
@@ -42,6 +64,7 @@
always:
- name: cleanup temporary workdir
+ run_once: true
when: tmpdir.path is defined
file:
path: "{{ tmpdir.path }}"
diff --git a/roles/installer/ubuntu/usb/templates/grub.cfg.j2 b/roles/installer/ubuntu/usb/templates/grub.cfg.j2
index a9a1761c..1f97113a 100644
--- a/roles/installer/ubuntu/usb/templates/grub.cfg.j2
+++ b/roles/installer/ubuntu/usb/templates/grub.cfg.j2
@@ -8,11 +8,15 @@ fi
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
+{% if (ansible_play_hosts_all | length) == 1 %}
set timeout=10
set default=0
+{% endif %}
+{% for host in ansible_play_hosts_all %}
-menuentry "automated installer for {{ inventory_hostname }}" {
+menuentry "automated installer for {{ host }}" {
set gfxpayload=keep
- linux /casper/vmlinuz quiet nopersistent autoinstall "ds=nocloud;s=/cdrom/autoinstall/" {{ (install_cooked.kernel_cmdline | default([])) | join(' ') }}
+ linux /casper/vmlinuz quiet nopersistent autoinstall "ds=nocloud;s=/cdrom/autoinstall/{{ host }}/" {{ (hostvars[host].install_cooked.kernel_cmdline | default([])) | join(' ') }}
initrd /casper/initrd
}
+{% endfor %}
diff --git a/roles/installer/ubuntu/usb/templates/isolinux.cfg.j2 b/roles/installer/ubuntu/usb/templates/isolinux.cfg.j2
index 4c84dd45..8360c057 100644
--- a/roles/installer/ubuntu/usb/templates/isolinux.cfg.j2
+++ b/roles/installer/ubuntu/usb/templates/isolinux.cfg.j2
@@ -1,3 +1,4 @@
+{% if (ansible_play_hosts_all | length) == 1 %}
DEFAULT {{ inventory_hostname }}
TIMEOUT 100
PROMPT 1
@@ -8,8 +9,17 @@ SAY ** Codename: {{ install_codename }}
SAY **
SAY ** will be booting automated installer for {{ inventory_hostname }} in 10s ...
SAY **
+{% else %}
+DEFAULT menu.c32
+TIMEOUT 0
+PROMPT 0
+MENU TITLE {{ install_distro }} / {{ install_codename }}
+{% endif %}
+{% for host in ansible_play_hosts_all %}
-LABEL {{ inventory_hostname }}
+LABEL {{ host }}
+ MENU LABEL automatic installer for {{ host }}
KERNEL /casper/vmlinuz
INITRD /casper/initrd
- APPEND quiet nopersistent autoinstall ds=nocloud;s=/cdrom/autoinstall/ {{ (install_cooked.kernel_cmdline | default([])) | join(' ') }}
+ APPEND quiet nopersistent autoinstall ds=nocloud;s=/cdrom/autoinstall/{{ host }}/ {{ (hostvars[host].install_cooked.kernel_cmdline | default([])) | join(' ') }}
+{% endfor %}