Merge "Replace pxelinux with iPXE support in MNAIO"

This commit is contained in:
Zuul 2018-02-08 21:07:15 +00:00 committed by Gerrit Code Review
commit 007371b35c
24 changed files with 167 additions and 246 deletions

View File

@ -170,6 +170,12 @@ Instruct the system to use a set amount of ram for the logging VM type:
Instruct the system to use a set amount of ram for the swift VM type: Instruct the system to use a set amount of ram for the swift VM type:
``SWIFT_VM_SERVER_RAM=${SWIFT_VM_SERVER_RAM:-1024}`` ``SWIFT_VM_SERVER_RAM=${SWIFT_VM_SERVER_RAM:-1024}``
Instruct the system to use a customized iPXE kernel:
``IPXE_KERNEL_URL=${IPXE_KERNEL_URL:-'http://boot.ipxe.org/ipxe.lkrn'}``
Instruct the system to use a customized iPXE script during boot of VMs:
``IPXE_PATH_URL=${IPXE_PATH_URL:-''}``
Re-kicking VM(s) Re-kicking VM(s)
---------------- ----------------

View File

@ -43,12 +43,14 @@ ansible-playbook -vv \
-e default_ubuntu_kernel=${DEFAULT_KERNEL:-"linux-image-generic"} \ -e default_ubuntu_kernel=${DEFAULT_KERNEL:-"linux-image-generic"} \
-e default_ubuntu_mirror_hostname=${DEFAULT_MIRROR_HOSTNAME:-"archive.ubuntu.com"} \ -e default_ubuntu_mirror_hostname=${DEFAULT_MIRROR_HOSTNAME:-"archive.ubuntu.com"} \
-e default_ubuntu_mirror_directory=${DEFAULT_MIRROR_DIR:-"/ubuntu"} \ -e default_ubuntu_mirror_directory=${DEFAULT_MIRROR_DIR:-"/ubuntu"} \
-e cinder_vm_server_ram=${CINDER_VM_SERVER_RAM-"2048"} \ -e cinder_vm_server_ram=${CINDER_VM_SERVER_RAM:-"2048"} \
-e compute_vm_server_ram=${COMPUTE_VM_SERVER_RAM-"8196"} \ -e compute_vm_server_ram=${COMPUTE_VM_SERVER_RAM:-"8196"} \
-e infra_vm_server_ram=${INFRA_VM_SERVER_RAM-"8196"} \ -e infra_vm_server_ram=${INFRA_VM_SERVER_RAM:-"8196"} \
-e loadbalancer_vm_server_ram=${LOADBALANCER_VM_SERVER_RAM-"1024"} \ -e loadbalancer_vm_server_ram=${LOADBALANCER_VM_SERVER_RAM:-"1024"} \
-e logging_vm_server_ram=${LOGGING_VM_SERVER_RAM-"1024"} \ -e logging_vm_server_ram=${LOGGING_VM_SERVER_RAM:-"1024"} \
-e swift_vm_server_ram=${SWIFT_VM_SERVER_RAM-"1024"} \ -e swift_vm_server_ram=${SWIFT_VM_SERVER_RAM:-"1024"} \
-e container_tech=${CONTAINER_TECH-"lxc"}\ -e container_tech=${CONTAINER_TECH-"lxc"} \
-e ipxe_kernel_url=${IPXE_KERNEL_URL:-"http://boot.ipxe.org/ipxe.lkrn"} \
-e ipxe_path_url=${IPXE_PATH_URL:-""} \
--force-handlers \ --force-handlers \
playbooks/site.yml playbooks/site.yml

View File

@ -45,15 +45,13 @@
mode: "0755" mode: "0755"
with_items: with_items:
- /var/www/pxe - /var/www/pxe
- /var/www/pxe/configs
- /var/www/pxe/images - /var/www/pxe/images
- /var/www/pxe/iso
- /var/www/pxe/networking - /var/www/pxe/networking
- /var/www/pxe/scripts - /var/www/pxe/scripts
- /var/www/pxe/templates - /var/www/pxe/templates
- /var/lib/tftpboot - /var/lib/tftpboot
- /var/lib/tftpboot/boot-screens - /var/lib/tftpboot/ipxe
- /var/lib/tftpboot/preseed
- /var/lib/tftpboot/pxelinux.cfg
- name: Get root public key - name: Get root public key
command: cat /root/.ssh/id_rsa.pub command: cat /root/.ssh/id_rsa.pub
@ -89,82 +87,23 @@
notify: notify:
- restart tftp-hpa - restart tftp-hpa
- name: Download image iso(s) - name: Download iPXE
get_url: get_url:
url: "{{ item.value.image_iso_url }}" url: "{{ ipxe_kernel_url }}"
dest: "/var/www/pxe/iso/{{ item.value.image_name }}" dest: "/var/lib/tftpboot/ipxe.lkrn"
with_dict: "{{ images }}"
- name: Remove image directory if it exists
file:
path: "/var/www/pxe/images/{{ item.value.image_short_name }}"
state: absent
with_dict: "{{ images }}"
- name: Create image directory if it exists
file:
path: "/var/www/pxe/images/{{ item.value.image_short_name }}"
state: directory
owner: "root"
group: "root"
mode: "0755"
with_dict: "{{ images }}"
- name: Extract ISO(s) contents
command: "7z x /var/www/pxe/iso/{{ item.value.image_name }}"
args:
chdir: "/var/www/pxe/images/{{ item.value.image_short_name }}"
with_dict: "{{ images }}"
- name: Download pxelinux
get_url:
url: "{{ pxelinux_url }}"
dest: "/var/www/pxe/{{ pxelinux_name }}"
tmp_dest: /tmp/ tmp_dest: /tmp/
- name: Remove image directory if it exists - name: Drop ipxe default menu
file:
path: "/var/www/pxe/{{ pxelinux_short_name }}"
state: absent
- name: Extract pxelinux contents
command: "tar -xf /var/www/pxe/{{ pxelinux_name }}"
args:
chdir: "/var/www/pxe"
- name: Drop pxelinux.cfg default menu
copy:
src: "pxe/tftp/pxelinux.cfg.default"
dest: "{{ item }}"
mode: "0644"
owner: root
group: root
with_items:
- /var/lib/tftpboot/pxelinux.cfg/default
- /var/lib/tftpboot/boot-screens/syslinux.cfg
# These links are using the shell command because the file module does not create hard links
- name: Create hard links
shell: |
ln -f /var/www/pxe/{{ pxelinux_short_name }}/bios/com32/elflink/ldlinux/ldlinux.c32 /var/lib/tftpboot/ldlinux.c32
ln -f /var/www/pxe/{{ pxelinux_short_name }}/bios/core/pxelinux.0 /var/lib/tftpboot/pxelinux.0
ln -f /var/www/pxe/{{ pxelinux_short_name }}/bios/com32/lib/libcom32.c32 /var/lib/tftpboot/boot-screens/libcom32.c32
ln -f /var/www/pxe/{{ pxelinux_short_name }}/bios/com32/libutil/libutil.c32 /var/lib/tftpboot/boot-screens/libutil.c32
ln -f /var/www/pxe/{{ pxelinux_short_name }}/bios/com32/menu/vesamenu.c32 /var/lib/tftpboot/boot-screens/vesamenu.c32
- name: Drop boot-screens default menu
template: template:
src: "pxe/tftp/menu.cfg.j2" src: "pxe/tftp/boot.ipxe.j2"
dest: /var/lib/tftpboot/boot-screens/menu.cfg dest: "/var/lib/tftpboot/boot.ipxe"
mode: "0644" mode: "0644"
owner: root owner: root
group: root group: root
tags:
- boot-menu
- name: network scripts for pxe - name: network scripts for pxe
template: template:
src: "pxe/{{ ansible_os_family | lower }}/{{ item.src }}" src: "pxe/configs/{{ ansible_os_family | lower }}/{{ item.src }}"
dest: /var/www/pxe/{{ item.dir }}/{{ item.dest }} dest: /var/www/pxe/{{ item.dir }}/{{ item.dest }}
mode: "0644" mode: "0644"
owner: root owner: root
@ -182,7 +121,7 @@
- name: network scripts for an MNAIO - name: network scripts for an MNAIO
template: template:
src: "pxe/{{ ansible_os_family | lower }}/{{ item.src }}" src: "pxe/configs/{{ ansible_os_family | lower }}/{{ item.src }}"
dest: /var/www/pxe/{{ item.dir }}/{{ item.dest }} dest: /var/www/pxe/{{ item.dir }}/{{ item.dest }}
mode: "0644" mode: "0644"
owner: root owner: root
@ -199,7 +138,7 @@
- name: network scripts for servers - name: network scripts for servers
template: template:
src: "pxe/{{ ansible_os_family | lower }}/vm-bridges.cfg.j2" src: "pxe/configs/{{ ansible_os_family | lower }}/vm-bridges.cfg.j2"
dest: /var/www/pxe/networking/{{ hostvars[item]['server_hostname'] }}-bridges.cfg dest: /var/www/pxe/networking/{{ hostvars[item]['server_hostname'] }}-bridges.cfg
mode: "0644" mode: "0644"
owner: root owner: root
@ -208,8 +147,8 @@
- name: tftp configs for servers - name: tftp configs for servers
template: template:
src: "pxe/tftp/pxelinux.cfg.macaddr.j2" src: "pxe/tftp/boot.ipxe.macaddr.j2"
dest: "/var/lib/tftpboot/pxelinux.cfg/01-{{ hostvars[item]['server_mac_address'] | replace(':', '-') | lower }}" dest: "/var/lib/tftpboot/ipxe/{{ hostvars[item]['server_mac_address'] | replace(':', '-') | lower }}"
mode: "0644" mode: "0644"
owner: root owner: root
group: root group: root
@ -217,8 +156,8 @@
- name: Preseeds for pxe mnaio - name: Preseeds for pxe mnaio
template: template:
src: "pxe/{{ ansible_os_family | lower }}/mnaio.preseed.j2" src: "pxe/configs/{{ ansible_os_family | lower }}/mnaio.config.j2"
dest: /var/lib/tftpboot/preseed/mnaio.preseed dest: /var/www/pxe/configs/mnaio.config
mode: "0644" mode: "0644"
owner: root owner: root
group: root group: root
@ -226,8 +165,8 @@
- name: Preseeds for pxe vm - name: Preseeds for pxe vm
template: template:
src: "pxe/{{ ansible_os_family | lower }}/vm.preseed.j2" src: "pxe/configs/{{ ansible_os_family | lower }}/vm.config.j2"
dest: /var/lib/tftpboot/preseed/vm.preseed dest: /var/www/pxe/configs/vm.config
mode: "0644" mode: "0644"
owner: root owner: root
group: root group: root
@ -235,8 +174,8 @@
- name: Preseeds for pxe vm-compute - name: Preseeds for pxe vm-compute
template: template:
src: "pxe/{{ ansible_os_family | lower }}/vm-compute.preseed.j2" src: "pxe/configs/{{ ansible_os_family | lower }}/vm-compute.config.j2"
dest: /var/lib/tftpboot/preseed/vm-compute.preseed dest: /var/www/pxe/configs/vm-compute.config
mode: "0644" mode: "0644"
owner: root owner: root
group: root group: root
@ -244,8 +183,8 @@
- name: Preseeds for pxe compute - name: Preseeds for pxe compute
template: template:
src: "pxe/{{ ansible_os_family | lower }}/compute.preseed.j2" src: "pxe/configs/{{ ansible_os_family | lower }}/compute.config.j2"
dest: /var/lib/tftpboot/preseed/compute.preseed dest: /var/www/pxe/configs/compute.config
mode: "0644" mode: "0644"
owner: root owner: root
group: root group: root
@ -253,32 +192,13 @@
- name: Preseeds for pxe infra - name: Preseeds for pxe infra
template: template:
src: "pxe/{{ ansible_os_family | lower }}/infra.preseed.j2" src: "pxe/configs/{{ ansible_os_family | lower }}/infra.config.j2"
dest: /var/lib/tftpboot/preseed/infra.preseed dest: /var/www/pxe/configs/infra.config
mode: "0644" mode: "0644"
owner: root owner: root
group: root group: root
with_dict: "{{ images }}" with_dict: "{{ images }}"
- name: Create netboot bind mount path
file:
path: "/var/lib/tftpboot/{{ item.value.image_short_name }}"
state: directory
owner: "root"
group: "root"
mode: "0755"
with_dict: "{{ images }}"
- name: Unbind mount netboot images
mount:
name: "/var/lib/tftpboot/{{ item.value.image_short_name }}"
src: "/var/www/pxe/images/{{ item.value.image_netboot }}"
opts: bind
fstype: none
state: unmounted
register: fstab
with_dict: "{{ images }}"
- name: Ensure permissions are correct - name: Ensure permissions are correct
shell: | shell: |
# Fix perms if needed # Fix perms if needed
@ -286,16 +206,6 @@
find /var/lib/tftpboot -type f -exec chmod 0644 {} \; find /var/lib/tftpboot -type f -exec chmod 0644 {} \;
find /var/www/pxe -type d -exec chmod 0755 {} \; find /var/www/pxe -type d -exec chmod 0755 {} \;
- name: Bind mount netboot images
mount:
name: "/var/lib/tftpboot/{{ item.value.image_short_name }}"
src: "/var/www/pxe/images/{{ item.value.image_netboot }}"
opts: bind
fstype: none
state: mounted
register: fstab
with_dict: "{{ images }}"
environment: "{{ deployment_environment_variables | default({}) }}" environment: "{{ deployment_environment_variables | default({}) }}"
handlers: handlers:

View File

@ -12,26 +12,30 @@ shared-network all-networks {
option routers {{ dhcp.gateway }}; option routers {{ dhcp.gateway }};
option domain-name-servers {{ dhcp.dns }}; option domain-name-servers {{ dhcp.dns }};
option subnet-mask {{ dhcp.netmask }}; option subnet-mask {{ dhcp.netmask }};
{% if dhcp.default_lease_time is defined and dhcp.default_lease_time > 0 %} {% if dhcp.default_lease_time is defined and dhcp.default_lease_time > 0 %}
default-lease-time {{ dhcp.default_lease_time }}; default-lease-time {{ dhcp.default_lease_time }};
{% else %} {% else %}
default-lease-time {{ dhcp_default_lease_time }}; default-lease-time {{ dhcp_default_lease_time }};
{% endif %} {% endif %}
{% if dhcp.max_lease_time is defined and dhcp.max_lease_time > 0 %} {% if dhcp.max_lease_time is defined and dhcp.max_lease_time > 0 %}
max-lease-time {{ dhcp.max_lease_time }}; max-lease-time {{ dhcp.max_lease_time }};
{% else %} {% else %}
max-lease-time {{ dhcp_max_lease_time }}; max-lease-time {{ dhcp_max_lease_time }};
{% endif %} {% endif %}
{% if dhcp.tftp_server is defined and dhcp.tftp_server|ipaddr %} {% if dhcp.tftp_server is defined and dhcp.tftp_server|ipaddr %}
next-server {{ dhcp.tftp_server }}; next-server {{ dhcp.tftp_server }};
{% elif tftp_server is defined and tftp_server|length > 0 %} {% elif tftp_server is defined and tftp_server|length > 0 %}
next-server {{ tftp_server }}; next-server {{ tftp_server }};
{% endif %} {% endif %}
{% if dhcp.tftp_boot_path is defined and dhcp.tftp_boot_path|ipaddr %} if exists user-class and ( option user-class = "iPXE" ) {
filename "{{ dhcp.tftp_boot_path }}"; {% if dhcp.ipxe_boot_file is defined and dhcp.ipxe_boot_file|ipaddr %}
{% elif tftp_boot_path is defined and tftp_boot_path|length > 0 %} filename "{{ dhcp.ipxe_boot_file }}";
filename "{{ tftp_boot_path }}"; {% elif ipxe_boot_file is defined and ipxe_boot_file|length > 0 %}
{% endif %} filename "{{ ipxe_boot_file }}";
{% endif %}
} else {
filename "ipxe.lkrn";
}
} }
{% endfor %} {% endfor %}

View File

@ -24,6 +24,8 @@ default_ubuntu_mirror_proxy: 'http://10.0.2.1:3142/'
default_ubuntu_mirror_hostname: archive.ubuntu.com default_ubuntu_mirror_hostname: archive.ubuntu.com
default_ubuntu_mirror_directory: /ubuntu default_ubuntu_mirror_directory: /ubuntu
ipxe_kernel_url: "{{ ipxe_kernel_url | default('http://boot.ipxe.org/ipxe.lkrn') }}"
# IP address, or domain name of the TFTP server # IP address, or domain name of the TFTP server
tftp_server: "{{ hostvars[groups['pxe_hosts'][0]]['ansible_host'] | default(ansible_host) }}" tftp_server: "{{ hostvars[groups['pxe_hosts'][0]]['ansible_host'] | default(ansible_host) }}"
# tftp_ssh_key: '' # user defined ssh key, used to access the host # tftp_ssh_key: '' # user defined ssh key, used to access the host
@ -32,57 +34,51 @@ tftp_port: 69
# Default ISO images # Default ISO images
images: images:
ubuntu-16.04-amd64: ubuntu-16.04-amd64:
image_type: debian image_type: "debian"
image_iso_url: "http://releases.ubuntu.com/16.04.2/ubuntu-16.04.2-server-amd64.iso" image_os: "ubuntu"
image_name: "ubuntu-16.04.2-server-amd64.iso" image-version: "xenial"
image_short_name: "ubuntu-16.04.2-server-amd64"
image_default_boot: "ubuntu-16.04.2-server-amd64/amd64/boot-screens/menu.cfg"
image_kernel_options: "biosdevname=0 net.ifnames=0 auto=true priority=critical" image_kernel_options: "biosdevname=0 net.ifnames=0 auto=true priority=critical"
image_kernel: "ubuntu-16.04.2-server-amd64/amd64/linux" image_netboot_kernel_url: "http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux"
image_initrd: "ubuntu-16.04.2-server-amd64/amd64/initrd.gz" image_netboot_initrd_url: "http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz"
image_netboot: "ubuntu-16.04.2-server-amd64/install/netboot/ubuntu-installer" image_configs:
image_preseeds:
mnaio: mnaio:
url: "tftp://{{ tftp_server }}/preseed/mnaio.preseed" url: "http://{{ tftp_server }}/configs/mnaio.config"
template_name: "mnaio.preseed" template_name: "mnaio.config"
vm: vm:
url: "tftp://{{ tftp_server }}/preseed/vm.preseed" url: "http://{{ tftp_server }}/configs/vm.config"
template_name: "vm.preseed" template_name: "vm.config"
vm-compute: vm-compute:
url: "tftp://{{ tftp_server }}/preseed/vm-compute.preseed" url: "http://{{ tftp_server }}/configs/vm-compute.config"
template_name: "vm-compute.preseed" template_name: "vm-compute.config"
compute: compute:
url: "tftp://{{ tftp_server }}/preseed/compute.preseed" url: "http://{{ tftp_server }}/configs/compute.config"
template_name: "compute.preseed" template_name: "compute.config"
infra: infra:
url: "tftp://{{ tftp_server }}/preseed/infra.preseed" url: "http://{{ tftp_server }}/configs/infra.config"
template_name: "infra.preseed" template_name: "infra.config"
ubuntu-14.04-amd64: ubuntu-14.04-amd64:
image_type: debian image_type: "debian"
image_iso_url: "http://releases.ubuntu.com/14.04.5/ubuntu-14.04.5-server-amd64.iso" image_os: "ubuntu"
image_name: "ubuntu-14.04.5-server-amd64.iso" image_version: "trusty"
image_short_name: "ubuntu-14.04.5-server-amd64"
image_default_boot: "ubuntu-14.04.5-server-amd64/amd64/boot-screens/menu.cfg"
image_kernel_options: "biosdevname=0 net.ifnames=0 auto=true priority=critical quiet splash" image_kernel_options: "biosdevname=0 net.ifnames=0 auto=true priority=critical quiet splash"
image_kernel: "ubuntu-14.04.5-server-amd64/amd64/linux" image_netboot_kernel_url: "http://archive.ubuntu.com/ubuntu/dists/trusty/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux"
image_initrd: "ubuntu-14.04.5-server-amd64/amd64/initrd.gz" image_netboot_initrd_url: "http://archive.ubuntu.com/ubuntu/dists/trusty/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz"
image_netboot: "ubuntu-14.04.5-server-amd64/install/netboot/ubuntu-installer" image_configs:
image_preseeds:
mnaio: mnaio:
url: "tftp://{{ tftp_server }}/preseed/mnaio.preseed" url: "http://{{ tftp_server }}/configs/mnaio.config"
template_name: "mnaio.preseed" template_name: "mnaio.config"
vm: vm:
url: "tftp://{{ tftp_server }}/preseed/vm.preseed" url: "http://{{ tftp_server }}/configs/vm.config"
template_name: "vm.preseed" template_name: "vm.config"
vm-compute: vm-compute:
url: "tftp://{{ tftp_server }}/preseed/vm-compute.preseed" url: "http://{{ tftp_server }}/configs/vm-compute.config"
template_name: "vm-compute.preseed" template_name: "vm-compute.config"
compute: compute:
url: "tftp://{{ tftp_server }}/preseed/compute.preseed" url: "http://{{ tftp_server }}/configs/compute.config"
template_name: "compute.preseed" template_name: "compute.config"
infra: infra:
url: "tftp://{{ tftp_server }}/preseed/infra.preseed" url: "http://{{ tftp_server }}/configs/infra.config"
template_name: "infra.preseed" template_name: "infra.config"
# mnaio_data_disk: 'sdc' # str - not required, set this to define a given data disk if no data disk # mnaio_data_disk: 'sdc' # str - not required, set this to define a given data disk if no data disk
# is defined the largest unpartitioned disk will be used. # is defined the largest unpartitioned disk will be used.
mnaio_host_networks: mnaio_host_networks:

View File

@ -11,10 +11,9 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
dhcp_default_lease_time: 21600 # Default lease time dhcp_default_lease_time: 21600 # Default lease time
dhcp_max_lease_time: 43200 # Max lease time dhcp_max_lease_time: 43200 # Max lease time
tftp_boot_path: /pxelinux.0 # Path of where to boot from first ipxe_boot_file: "boot.ipxe" # Path of initial iPXE bootloader
# - List of DHCP Subnets - These are iterated though and each will be created # - List of DHCP Subnets - These are iterated though and each will be created
dhcp_list: dhcp_list:
- netmask: 255.255.255.0 # Netmask - netmask: 255.255.255.0 # Netmask
@ -23,6 +22,6 @@ dhcp_list:
subnet: 10.0.2.0 # Subnet mask subnet: 10.0.2.0 # Subnet mask
default_lease_time: 21600 # Subnet Default lease time - The default is used if this is not defined default_lease_time: 21600 # Subnet Default lease time - The default is used if this is not defined
max_lease_time: 43200 # Subnet Max lease time - The default is used if this is not defined max_lease_time: 43200 # Subnet Max lease time - The default is used if this is not defined
tftp_boot_path: /pxelinux.0 # Path for tftp of where to boot from first - The default is used if this is not defined ipxe_boot_file: "boot.ipxe" # Path of initial iPXE bootloader to boot from first
tftp_server: "{{ tftp_server }}" # The server hosting the TFTP server - The default is used if this is not defined tftp_server: "{{ tftp_server }}" # The server hosting the TFTP server - The default is used if this is not defined
dhcp_default_domain_name: openstackci.local dhcp_default_domain_name: openstackci.local

View File

@ -11,6 +11,4 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
pxelinux_url: "https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz" ipxe_ubuntu_version: "1.0.0+git-20150424.a25a16d-1ubuntu1.2"
pxelinux_name: "syslinux-6.03.tar.gz"
pxelinux_short_name: "syslinux-6.03"

View File

@ -34,11 +34,6 @@ d-i netcfg/wireless_wep string
d-i preseed/early_command string \ d-i preseed/early_command string \
umount /media || true umount /media || true
# Net Image
# Required at least for 12.10+
d-i live-installer/net-image string {{ tftp_server }}/images/{{ item.value.image_short_name }}/install/filesystem.squashfs
# The kernel image (meta) package to be installed; "none" can be used if no # The kernel image (meta) package to be installed; "none" can be used if no
# kernel is to be installed. # kernel is to be installed.
d-i base-installer/kernel/image string {{ default_ubuntu_kernel }} d-i base-installer/kernel/image string {{ default_ubuntu_kernel }}

View File

@ -34,11 +34,6 @@ d-i netcfg/wireless_wep string
d-i preseed/early_command string \ d-i preseed/early_command string \
umount /media || true umount /media || true
# Net Image
# Required at least for 12.10+
d-i live-installer/net-image string {{ tftp_server }}/images/{{ item.value.image_short_name }}/install/filesystem.squashfs
# The kernel image (meta) package to be installed; "none" can be used if no # The kernel image (meta) package to be installed; "none" can be used if no
# kernel is to be installed. # kernel is to be installed.
d-i base-installer/kernel/image string {{ default_ubuntu_kernel }} d-i base-installer/kernel/image string {{ default_ubuntu_kernel }}

View File

@ -34,11 +34,6 @@ d-i netcfg/wireless_wep string
d-i preseed/early_command string \ d-i preseed/early_command string \
umount /media || true umount /media || true
# Net Image
# Required at least for 12.10+
d-i live-installer/net-image string {{ tftp_server }}/images/{{ item.value.image_short_name }}/install/filesystem.squashfs
# The kernel image (meta) package to be installed; "none" can be used if no # The kernel image (meta) package to be installed; "none" can be used if no
# kernel is to be installed. # kernel is to be installed.
d-i base-installer/kernel/image string {{ default_ubuntu_kernel }} d-i base-installer/kernel/image string {{ default_ubuntu_kernel }}

View File

@ -34,11 +34,6 @@ d-i netcfg/wireless_wep string
d-i preseed/early_command string \ d-i preseed/early_command string \
umount /media || true umount /media || true
# Net Image
# Required at least for 12.10+
d-i live-installer/net-image string {{ tftp_server }}/images/{{ item.value.image_short_name }}/install/filesystem.squashfs
# The kernel image (meta) package to be installed; "none" can be used if no # The kernel image (meta) package to be installed; "none" can be used if no
# kernel is to be installed. # kernel is to be installed.
d-i base-installer/kernel/image string {{ default_ubuntu_kernel }} d-i base-installer/kernel/image string {{ default_ubuntu_kernel }}

View File

@ -34,11 +34,6 @@ d-i netcfg/wireless_wep string
d-i preseed/early_command string \ d-i preseed/early_command string \
umount /media || true umount /media || true
# Net Image
# Required at least for 12.10+
d-i live-installer/net-image string {{ tftp_server }}/images/{{ item.value.image_short_name }}/install/filesystem.squashfs
# The kernel image (meta) package to be installed; "none" can be used if no # The kernel image (meta) package to be installed; "none" can be used if no
# kernel is to be installed. # kernel is to be installed.
d-i base-installer/kernel/image string {{ default_ubuntu_kernel }} d-i base-installer/kernel/image string {{ default_ubuntu_kernel }}

View File

@ -0,0 +1,61 @@
#!ipxe
set esc:hex 1b
set bold ${esc:string}[1m
set boldoff ${esc:string}[22m
set space:hex 20:20
set space ${space:string}
set timeout 10
{% if ipxe_kernel_url is defined and ipxe_kernel_url|length > 0%}
iseq ${version} {{ ipxe_ubuntu_version }} && chain --autofree {{ ipxe_kernel_url }} ||
{% else %}
iseq ${version} {{ ipxe_ubuntu_version }} && chain --autofree ipxe.lkrn ||
{% endif %}
{% if ipxe_path_url is defined and ipxe_path_url| length > 0%}
echo Loading iPXE path defined in ipxe_path_url...
chain --autofree {{ ipxe_path_url }}
{% endif %}
:start
echo ${bold}Multi Node AIO Install${boldoff} starting...
prompt --key m --timeout 4000 Hit the ${bold}m${boldoff} key to load default menu... && goto menu || goto boot_mac
:boot_mac
chain --autofree ipxe/${net0/mac:hexhyp} ||
goto menu
:menu
clear choice
menu Multi Node AIO Installation Menu
item --gap Default:
item local ${space} Boot from local hdd
item --gap Automated Installs
{% for key, value in images.items() %}
{% for _key, _value in value.image_configs.items() %}
item {{ key }}-{{ _key }} ${space} {{ key }}-{{ _key }}
{% endfor %}
{% endfor %}
item --gap Tools
item shell ${space} iPXE shell
isset ${choice} && set timeout 0 || set timeout 300000
choose --timeout ${timeout} --default local choice && goto ${choice} || goto local
{% for key, value in images.items() %}
{% for _key, _value in value.image_configs.items() %}
:{{ key }}-{{ _key }}
kernel {{ value.image_netboot_kernel_url }}
initrd {{ value.image_netboot_initrd_url }}
{% if value.image_type == 'debian' %}
imgargs linux {{ value.image_kernel_options }} initrd=initrd.gz preseed/url={{ _value.url }} preseed/interactive=false netcfg/choose_interface={{ default_interface }}
{% endif %}
boot
{% endfor %}
{% endfor %}
:local
echo Booting from local disks ...
exit 0
:shell
echo Type "exit" to return to menu.
shell
goto menu

View File

@ -0,0 +1,10 @@
{% set server_vars = hostvars[item] %}
{% set image_properties = images[server_vars['server_image']] %}
#!ipxe
kernel {{ image_properties['image_netboot_kernel_url'] }}
initrd {{ image_properties['image_netboot_initrd_url'] }}
{% if image_properties['image_type'] == 'debian' %}
imgargs linux hostname={{ server_vars['server_hostname'] }} {{ image_properties['image_kernel_options'] }} preseed/url={{ image_properties['image_configs'][server_vars['server_preseed_ks']]['url'] }} preseed/interactive=false netcfg/choose_interface={{ server_vars['server_default_interface'] }} netcfg/get_domain={{ server_vars['server_domain_name'] }} initrd=initrd.gz {{ server_vars['server_extra_options'] | default('') }}
{% endif %}
boot

View File

@ -1,24 +0,0 @@
menu hshift 13
menu width 49
menu margin 8
menu tabmsg
menu title Boot Menu
label local
menu label ^Boot local hard drive
LOCALBOOT 0
{% for key, value in images.items() %}
{% for _key, _value in value.image_preseeds.items() %}
label {{ key }}-{{ _key }}
menu label ^{{ key }}-{{ _key }} automated install
kernel {{ value.image_kernel }}
{% if value.image_type == 'debian' %}
append {{ value.image_kernel_options }} initrd={{ value.image_initrd }} preseed/url={{ _value.url }} preseed/interactive=false netcfg/choose_interface={{ default_interface }}
{% endif %}
{% endfor %}
{% endfor %}
menu end

View File

@ -1,5 +0,0 @@
path boot-screens
include boot-screens/menu.cfg
default boot-screens/vesamenu.c32
prompt 0
timeout 100

View File

@ -1,11 +0,0 @@
{% set server_vars = hostvars[item] %}
{% set image_properties = images[server_vars['server_image']] %}
default linux
prompt 0
timeout 1
label linux
kernel {{ image_properties['image_kernel'] }}
{% if image_properties['image_type'] == 'debian' %}
append hostname={{ server_vars['server_hostname'] }} {{ image_properties['image_kernel_options'] }} initrd={{ image_properties['image_initrd'] }} preseed/url={{ image_properties['image_preseeds'][server_vars['server_preseed_ks']]['url'] }} preseed/interactive=false netcfg/choose_interface={{ server_vars['server_default_interface'] }} netcfg/get_domain={{ server_vars['server_domain_name'] }} {{ server_vars['server_extra_options'] | default('') }}
{% endif %}

View File

@ -129,7 +129,7 @@
- name: Drop host network interfaces - name: Drop host network interfaces
template: template:
src: "pxe/{{ ansible_os_family | lower }}/mnaio-bridges.cfg.j2" src: "pxe/configs/{{ ansible_os_family | lower }}/mnaio-bridges.cfg.j2"
dest: /etc/network/interfaces.d/mnaio-bridges.cfg dest: /etc/network/interfaces.d/mnaio-bridges.cfg
mode: "0644" mode: "0644"
owner: root owner: root