Merge "Replace pxelinux with iPXE support in MNAIO"
This commit is contained in:
commit
007371b35c
@ -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)
|
||||||
----------------
|
----------------
|
||||||
|
@ -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
|
||||||
|
@ -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:
|
||||||
|
@ -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 %}
|
||||||
|
@ -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:
|
||||||
|
@ -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
|
||||||
|
@ -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"
|
|
||||||
|
@ -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 }}
|
@ -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 }}
|
@ -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 }}
|
@ -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 }}
|
@ -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 }}
|
61
multi-node-aio/playbooks/pxe/tftp/boot.ipxe.j2
Normal file
61
multi-node-aio/playbooks/pxe/tftp/boot.ipxe.j2
Normal 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
|
10
multi-node-aio/playbooks/pxe/tftp/boot.ipxe.macaddr.j2
Normal file
10
multi-node-aio/playbooks/pxe/tftp/boot.ipxe.macaddr.j2
Normal 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
|
@ -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
|
|
@ -1,5 +0,0 @@
|
|||||||
path boot-screens
|
|
||||||
include boot-screens/menu.cfg
|
|
||||||
default boot-screens/vesamenu.c32
|
|
||||||
prompt 0
|
|
||||||
timeout 100
|
|
@ -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 %}
|
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user