[ipxe-devel] Thoughts about an enterprise use for iPXE

Robin Smidsrød robin at smidsrod.no
Fri Mar 14 12:31:16 UTC 2014


Hi Andrew,

I think you should have a look at both PuppetLabs Razor and the new
stuff related to boot.rackspace.com (code on github) by fellow iPXE user
"antonym". If he's listening in, he might give you some more details on
the project and its goals.

-- Robin

On 21.02.2014 20:29, Andrew "Arthur" Summers wrote:
> Team,
> 
> 
> I have an idea and potential enterprise use case for iPXE that I wanted
> to share with you. I debated sending this via my corporate email so it
> would stand out a little more in your inbox, but I thought that should
> this idea be viable enough to become something bigger, it would
> potentially be considered intellectual property of my company from a
> legal standpoint. However, let’s just say that I work for a VERY big
> company (I’ll narrow it down a little and say it’s in the Fortune Top 5).
> 
> 
> As I’m sure you’re aware, no enterprise datacenter uses DHCP for its
> systems. What’s more, even if DHCP is used for backend interfaces, this
> becomes a problem when NATs and subnets are part of the picture. Even
> more frustrating is the fact that reconfiguring a system or attaching an
> ISO to an iLO or a VM usually requires involving a different team,
> filling out a form, logging hours, and jumping through a dozen or so
> hoops. Further, performing a zero-touch install generally requires
> creating a preseeded image for every target, and these generally aren’t
> as tiny as an iPXE ISO.
> 
> 
> Enter iPXE. My thought is that this little gem could be used as a
> “software iLO” of sorts to give control over a system’s boot process by
> using some simple dynamic scripts and backend configuration data.
> Instead of preseeding a full image for a system and needing to remove it
> after the system is installed, a system could be configured with the
> tiny iPXE ISO permanently attached. The only preseeding needed would be
> static IP information. Let me walk you through a potential boot process:
> 
> 
> CLIENT SYSTEM/VM
> 
> - iPXE ISO
> 
> - Preseeded with static IP config
> 
> - Basic script pointing to repo (if unreachable, boot from HDD)
> 
>  |              /\
> 
> \/              |
> 
> boot      return config, preseed, boot media
> 
>  |              /\
> 
> \/              |
> 
> REPO SERVER
> 
> - PHP to provide client-specific dynamic config
> 
> - Boot media (via sanboot/TFTP/etc depending on system)
> 
> - Database with preseed and iPXE script info for each client
> 
>     - First boot or system marked for reimaging?
> 
>         - Return config information and script to perform fresh install
> 
>         - Update record in DB to allow regular boot
> 
>     - Not first boot or marked for reimaging?
> 
>         - Return script instructing boot from local media
> 
> 
> When the client boots, iPXE loads, configures static IP information, and
> reaches out to the repository. If the repository is unavailable for some
> reason, iPXE continues to boot from local media. Otherwise, the
> repository looks at its database for config information for the client.
> If this is the first request from the client or it has been marked for
> reimaging, the configuration data is dynamically returned to the client,
> the database is updated to allow the client to boot from local media on
> subsequent boots, and the client boots appropriately. If the client has
> previously made a request or is not marked for reimaging, the repository
> simpy dynamically returns a script instructing iPXE to boot the client
> from local media.
> 
> 
> There are obviously a few components that need to be built to allow all
> of this to work:
> 
>   * Some sort of management console (web based?) for entering/updating
>     client information
>       o Would be great if AD integration were possible with role
>         separation (role for changing configs, role for marking systems
>         for reimaging, audit role, etc)
>   * Database to store client information (perhaps paired with something
>     like OpenStack/SaltStack?)
>       o Flexible options for backend integration (SQL Server, MySQL, etc)
>   * PHP backend to serve dynamic configuration info to iPXE requests
>   * Tool to generate iPXE ISOs with preseeded static IP information
>       o Looked at ROM-o-Matic
>       o Would ideally allow the creation of multiple ISOs based on a CSV
>         or a feed from the DB
>       o Web-based? Would need to be platform-agnostic
>   * iPXE currently doesn’t recognize Hyper-V vNICs unless a legacy
>     adapter is used
> 
> I’ll admit that I’m no developer, but I’m no stranger to code, either.
> Let me know what your thoughts are, and if there’s any way I can assist,
> I’d be more than willing to do so.
> 
> 
> Regards,
> 
> 
> Andrew "Arthur" Summers
> 
> 
> 
> 
> _______________________________________________
> ipxe-devel mailing list
> ipxe-devel at lists.ipxe.org
> https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel
> 




More information about the ipxe-devel mailing list