make kernel command line options configurable.
[noc.git] / ansible / usb-install.yml
index 20b3ae6..bf4ce64 100644 (file)
@@ -2,12 +2,66 @@
 - name: Fetch debian installer and bake initrd
   hosts: "{{ hostname }}"
   connection: local
+
+  vars_prompt:
+    - name: usbdrive_path
+      prompt: Where is the USB installation medium mounted to?
+      default: ""
+      private: no
+
   pre_tasks:
     - set_fact:
         install_cooked: "{{ install }}"
         network_cooked: "{{ network }}"
+        artifacts_dir:  "{{ global_artifacts_dir }}/{{ hostname }}"
+        debian_installer_path: "{{ global_cache_dir }}/debian-installer"
+
+    - file:
+        state: directory
+        name: "{{ artifacts_dir }}"
+
   roles:
     - usb-install
-  vars:
-    preseed_path: "{{ global_artifacts_dir }}"
-    debian_installer_path: "{{ global_cache_dir }}/debian-installer"
+
+  tasks:
+    - stat:
+        path: "{{ usbdrive_path }}"
+      register: pathcheck
+
+    - when: pathcheck.stat.exists
+      block:
+        - name: Copy generated files to the USB drive
+          copy:
+            src: "{{ item }}"
+            dest: "{{ usbdrive_path }}/"
+          with_items:
+            - "{{ artifacts_dir }}/initrd.preseed.gz"
+            - "{{ global_cache_dir }}/debian-installer/{{ install_distro }}-{{ install_codename }}/{{ install.arch | default('amd64') }}/linux"
+          loop_control:
+            label: "{{ item | basename }}"
+
+        - name: Generate syslinux configuration
+          copy:
+            dest: "{{ usbdrive_path }}/syslinux.cfg"
+            content: |
+              DEFAULT linux
+               SAY SYSLINUX booting an automated installer for {{ hostname }}...
+              LABEL linux
+               KERNEL linux
+               INITRD initrd.preseed.gz
+               APPEND install{% for opt,val in (install.kernel_cmdline | default({})).items() %} {{ opt }}={{ val }}{% endfor %}
+
+        - name: Make the USB disk bootable
+          pause:
+            seconds: 0
+            prompt: |
+              You should make sure the USB disk is bootable and
+              has syslinux installed.
+
+              $ sudo apt install mbr syslinux
+              $ sudo install-mbr /dev/CHANGEME
+              $ sudo syslinux -i /dev/CHANGEME1
+              $ sudo fdisk       /dev/CHANGEME
+              [Here, make sure partition 1 is marked bootable.]
+
+              This will NOT be done automatically.