diff --git a/roles/netbootxyz/defaults/main.yml b/roles/netbootxyz/defaults/main.yml index d631c1d0..1ebda5eb 100644 --- a/roles/netbootxyz/defaults/main.yml +++ b/roles/netbootxyz/defaults/main.yml @@ -12,18 +12,29 @@ img_sigs_enabled: false sigs_location: "http://${boot_domain}/sigs/" memdisk_location: "http://${boot_domain}/memdisk" -ipxe_repo: https://github.com/ipxe/ipxe.git +ipxe_repo: https://github.com/ipxe/ipxe ipxe_branch: master ipxe_source_dir: /usr/src/ipxe live_endpoint: "https://github.com/netbootxyz" netbootxyz_root: /var/www/html -bootloader_filename: ipxe-bootloader +generate_menus: true +generate_disks: true +generate_checksums: true + bootloader_tftp_enabled: false bootloader_https_enabled: true bootloader_http_enabled: true +bootloader_build: true +bootloader_disks: + - "netboot.xyz" +#bootloader_multiple: true +#bootloader_disks: +# - "netboot.xyz" +# - "netboot.xyz-packet" + ### release values ### releases: alpinelinux: @@ -420,4 +431,4 @@ utilities: menu: "pcbios" type: "memdisk" version: "538" - util_path: "http://mirror.sysadminguide.net/ubcd/ubcd538.iso" \ No newline at end of file + util_path: "http://mirror.sysadminguide.net/ubcd/ubcd538.iso" diff --git a/roles/netbootxyz/files/ipxe/disks/netboot.xyz b/roles/netbootxyz/files/ipxe/disks/netboot.xyz deleted file mode 100644 index fb3d1254..00000000 --- a/roles/netbootxyz/files/ipxe/disks/netboot.xyz +++ /dev/null @@ -1,67 +0,0 @@ -#!ipxe -set esc:hex 1b -set bold ${esc:string}[1m -set boldoff ${esc:string}[22m -set fg_gre ${esc:string}[32m -set fg_cya ${esc:string}[36m -set fg_whi ${esc:string}[37m -set HTTPS_ERR HTTPS appears to have failed... attempting HTTP -set HTTP_ERR HTTP has failed, localbooting... -set version 1.04 - -:start -echo ${bold}${fg_gre}netboot.xyz ${fg_whi}v${version}${boldoff} -prompt --key m --timeout 4000 Hit the ${bold}m${boldoff} key to open failsafe menu... && goto failsafe || goto dhcp - -:dhcp -echo -dhcp || goto netconfig -goto menu - -:failsafe -menu netboot.xyz Failsafe Menu -item localboot Boot to local drive -item netconfig Manual network configuration -item retry Retry boot -item debug iPXE Debug Shell -item reboot Reboot System -choose failsafe_choice || exit -goto ${failsafe_choice} - -:netconfig -echo Network Configuration: -echo Available interfaces... -ifstat -imgfree -echo -n Set network interface number [0 for net0, defaults to 0]: ${} && read net -isset ${net} || set net 0 -echo -n IP: && read net${net}/ip -echo -n Subnet mask: && read net${net}/netmask -echo -n Gateway: && read net${net}/gateway -echo -n DNS: && read dns -ifopen net${net} -echo Attempting chainload of netboot.xyz... -goto menu || goto failsafe - -:menu -set conn_type https -chain --autofree https://boot.netboot.xyz/menu.ipxe || echo ${HTTPS_ERR} -sleep 5 -set conn_type http -chain --autofree http://boot.netboot.xyz/menu.ipxe || echo ${HTTP_ERR} -goto localboot - -:localboot -exit - -:retry -goto start - -:reboot -reboot -goto start - -:debug -echo Type "exit" to return to menu -shell -goto failsafe diff --git a/roles/netbootxyz/tasks/generate_checksums.yml b/roles/netbootxyz/tasks/generate_checksums.yml new file mode 100644 index 00000000..86a742b1 --- /dev/null +++ b/roles/netbootxyz/tasks/generate_checksums.yml @@ -0,0 +1,26 @@ +--- + - name: Register a listing of all created iPXE bootloaders + command: ls -I checksums.txt {{ netbootxyz_root }}/ipxe/ + register: netboot_disks + + - name: Generate date + command: date + register: current_date + + - name: Gather stat listing of directory + command: sha256sum -b {{ item }} + with_items: + - "{{ netboot_disks.stdout_lines }}" + args: + chdir: "{{ netbootxyz_root }}/ipxe/" + register: netboot_disks_stat + + - name: Generate ipxe disk checksums + template: + src: checksums.txt.j2 + dest: "{{ netbootxyz_root }}/ipxe/checksums.txt" + + - name: Generate netboot.xyz index template + template: + src: index.html.j2 + dest: "{{ netbootxyz_root }}/index.html" diff --git a/roles/netbootxyz/tasks/generate_disks.yml b/roles/netbootxyz/tasks/generate_disks.yml index 44736b3a..d5cbbdd1 100644 --- a/roles/netbootxyz/tasks/generate_disks.yml +++ b/roles/netbootxyz/tasks/generate_disks.yml @@ -8,4 +8,4 @@ - include: generate_disks_efi.yml when: - - generate_disks_efi | default(true) | bool + - generate_disks_efi | default(true) | bool \ No newline at end of file diff --git a/roles/netbootxyz/tasks/generate_disks_base.yml b/roles/netbootxyz/tasks/generate_disks_base.yml index 427ed86d..9c78b3d1 100644 --- a/roles/netbootxyz/tasks/generate_disks_base.yml +++ b/roles/netbootxyz/tasks/generate_disks_base.yml @@ -12,6 +12,10 @@ - "{{ ansible_distribution | lower }}.yml" - "{{ ansible_os_family | lower }}.yml" + - name: Set var to bootloader of loop + set_fact: + bootloader_filename: "{{ bootloader_file }}" + - name: Create iPXE file directories file: path: "{{ item }}" @@ -38,7 +42,9 @@ repo: "{{ ipxe_repo }}" dest: "{{ ipxe_source_dir }}" version: "{{ ipxe_branch }}" - + force: true + register: ipxe_git_checkout + - name: Copy iPXE Bootloader template to iPXE source directory template: src: "disks/{{ bootloader_filename }}.j2" diff --git a/roles/netbootxyz/tasks/generate_disks_efi.yml b/roles/netbootxyz/tasks/generate_disks_efi.yml index e2262140..34637ae5 100644 --- a/roles/netbootxyz/tasks/generate_disks_efi.yml +++ b/roles/netbootxyz/tasks/generate_disks_efi.yml @@ -44,5 +44,5 @@ dest: "{{ netbootxyz_root }}/ipxe/{{ item.dest }}" remote_src: True with_items: - - { src: "bin-x86_64-efi/ipxe.efi", dest: "{{ site_name }}.efi" } - - { src: "ipxe-efi.eiso", dest: "{{ site_name }}-efi.iso" } + - { src: "bin-x86_64-efi/ipxe.efi", dest: "{{ bootloader_filename }}.efi" } + - { src: "ipxe-efi.eiso", dest: "{{ bootloader_filename }}-efi.iso" } diff --git a/roles/netbootxyz/tasks/generate_disks_legacy.yml b/roles/netbootxyz/tasks/generate_disks_legacy.yml index 07386926..8b2f4fe1 100644 --- a/roles/netbootxyz/tasks/generate_disks_legacy.yml +++ b/roles/netbootxyz/tasks/generate_disks_legacy.yml @@ -22,7 +22,7 @@ - name: Copy iPXE files for Legacy BIOS to http directory copy: src: "{{ ipxe_source_dir }}/src/bin/ipxe{{ item }}" - dest: "{{ netbootxyz_root }}/ipxe/{{ site_name }}{{ item }}" + dest: "{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}{{ item }}" remote_src: True with_items: - ".dsk" @@ -34,5 +34,5 @@ - name: Copy undionly.kpxe for Legacy BIOS to http directory copy: src: "{{ ipxe_source_dir }}/src/bin/undionly.kpxe" - dest: "{{ netbootxyz_root }}/ipxe/{{ site_name }}-undionly.kpxe" + dest: "{{ netbootxyz_root }}/ipxe/{{ bootloader_filename }}-undionly.kpxe" remote_src: True diff --git a/roles/netbootxyz/tasks/main.yml b/roles/netbootxyz/tasks/main.yml index a7437155..53cacea7 100644 --- a/roles/netbootxyz/tasks/main.yml +++ b/roles/netbootxyz/tasks/main.yml @@ -4,5 +4,13 @@ - generate_menus | default(true) | bool - include: generate_disks.yml + with_items: + - "{{ bootloader_disks }}" + loop_control: + loop_var: bootloader_file when: - - generate_disks | default(true) | bool \ No newline at end of file + - generate_disks | default(true) | bool + + - include: generate_checksums.yml + when: + - generate_checksums | default(true) | bool \ No newline at end of file diff --git a/roles/netbootxyz/templates/checksums.txt.j2 b/roles/netbootxyz/templates/checksums.txt.j2 new file mode 100644 index 00000000..4cbb0547 --- /dev/null +++ b/roles/netbootxyz/templates/checksums.txt.j2 @@ -0,0 +1,6 @@ +# {{ site_name }} bootloaders generated at {{ current_date.stdout }} +# iPXE Commit: {{ ipxe_repo }}/commit/{{ ipxe_git_checkout.after }} + +{% for item in netboot_disks_stat.results %} +{{ item.stdout }} +{% endfor %} \ No newline at end of file diff --git a/roles/netbootxyz/files/ipxe/disks/netboot.xyz-gce b/roles/netbootxyz/templates/disks/netboot.xyz-gce.j2 similarity index 100% rename from roles/netbootxyz/files/ipxe/disks/netboot.xyz-gce rename to roles/netbootxyz/templates/disks/netboot.xyz-gce.j2 diff --git a/roles/netbootxyz/files/ipxe/disks/netboot.xyz-packet b/roles/netbootxyz/templates/disks/netboot.xyz-packet.j2 similarity index 100% rename from roles/netbootxyz/files/ipxe/disks/netboot.xyz-packet rename to roles/netbootxyz/templates/disks/netboot.xyz-packet.j2 diff --git a/roles/netbootxyz/templates/disks/ipxe-bootloader.j2 b/roles/netbootxyz/templates/disks/netboot.xyz.j2 similarity index 100% rename from roles/netbootxyz/templates/disks/ipxe-bootloader.j2 rename to roles/netbootxyz/templates/disks/netboot.xyz.j2 diff --git a/roles/netbootxyz/templates/index.html.j2 b/roles/netbootxyz/templates/index.html.j2 new file mode 100644 index 00000000..2c1630dd --- /dev/null +++ b/roles/netbootxyz/templates/index.html.j2 @@ -0,0 +1,19 @@ + + +
+