summaryrefslogtreecommitdiff
path: root/common/usb-install.yml
blob: db9faf7ed6d3072318968aa5f1ed8d9546aaa809 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
---
- 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:
      artifacts_dir:  "{{ global_artifacts_dir }}/{{ hostname }}"
      installer_path: "{{ global_cache_dir }}/debian-installer"

  - file:
      state: directory
      name: "{{ artifacts_dir }}"

  roles:
  - role: usb-install

  post_tasks:
  - stat:
      path: "{{ usbdrive_path }}"
    register: pathcheck

  - when: pathcheck.stat.exists
    block:
    - name: Copy generated files to the USB drive
      loop:
      - "{{ artifacts_dir }}/initrd.preseed.gz"
      - "{{ global_cache_dir }}/debian-installer/{{ install_distro }}-{{ install_codename }}/{{ install.arch | default('amd64') }}/linux"
      loop_control:
        label: "{{ item | basename }}"
      copy:
        src: "{{ item }}"
        dest: "{{ usbdrive_path }}/"

    - name: Generate syslinux configuration for BIOS boot
      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: create EFI boot directory
      file:
        path: "{{ usbdrive_path }}/EFI/boot"
        state: directory

    - name: Generate syslinux configuration for UEFI boot
      copy:
        dest: "{{ usbdrive_path }}/EFI/boot/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.]

          for UEFI these steps need to be done

          $ sudo apt install syslinux-efi
          $ cp /usr/lib/syslinux/modules/efi64/* {{ usbdrive_path }}/EFI/boot/
          $ cp /usr/lib/SYSLINUX.EFI/efi64/syslinux.efi {{ usbdrive_path }}/EFI/boot/bootx64.efi

          This will NOT be done automatically.