| #!ipxe | |
| echo Amazon EC2 ${product} - iPXE boot via user-data | |
| echo CPU: ${buildarch} ${cpuvendor} ${cpumodel} | |
| ifstat || | |
| set attempt:int8 1 | |
| :dhcp_retry | |
| echo DHCP attempt ${attempt} | |
| dhcp --timeout 5000 && goto dhcp_ok || | |
| ifstat || | |
| inc attempt | |
| iseq ${attempt} 10 || goto dhcp_retry | |
| :dhcp_fail | |
| echo DHCP failed - rebooting | |
| reboot || | |
| exit | |
| :dhcp_ok | |
| route || | |
| # Fetch session token | |
| params --method PUT | |
| param --header X-Aws-Ec2-Metadata-Token-Ttl-Seconds 600 | |
| imgset authtoken http://169.254.169.254/latest/api/token##params || | |
| # Fetch user-data | |
| params | |
| isset ${authtoken} && param --header X-Aws-Ec2-Metadata-Token ${authtoken} || | |
| kernel http://169.254.169.254/latest/user-data##params || | |
| imgstat || | |
| # Boot from user-data | |
| boot -ar || | |
| # Show diagnostic information on failure | |
| imgstat || | |
| ifstat || | |
| exit |