commit
02bcb091f7
3 changed files with 117 additions and 0 deletions
@ -0,0 +1,73 @@
|
||||
--- |
||||
# TODO: for now we take the PXE environment for granted, so won't install and configure DHCP and TFTP servers; that should become another block defaulting not to be processed |
||||
- name: update the SmartOS platform image on the PXE server |
||||
hosts: |
||||
- pxe_server |
||||
gather_facts: no |
||||
vars: |
||||
notification_recipient: tamas@gerczei.eu |
||||
smarthost: mail |
||||
tftp_dir: /data/tftproot |
||||
image_dir: "{{ tftp_dir }}/smartos" |
||||
tftp_user: tftp |
||||
tftp_group: tftp |
||||
download: false # prior download |
||||
tasks: |
||||
|
||||
- name: fetch platform image |
||||
get_url: |
||||
src: https://us-east.manta.joyent.com/Joyent_Dev/public/SmartOS/platform-latest.tgz # no Manta at eu-ams-1 |
||||
dest: /var/tmp/ |
||||
when: download |
||||
|
||||
- name: obtain provided platform image |
||||
copy: |
||||
src: /var/tmp/platform-latest.tgz |
||||
dest: /tmp/ |
||||
remote_src: yes |
||||
register: tarball |
||||
|
||||
- name: process new tarball |
||||
block: |
||||
|
||||
- name: extract new platform image |
||||
unarchive: |
||||
src: /tmp/platform-latest.tgz |
||||
dest: "{{ image_dir }}" |
||||
extra_opts: |
||||
- --transform |
||||
- 's/^platform-//;s/i86pc/platform\/i86pc/' |
||||
remote_src: yes |
||||
owner: "{{ tftp_user }}" |
||||
group: "{{ tftp_group }}" |
||||
become: yes |
||||
|
||||
- name: find images |
||||
find: |
||||
paths: "{{ image_dir }}" |
||||
file_type: directory |
||||
register: found_images |
||||
|
||||
- name: determine latest release |
||||
set_fact: |
||||
last_release: "{{ ( found_images.files | sort(attribute='mtime',reverse=true) | first )['path'] | basename }}" |
||||
|
||||
- name: generate iPXE configuration |
||||
template: |
||||
src: smartos_ipxe.j2 |
||||
dest: "{{ tftp_dir }}/smartos.ipxe" |
||||
owner: "{{ tftp_user }}" |
||||
group: "{{ tftp_group }}" |
||||
backup: yes |
||||
become: yes |
||||
|
||||
- name: send e-mail notification |
||||
mail: |
||||
host: "{{ smarthost }}" |
||||
from: "Raspi Root <noreply@fejezd.be>" |
||||
to: "{{ notification_recipient }}" |
||||
subject: "SmartOS update ({{ last_release }}) available" |
||||
body: "created {{ image_dir }}/{{ last_release }} and {{ tftp_dir }}/smartos.ipxe" |
||||
|
||||
when: tarball|changed |
||||
|
@ -0,0 +1,43 @@
|
||||
#!ipxe |
||||
# courtesy of MerlinDMC, slightly modified by tgerczei |
||||
# {{ ansible_managed }} |
||||
|
||||
set smartos-build {{ last_release }} |
||||
|
||||
:start |
||||
menu Welcome to iPXE's Boot Menu |
||||
item |
||||
item --gap -- ------------------------- Operating systems ------------------------------ |
||||
item smartos Boot SmartOS (${smartos-build}) |
||||
item smartos_noimport Boot SmartOS (${smartos-build}) noimport |
||||
item --gap -- ------------------------------ Utilities --------------------------------- |
||||
item shell Enter iPXE shell |
||||
item reboot Reboot |
||||
item |
||||
item exit Exit (boot local disk) |
||||
choose --default smartos --timeout 5000 target && goto ${target} |
||||
|
||||
:shell |
||||
echo Type exit to get the back to the menu |
||||
shell |
||||
set menu-timeout 0 |
||||
goto start |
||||
|
||||
:reboot |
||||
reboot |
||||
|
||||
:exit |
||||
exit |
||||
|
||||
:smartos |
||||
kernel /smartos/${smartos-build}/platform/i86pc/kernel/amd64/unix -B console=text,smartos=true |
||||
initrd /smartos/${smartos-build}/platform/i86pc/amd64/boot_archive |
||||
boot |
||||
goto start |
||||
|
||||
:smartos_noimport |
||||
kernel /smartos/${smartos-build}/platform/i86pc/kernel/amd64/unix -B console=text,smartos=true,noimport=true |
||||
initrd /smartos/${smartos-build}/platform/i86pc/amd64/boot_archive |
||||
boot |
||||
goto start |
||||
|
Loading…
Reference in new issue