Add additional OS installer images

- Debian 11, Ubuntu 20.04, and OpenBSD 7.0 images
  - Menu is too long, so added pxeboot_boot_images list to determine
    which images to download/include in menu
- Update versions and checksums downloaded for existing images, and use
  version specific paths where applicable.
- Update boot parameters to better support EFI booting
- Update galaxy metadata

Change-Id: Iab6d4385489458ff0e4491c4b1de544b442c2622
diff --git a/tasks/debian11.yml b/tasks/debian11.yml
new file mode 100644
index 0000000..448003f
--- /dev/null
+++ b/tasks/debian11.yml
@@ -0,0 +1,33 @@
+---
+# pxeboot tasks/debian11.yml
+#
+# SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+- name: Create debian11 dir in webroot
+  file:
+    state: directory
+    path: "{{ pxeboot_web_root }}/debian11"
+    owner: "{{ pxeboot_username }}"
+    group: "{{ pxeboot_groupname }}"
+    mode: "0755"
+
+- name: Download debian11 base files
+  get_url:
+    url: "{{ pxeboot_debian11_base_url }}/{{ pxeboot_debian11_version }}/{{ item['name'] }}"
+    dest: "{{ pxeboot_web_root }}/debian11/{{ item['name'] }}"
+    checksum: "{{ item['checksum'] }}"
+    owner: "{{ pxeboot_username }}"
+    group: "{{ pxeboot_groupname }}"
+    mode: "0644"
+  with_items: "{{ pxeboot_debian11_files }}"
+
+- name: Download debian11 nonfree files
+  get_url:
+    url: "{{ pxeboot_debian11_nonfree_url }}/{{ item['path'] }}/{{ item['name'] }}"
+    dest: "{{ pxeboot_web_root }}/debian11/{{ item['name'] }}"
+    checksum: "{{ item['checksum'] }}"
+    owner: "{{ pxeboot_username }}"
+    group: "{{ pxeboot_groupname }}"
+    mode: "0644"
+  with_items: "{{ pxeboot_debian11_nonfree_files }}"
diff --git a/tasks/main.yml b/tasks/main.yml
index a261517..f3a8f20 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -26,11 +26,61 @@
     group: "{{ pxeboot_groupname }}"
     mode: "0755"
 
-# create boot targets
-- include_tasks: "memtest.yml"
-- include_tasks: "ubuntu1804.yml"
-- include_tasks: "debian10.yml"
+# Download syslinux/memdisk, used by multiple images
 
+- name: Create utils dir in webroot
+  file:
+    state: directory
+    path: "{{ pxeboot_web_root }}/utils"
+    owner: "{{ pxeboot_username }}"
+    group: "{{ pxeboot_groupname }}"
+    mode: "0755"
+
+- name: Download syslinux archive (contains memdisk)
+  get_url:
+    url: >
+      https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-{{ pxeboot_syslinux_version }}.zip
+    checksum: "{{ pxeboot_syslinux_checksum }}"
+    dest: "{{ pxeboot_dist_dir }}/syslinux-{{ pxeboot_syslinux_version }}.zip"
+    owner: "root"
+    group: "root"
+    mode: "0644"
+  register: syslinux_dl
+
+- name: Create syslinux unarchive dir
+  file:
+    state: directory
+    path: "{{ pxeboot_dist_dir }}/syslinux-{{ pxeboot_syslinux_version }}"
+    owner: "root"
+    group: "{{ pxeboot_groupname }}"
+    mode: "0755"
+
+- name: Unarchive syslinux
+  unarchive:
+    remote_src: true
+    src: "{{ pxeboot_dist_dir }}/syslinux-{{ pxeboot_syslinux_version }}.zip"
+    dest: "{{ pxeboot_dist_dir }}/syslinux-{{ pxeboot_syslinux_version }}"
+    owner: "root"
+    group: "root"
+    mode: "0644"
+
+- name: Copy memdisk from syslinux
+  copy:
+    remote_src: true
+    src: "{{ pxeboot_dist_dir }}/syslinux-{{ pxeboot_syslinux_version }}/memdisk/memdisk"
+    dest: "{{ pxeboot_web_root }}/utils/memdisk"
+    owner: "{{ pxeboot_username }}"
+    group: "{{ pxeboot_groupname }}"
+    mode: 0644
+
+# create boot targets
+- name: Include boot images
+  include_tasks: "{{ pxeboot_boot_image }}.yml"
+  loop: "{{ pxeboot_boot_images | flatten(levels=1) }}"
+  loop_control:
+    loop_var: pxeboot_boot_image
+
+# create menu
 - name: Create iPXE menu chainboot script from template
   template:
     src: "boot.ipxe.j2"
diff --git a/tasks/memtest.yml b/tasks/memtest.yml
index 6b9dec3..06c5d80 100644
--- a/tasks/memtest.yml
+++ b/tasks/memtest.yml
@@ -38,40 +38,3 @@
     owner: "{{ pxeboot_username }}"
     group: "{{ pxeboot_groupname }}"
     mode: 0644
-
-- name: Download syslinux archive (contains memdisk)
-  get_url:
-    url: >
-      https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-{{ pxeboot_syslinux_version }}.zip
-    checksum: "{{ pxeboot_syslinux_checksum }}"
-    dest: "{{ pxeboot_dist_dir }}/syslinux-{{ pxeboot_syslinux_version }}.zip"
-    owner: "root"
-    group: "root"
-    mode: "0644"
-  register: syslinux_dl
-
-- name: Create syslinux unarchive dir
-  file:
-    state: directory
-    path: "{{ pxeboot_dist_dir }}/syslinux-{{ pxeboot_syslinux_version }}"
-    owner: "root"
-    group: "{{ pxeboot_groupname }}"
-    mode: "0755"
-
-- name: Unarchive syslinux
-  unarchive:
-    remote_src: true
-    src: "{{ pxeboot_dist_dir }}/syslinux-{{ pxeboot_syslinux_version }}.zip"
-    dest: "{{ pxeboot_dist_dir }}/syslinux-{{ pxeboot_syslinux_version }}"
-    owner: "root"
-    group: "root"
-    mode: "0644"
-
-- name: Copy memdisk from syslinux
-  copy:
-    remote_src: true
-    src: "{{ pxeboot_dist_dir }}/syslinux-{{ pxeboot_syslinux_version }}/memdisk/memdisk"
-    dest: "{{ pxeboot_web_root }}/memtest/memdisk"
-    owner: "{{ pxeboot_username }}"
-    group: "{{ pxeboot_groupname }}"
-    mode: 0644
diff --git a/tasks/openbsd70.yml b/tasks/openbsd70.yml
new file mode 100644
index 0000000..0979acc
--- /dev/null
+++ b/tasks/openbsd70.yml
@@ -0,0 +1,23 @@
+---
+# pxeboot tasks/openbsd70.yml
+#
+# SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+- name: Create openbsd70 dir in webroot
+  file:
+    state: directory
+    path: "{{ pxeboot_web_root }}/openbsd70"
+    owner: "{{ pxeboot_username }}"
+    group: "{{ pxeboot_groupname }}"
+    mode: "0755"
+
+- name: Download OpenBSD 7.0 base files
+  get_url:
+    url: "{{ pxeboot_openbsd70_base_url }}/{{ pxeboot_openbsd70_version }}/{{ item['name'] }}"
+    dest: "{{ pxeboot_web_root }}/openbsd70/{{ item['name'] }}"
+    checksum: "{{ item['checksum'] }}"
+    owner: "{{ pxeboot_username }}"
+    group: "{{ pxeboot_groupname }}"
+    mode: "0644"
+  with_items: "{{ pxeboot_openbsd70_files }}"
diff --git a/tasks/ubuntu2004.yml b/tasks/ubuntu2004.yml
new file mode 100644
index 0000000..4d60af9
--- /dev/null
+++ b/tasks/ubuntu2004.yml
@@ -0,0 +1,26 @@
+---
+# pxeboot tasks/ubuntu2004.yml
+#
+# SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+- name: Create ubuntu2004 dir in webroot
+  file:
+    state: directory
+    path: "{{ pxeboot_web_root }}/ubuntu2004"
+    owner: "{{ pxeboot_username }}"
+    group: "{{ pxeboot_groupname }}"
+    mode: "0755"
+
+- name: Download ubuntu2004 files
+  get_url:
+    url: "{{ pxeboot_ubuntu2004_base_url }}/{{ pxeboot_ubuntu2004_version }}/{{ item['name'] }}"
+    dest: "{{ pxeboot_web_root }}/ubuntu2004/{{ item['name'] }}"
+    checksum: "{{ item['checksum'] }}"
+    owner: "{{ pxeboot_username }}"
+    group: "{{ pxeboot_groupname }}"
+    mode: "0644"
+  with_items: "{{ pxeboot_ubuntu2004_files }}"
+
+# NOTE: Ubuntu 20.04 switched away from using preseed to an autoinstall method
+# https://ubuntu.com/server/docs/install/autoinstall