--- - name: Fetch debian installer and bake initrd hosts: "{{ hostname }}" connection: local gather_facts: no 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 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 {{ (install.kernel_cmdline | default([])) | join(' ') }} - 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.