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:
|
||||
``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)
|
||||
----------------
|
||||
|
@ -43,12 +43,14 @@ ansible-playbook -vv \
|
||||
-e default_ubuntu_kernel=${DEFAULT_KERNEL:-"linux-image-generic"} \
|
||||
-e default_ubuntu_mirror_hostname=${DEFAULT_MIRROR_HOSTNAME:-"archive.ubuntu.com"} \
|
||||
-e default_ubuntu_mirror_directory=${DEFAULT_MIRROR_DIR:-"/ubuntu"} \
|
||||
-e cinder_vm_server_ram=${CINDER_VM_SERVER_RAM-"2048"} \
|
||||
-e compute_vm_server_ram=${COMPUTE_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 logging_vm_server_ram=${LOGGING_VM_SERVER_RAM-"1024"} \
|
||||
-e swift_vm_server_ram=${SWIFT_VM_SERVER_RAM-"1024"} \
|
||||
-e container_tech=${CONTAINER_TECH-"lxc"}\
|
||||
-e cinder_vm_server_ram=${CINDER_VM_SERVER_RAM:-"2048"} \
|
||||
-e compute_vm_server_ram=${COMPUTE_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 logging_vm_server_ram=${LOGGING_VM_SERVER_RAM:-"1024"} \
|
||||
-e swift_vm_server_ram=${SWIFT_VM_SERVER_RAM:-"1024"} \
|
||||
-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 \
|
||||
playbooks/site.yml
|
||||
|
@ -45,15 +45,13 @@
|
||||
mode: "0755"
|
||||
with_items:
|
||||
- /var/www/pxe
|
||||
- /var/www/pxe/configs
|
||||
- /var/www/pxe/images
|
||||
- /var/www/pxe/iso
|
||||
- /var/www/pxe/networking
|
||||
- /var/www/pxe/scripts
|
||||
- /var/www/pxe/templates
|
||||
- /var/lib/tftpboot
|
||||
- /var/lib/tftpboot/boot-screens
|
||||
- /var/lib/tftpboot/preseed
|
||||
- /var/lib/tftpboot/pxelinux.cfg
|
||||
- /var/lib/tftpboot/ipxe
|
||||
|
||||
- name: Get root public key
|
||||
command: cat /root/.ssh/id_rsa.pub
|
||||
@ -89,82 +87,23 @@
|
||||
notify:
|
||||
- restart tftp-hpa
|
||||
|
||||
- name: Download image iso(s)
|
||||
- name: Download iPXE
|
||||
get_url:
|
||||
url: "{{ item.value.image_iso_url }}"
|
||||
dest: "/var/www/pxe/iso/{{ item.value.image_name }}"
|
||||
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 }}"
|
||||
url: "{{ ipxe_kernel_url }}"
|
||||
dest: "/var/lib/tftpboot/ipxe.lkrn"
|
||||
tmp_dest: /tmp/
|
||||
|
||||
- name: Remove image directory if it exists
|
||||
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
|
||||
- name: Drop ipxe default menu
|
||||
template:
|
||||
src: "pxe/tftp/menu.cfg.j2"
|
||||
dest: /var/lib/tftpboot/boot-screens/menu.cfg
|
||||
src: "pxe/tftp/boot.ipxe.j2"
|
||||
dest: "/var/lib/tftpboot/boot.ipxe"
|
||||
mode: "0644"
|
||||
owner: root
|
||||
group: root
|
||||
tags:
|
||||
- boot-menu
|
||||
|
||||
- name: network scripts for pxe
|
||||
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 }}
|
||||
mode: "0644"
|
||||
owner: root
|
||||
@ -182,7 +121,7 @@
|
||||
|
||||
- name: network scripts for an MNAIO
|
||||
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 }}
|
||||
mode: "0644"
|
||||
owner: root
|
||||
@ -199,7 +138,7 @@
|
||||
|
||||
- name: network scripts for servers
|
||||
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
|
||||
mode: "0644"
|
||||
owner: root
|
||||
@ -208,8 +147,8 @@
|
||||
|
||||
- name: tftp configs for servers
|
||||
template:
|
||||
src: "pxe/tftp/pxelinux.cfg.macaddr.j2"
|
||||
dest: "/var/lib/tftpboot/pxelinux.cfg/01-{{ hostvars[item]['server_mac_address'] | replace(':', '-') | lower }}"
|
||||
src: "pxe/tftp/boot.ipxe.macaddr.j2"
|
||||
dest: "/var/lib/tftpboot/ipxe/{{ hostvars[item]['server_mac_address'] | replace(':', '-') | lower }}"
|
||||
mode: "0644"
|
||||
owner: root
|
||||
group: root
|
||||
@ -217,8 +156,8 @@
|
||||
|
||||
- name: Preseeds for pxe mnaio
|
||||
template:
|
||||
src: "pxe/{{ ansible_os_family | lower }}/mnaio.preseed.j2"
|
||||
dest: /var/lib/tftpboot/preseed/mnaio.preseed
|
||||
src: "pxe/configs/{{ ansible_os_family | lower }}/mnaio.config.j2"
|
||||
dest: /var/www/pxe/configs/mnaio.config
|
||||
mode: "0644"
|
||||
owner: root
|
||||
group: root
|
||||
@ -226,8 +165,8 @@
|
||||
|
||||
- name: Preseeds for pxe vm
|
||||
template:
|
||||
src: "pxe/{{ ansible_os_family | lower }}/vm.preseed.j2"
|
||||
dest: /var/lib/tftpboot/preseed/vm.preseed
|
||||
src: "pxe/configs/{{ ansible_os_family | lower }}/vm.config.j2"
|
||||
dest: /var/www/pxe/configs/vm.config
|
||||
mode: "0644"
|
||||
owner: root
|
||||
group: root
|
||||
@ -235,8 +174,8 @@
|
||||
|
||||
- name: Preseeds for pxe vm-compute
|
||||
template:
|
||||
src: "pxe/{{ ansible_os_family | lower }}/vm-compute.preseed.j2"
|
||||
dest: /var/lib/tftpboot/preseed/vm-compute.preseed
|
||||
src: "pxe/configs/{{ ansible_os_family | lower }}/vm-compute.config.j2"
|
||||
dest: /var/www/pxe/configs/vm-compute.config
|
||||
mode: "0644"
|
||||
owner: root
|
||||
group: root
|
||||
@ -244,8 +183,8 @@
|
||||
|
||||
- name: Preseeds for pxe compute
|
||||
template:
|
||||
src: "pxe/{{ ansible_os_family | lower }}/compute.preseed.j2"
|
||||
dest: /var/lib/tftpboot/preseed/compute.preseed
|
||||
src: "pxe/configs/{{ ansible_os_family | lower }}/compute.config.j2"
|
||||
dest: /var/www/pxe/configs/compute.config
|
||||
mode: "0644"
|
||||
owner: root
|
||||
group: root
|
||||
@ -253,32 +192,13 @@
|
||||
|
||||
- name: Preseeds for pxe infra
|
||||
template:
|
||||
src: "pxe/{{ ansible_os_family | lower }}/infra.preseed.j2"
|
||||
dest: /var/lib/tftpboot/preseed/infra.preseed
|
||||
src: "pxe/configs/{{ ansible_os_family | lower }}/infra.config.j2"
|
||||
dest: /var/www/pxe/configs/infra.config
|
||||
mode: "0644"
|
||||
owner: root
|
||||
group: root
|
||||
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
|
||||
shell: |
|
||||
# Fix perms if needed
|
||||
@ -286,16 +206,6 @@
|
||||
find /var/lib/tftpboot -type f -exec chmod 0644 {} \;
|
||||
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({}) }}"
|
||||
|
||||
handlers:
|
||||
|
@ -12,26 +12,30 @@ shared-network all-networks {
|
||||
option routers {{ dhcp.gateway }};
|
||||
option domain-name-servers {{ dhcp.dns }};
|
||||
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 }};
|
||||
{% else %}
|
||||
{% else %}
|
||||
default-lease-time {{ dhcp_default_lease_time }};
|
||||
{% endif %}
|
||||
{% if dhcp.max_lease_time is defined and dhcp.max_lease_time > 0 %}
|
||||
{% endif %}
|
||||
{% if dhcp.max_lease_time is defined and dhcp.max_lease_time > 0 %}
|
||||
max-lease-time {{ dhcp.max_lease_time }};
|
||||
{% else %}
|
||||
{% else %}
|
||||
max-lease-time {{ dhcp_max_lease_time }};
|
||||
{% endif %}
|
||||
{% if dhcp.tftp_server is defined and dhcp.tftp_server|ipaddr %}
|
||||
{% endif %}
|
||||
{% if dhcp.tftp_server is defined and dhcp.tftp_server|ipaddr %}
|
||||
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 }};
|
||||
{% endif %}
|
||||
{% if dhcp.tftp_boot_path is defined and dhcp.tftp_boot_path|ipaddr %}
|
||||
filename "{{ dhcp.tftp_boot_path }}";
|
||||
{% elif tftp_boot_path is defined and tftp_boot_path|length > 0 %}
|
||||
filename "{{ tftp_boot_path }}";
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
if exists user-class and ( option user-class = "iPXE" ) {
|
||||
{% if dhcp.ipxe_boot_file is defined and dhcp.ipxe_boot_file|ipaddr %}
|
||||
filename "{{ dhcp.ipxe_boot_file }}";
|
||||
{% elif ipxe_boot_file is defined and ipxe_boot_file|length > 0 %}
|
||||
filename "{{ ipxe_boot_file }}";
|
||||
{% endif %}
|
||||
} else {
|
||||
filename "ipxe.lkrn";
|
||||
}
|
||||
}
|
||||
|
||||
{% 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_directory: /ubuntu
|
||||
|
||||
ipxe_kernel_url: "{{ ipxe_kernel_url | default('http://boot.ipxe.org/ipxe.lkrn') }}"
|
||||
|
||||
# IP address, or domain name of the TFTP server
|
||||
tftp_server: "{{ hostvars[groups['pxe_hosts'][0]]['ansible_host'] | default(ansible_host) }}"
|
||||
# tftp_ssh_key: '' # user defined ssh key, used to access the host
|
||||
@ -32,57 +34,51 @@ tftp_port: 69
|
||||
# Default ISO images
|
||||
images:
|
||||
ubuntu-16.04-amd64:
|
||||
image_type: debian
|
||||
image_iso_url: "http://releases.ubuntu.com/16.04.2/ubuntu-16.04.2-server-amd64.iso"
|
||||
image_name: "ubuntu-16.04.2-server-amd64.iso"
|
||||
image_short_name: "ubuntu-16.04.2-server-amd64"
|
||||
image_default_boot: "ubuntu-16.04.2-server-amd64/amd64/boot-screens/menu.cfg"
|
||||
image_type: "debian"
|
||||
image_os: "ubuntu"
|
||||
image-version: "xenial"
|
||||
image_kernel_options: "biosdevname=0 net.ifnames=0 auto=true priority=critical"
|
||||
image_kernel: "ubuntu-16.04.2-server-amd64/amd64/linux"
|
||||
image_initrd: "ubuntu-16.04.2-server-amd64/amd64/initrd.gz"
|
||||
image_netboot: "ubuntu-16.04.2-server-amd64/install/netboot/ubuntu-installer"
|
||||
image_preseeds:
|
||||
image_netboot_kernel_url: "http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux"
|
||||
image_netboot_initrd_url: "http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz"
|
||||
image_configs:
|
||||
mnaio:
|
||||
url: "tftp://{{ tftp_server }}/preseed/mnaio.preseed"
|
||||
template_name: "mnaio.preseed"
|
||||
url: "http://{{ tftp_server }}/configs/mnaio.config"
|
||||
template_name: "mnaio.config"
|
||||
vm:
|
||||
url: "tftp://{{ tftp_server }}/preseed/vm.preseed"
|
||||
template_name: "vm.preseed"
|
||||
url: "http://{{ tftp_server }}/configs/vm.config"
|
||||
template_name: "vm.config"
|
||||
vm-compute:
|
||||
url: "tftp://{{ tftp_server }}/preseed/vm-compute.preseed"
|
||||
template_name: "vm-compute.preseed"
|
||||
url: "http://{{ tftp_server }}/configs/vm-compute.config"
|
||||
template_name: "vm-compute.config"
|
||||
compute:
|
||||
url: "tftp://{{ tftp_server }}/preseed/compute.preseed"
|
||||
template_name: "compute.preseed"
|
||||
url: "http://{{ tftp_server }}/configs/compute.config"
|
||||
template_name: "compute.config"
|
||||
infra:
|
||||
url: "tftp://{{ tftp_server }}/preseed/infra.preseed"
|
||||
template_name: "infra.preseed"
|
||||
url: "http://{{ tftp_server }}/configs/infra.config"
|
||||
template_name: "infra.config"
|
||||
ubuntu-14.04-amd64:
|
||||
image_type: debian
|
||||
image_iso_url: "http://releases.ubuntu.com/14.04.5/ubuntu-14.04.5-server-amd64.iso"
|
||||
image_name: "ubuntu-14.04.5-server-amd64.iso"
|
||||
image_short_name: "ubuntu-14.04.5-server-amd64"
|
||||
image_default_boot: "ubuntu-14.04.5-server-amd64/amd64/boot-screens/menu.cfg"
|
||||
image_type: "debian"
|
||||
image_os: "ubuntu"
|
||||
image_version: "trusty"
|
||||
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_initrd: "ubuntu-14.04.5-server-amd64/amd64/initrd.gz"
|
||||
image_netboot: "ubuntu-14.04.5-server-amd64/install/netboot/ubuntu-installer"
|
||||
image_preseeds:
|
||||
image_netboot_kernel_url: "http://archive.ubuntu.com/ubuntu/dists/trusty/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux"
|
||||
image_netboot_initrd_url: "http://archive.ubuntu.com/ubuntu/dists/trusty/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz"
|
||||
image_configs:
|
||||
mnaio:
|
||||
url: "tftp://{{ tftp_server }}/preseed/mnaio.preseed"
|
||||
template_name: "mnaio.preseed"
|
||||
url: "http://{{ tftp_server }}/configs/mnaio.config"
|
||||
template_name: "mnaio.config"
|
||||
vm:
|
||||
url: "tftp://{{ tftp_server }}/preseed/vm.preseed"
|
||||
template_name: "vm.preseed"
|
||||
url: "http://{{ tftp_server }}/configs/vm.config"
|
||||
template_name: "vm.config"
|
||||
vm-compute:
|
||||
url: "tftp://{{ tftp_server }}/preseed/vm-compute.preseed"
|
||||
template_name: "vm-compute.preseed"
|
||||
url: "http://{{ tftp_server }}/configs/vm-compute.config"
|
||||
template_name: "vm-compute.config"
|
||||
compute:
|
||||
url: "tftp://{{ tftp_server }}/preseed/compute.preseed"
|
||||
template_name: "compute.preseed"
|
||||
url: "http://{{ tftp_server }}/configs/compute.config"
|
||||
template_name: "compute.config"
|
||||
infra:
|
||||
url: "tftp://{{ tftp_server }}/preseed/infra.preseed"
|
||||
template_name: "infra.preseed"
|
||||
url: "http://{{ tftp_server }}/configs/infra.config"
|
||||
template_name: "infra.config"
|
||||
# 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.
|
||||
mnaio_host_networks:
|
||||
|
@ -13,8 +13,7 @@
|
||||
|
||||
dhcp_default_lease_time: 21600 # Default 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
|
||||
dhcp_list:
|
||||
- netmask: 255.255.255.0 # Netmask
|
||||
@ -23,6 +22,6 @@ dhcp_list:
|
||||
subnet: 10.0.2.0 # Subnet mask
|
||||
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
|
||||
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
|
||||
dhcp_default_domain_name: openstackci.local
|
||||
|
@ -11,6 +11,4 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
pxelinux_url: "https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz"
|
||||
pxelinux_name: "syslinux-6.03.tar.gz"
|
||||
pxelinux_short_name: "syslinux-6.03"
|
||||
ipxe_ubuntu_version: "1.0.0+git-20150424.a25a16d-1ubuntu1.2"
|
||||
|
@ -34,11 +34,6 @@ d-i netcfg/wireless_wep string
|
||||
d-i preseed/early_command string \
|
||||
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
|
||||
# kernel is to be installed.
|
||||
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 \
|
||||
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
|
||||
# kernel is to be installed.
|
||||
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 \
|
||||
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
|
||||
# kernel is to be installed.
|
||||
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 \
|
||||
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
|
||||
# kernel is to be installed.
|
||||
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 \
|
||||
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
|
||||
# kernel is to be installed.
|
||||
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
|
||||
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
|
||||
mode: "0644"
|
||||
owner: root
|
||||
|
Loading…
Reference in New Issue
Block a user