The only ways to provide iPXE scripts currently are the following:
1 - iPXE script URL
  • The downside to this is that the endpoint hosting the iPXE script must be public. This does not work for users that want to host the iPXE script somewhere private.
2 - Userdata
  • This works great and allows private deployments but the issue is when users want to also pass userdata content such as cloud config or bash scripts.
A third option should be available that lets the user provide the iPXE script content in base64 encoding similar to how it is done with the userdata method. This would be something like the following:
“ipxe_script” : “base64encodedipxecontentstring”
This would allow users to use private scripts and also freely use the userdata option for other automation scripts.