From 132399730c1acde4a9c8075611dfd7aa792a3cde Mon Sep 17 00:00:00 2001 From: Antony Messerli Date: Mon, 25 Nov 2019 03:21:05 +0000 Subject: [PATCH] Pushing up more changes --- roles/netbootxyz/defaults/main.yml | 17 ++++- roles/netbootxyz/files/ipxe/disks/netboot.xyz | 67 ------------------- roles/netbootxyz/tasks/generate_checksums.yml | 26 +++++++ roles/netbootxyz/tasks/generate_disks.yml | 2 +- .../netbootxyz/tasks/generate_disks_base.yml | 8 ++- roles/netbootxyz/tasks/generate_disks_efi.yml | 4 +- .../tasks/generate_disks_legacy.yml | 4 +- roles/netbootxyz/tasks/main.yml | 10 ++- roles/netbootxyz/templates/checksums.txt.j2 | 6 ++ .../disks/netboot.xyz-gce.j2} | 0 .../disks/netboot.xyz-packet.j2} | 0 .../{ipxe-bootloader.j2 => netboot.xyz.j2} | 0 roles/netbootxyz/templates/index.html.j2 | 19 ++++++ roles/netbootxyz/templates/menu/index.html.j2 | 11 --- script/build_release | 2 +- script/message | 2 +- user_overrides.yml | 1 + 17 files changed, 89 insertions(+), 90 deletions(-) delete mode 100644 roles/netbootxyz/files/ipxe/disks/netboot.xyz create mode 100644 roles/netbootxyz/tasks/generate_checksums.yml create mode 100644 roles/netbootxyz/templates/checksums.txt.j2 rename roles/netbootxyz/{files/ipxe/disks/netboot.xyz-gce => templates/disks/netboot.xyz-gce.j2} (100%) rename roles/netbootxyz/{files/ipxe/disks/netboot.xyz-packet => templates/disks/netboot.xyz-packet.j2} (100%) rename roles/netbootxyz/templates/disks/{ipxe-bootloader.j2 => netboot.xyz.j2} (100%) create mode 100644 roles/netbootxyz/templates/index.html.j2 delete mode 100644 roles/netbootxyz/templates/menu/index.html.j2 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 @@ + + + + {{ site_name }} BootLoaders + + +
+             _   _                 _                    
+  _ __   ___| |_| |__   ___   ___ | |_  __  ___   _ ____
+ | '_ \ / _ \ __| '_ \ / _ \ / _ \| __| \ \/ / | | |_  /
+ | | | |  __/ |_| |_) | (_) | (_) | |_ _ >  <| |_| |/ / 
+ |_| |_|\___|\__|_.__/ \___/ \___/ \__(_)_/\_\\__, /___|
+                                              |___/     
+
+ {% for item in netboot_disks.stdout_lines %} + {{ item }}
+ {% endfor %} + + \ No newline at end of file diff --git a/roles/netbootxyz/templates/menu/index.html.j2 b/roles/netbootxyz/templates/menu/index.html.j2 deleted file mode 100644 index 36efcf75..00000000 --- a/roles/netbootxyz/templates/menu/index.html.j2 +++ /dev/null @@ -1,11 +0,0 @@ -#!ipxe -#### {{ boot_domain }} initial loader -#### see https://netboot.xyz for more information -{% if bootloader_https_enabled | bool %} -set conn_type https -chain --autofree https://{{ boot_domain }}/menu.ipxe || echo HTTPS failed... attempting HTTP... -{% endif %} -{% if bootloader_http_enabled | bool %} -set conn_type http -chain --autofree http://{{ boot_domain }}/menu.ipxe || echo HTTP failed, localbooting... -{% endif %} \ No newline at end of file diff --git a/script/build_release b/script/build_release index 0107c606..4186874e 100755 --- a/script/build_release +++ b/script/build_release @@ -4,7 +4,7 @@ TYPE=$1 # Set boot domain if [[ "${TYPE}" == "dev" ]]; then - BOOT_DOMAIN="${BUCKET_DEV}.s3-website-us-east-1.amazonaws.com/${TRAVIS_COMMIT}" + BOOT_DOMAIN="s3.amazonaws.com/${BUCKET_DEV}/${TRAVIS_COMMIT}" elif [[ "${TYPE}" == "pr" ]]; then BOOT_DOMAIN="test.com" elif [[ "${TYPE}" == "rc" ]]; then diff --git a/script/message b/script/message index cdd2d705..7d6adb1b 100755 --- a/script/message +++ b/script/message @@ -3,7 +3,7 @@ TYPE=$1 if [ "${TYPE}" == "dev-push" ]; then - BOOT_URL="https://${BUCKET_DEV}.s3-website-us-east-1.amazonaws.com/${TRAVIS_COMMIT}/index.html" + BOOT_URL="https://s3.amazonaws.com/${BUCKET_DEV}/${TRAVIS_COMMIT}/index.html" elif [ "${TYPE}" == "rc-push" ]; then BOOT_URL="https://staging.boot.netboot.xyz/${TRAVIS_TAG}/index.html" elif [ "${TYPE}" == "live-push" ]; then diff --git a/user_overrides.yml b/user_overrides.yml index 105f4833..20bb6502 100644 --- a/user_overrides.yml +++ b/user_overrides.yml @@ -3,6 +3,7 @@ # overrides defaults in netbootxyz role generate_menus: true generate_disks: true +generate_checksums: true # set desired site name #site_name: mysitename.com