Ubuntu Enterprise Cloud Rapid/Reliable Provisioning

Registered by Dustin Kirkland  on 2010-04-29

Mathias, Scott, Thierry, and I have each implemented out own pxe/tftp/mirror automated network installation infrastructure for rapidly deploying UEC in our own test environments at home, as well as in the Lab.

These components are actually well known, and well supported in Ubuntu Server. We think we could/should provide this as a set of packages that could be installed as another UEC serve (possibly even on the same machine as the CLC).

A UEC nearly always involves installing >1 system, and in some cases, many times >1. We could help UEC users by setting up for them a system that:
 * runs tftpd-hpa
 * has a good /var/lib/tftpboot/ directory serving an Ubuntu netboot installation
 * has an Ubuntu mirror (or apt proxy), is kept in sync, or at least has the released ISO mounted, and served over http to the local network
 * optionally runs a pxe and dhcpd server (if we ran our own DHCP, we could make some of the UEC installer questions, like pick-an-ip-range a lot simpler by choosing safe values automatically)
 * has a small web front end that initiates the deployment of one or more UEC components on one or more systems on the local network

Using this setup, the user could:
 * rapidly deploy UEC components
 * pxe/netboot UEC servers
 * pxe/netboot even UEC instances

Is this worth providing to the Ubuntu community more generally, or should me/mathias/scott/thierry/etc just keep it to ourselves?

See the linked branches for each of our similar, alpha-quality implementations of this.

Blueprint information

Status:
Started
Approver:
Jos Boumans
Priority:
Medium
Drafter:
Dustin Kirkland 
Direction:
Approved
Assignee:
None
Definition:
Approved
Series goal:
Accepted for maverick
Implementation:
Good progress
Milestone target:
milestone icon maverick-alpha-3
Started by
Dustin Kirkland  on 2010-05-20

Whiteboard

Status:
Documentation at http://help.ubuntu.com/community/UEC/Provisioning, packaging underway at lp:uec-provisioning

Complexity:
[ccheney] maverick-alpha-3: 3
[kirkland] maverick-alpha-3: 1

Roadmap Notes:
Provisioning items should be completed by the platform sprint, or dropped for Maverick

Work items for maverick-alpha-3:
[kirkland] create project/team/branch: DONE
[kirkland] create a base set of packaging: DONE
[kirkland] Converge mathiaz/ttx/kirkland/smoser code to a single project/branch: POSTPONED
[ccheney] learn how uec provisioning scripts work: DONE
[ccheney] learn how seeding packages work: DONE
[ccheney] complete and test the packaging of uec-provisioning-common: DONE
[ccheney] complete and test the packaging of uec-provisioning-dhcpd: POSTPONED
[ccheney] complete and test the packaging of uec-provisioning-mirror: DONE
[ccheney] complete and test the packaging of uec-provisioning-tftpd: DONE
[ccheney] complete and test the packaging of uec-provisioning-webui: DONE
[ccheney] update the wiki docs to match the new packaging: POSTPONED
[ccheney] Improve web app front end for triggering installation (some basic branding images): POSTPONED

Work items for maverick-alpha-2:
Document in wiki deployment of current provisioning implementation (dd-wrt): DONE
Document in wiki deployment of current provisioning implementation (mirror): DONE
Document in wiki deployment of current provisioning implementation (pxe): DONE
Document in wiki deployment of current provisioning implementation (tftp): DONE
Document in wiki deployment of current provisioning implementation (wakeonlan): DONE
Document in wiki deployment of current provisioning implementation (web frontend): DONE
Document in wiki deployment of current provisioning implementation (pre-seed configurator): DONE

===========================================
NOTES FROM UDS

Review cobbler:
 - package in ubuntu
 - provide UEC components templates

== Code ==
See the linked branches for each of our similar, alpha-quality implementations of this:
 * lp:uec-testing-scripts <--- generates pre-seeds
 * lp:~mathiaz/+junk/install-srv
 * lp:~kirkland/+junk/uec-auto
 * lp:~ttx/+junk/boot-uec

== Design ==
 * Create a general metapackage, "ubuntu-network-installation"
  * dnsmasq (serves: tftp, dhcp optionally)
   * if you opt out of using the dhcp options here, you'll need to update your DHCP server accordingly
  * gpxe (with http support) -- gpxe is the next evolution of the etherboot project
  * syslinux (need newer than 3.70)
  * apache2 (to serve the cgi)
   * use uec-testing-scripts python/cgi to select and serve kernel, initrd, preseed
   * create python/cgi script as an interface triggering install
    * would be nice to poll for install status
  * Recommend powerwake (to use WoL to trigger the install)
  * Suggest apt-mirror|apt-proxy|mvo-squid-proxy package, if user wants a local mirror
   * Otherwise, give a config option to point to the admin's preferred mirror
 * Create another package, "uec-preseeds"
  * preseed templates for UEC components
 * Use Cobbler instead?
  * would need to be packaged
  * current state of cobbler: unknown
  * ubuntu support?
  * Soren has tried to get it packaged previously
   * packaging it is a hassle
   * difficult to package due to a different view of the FHS
   * Mathias and Scott volunteer to package Cobbler :-)

(?)

Work Items