ReleaseEngineering/PuppetAgain/Base Images: Difference between revisions
No edit summary |
|||
Line 105: | Line 105: | ||
<pre> | <pre> | ||
cat >base-image-centos6.sh <<' | cat >base-image-centos6.sh <<'PASTE' | ||
[[paste it here]] | [[paste it here]] | ||
PASTE | |||
sh base-image-centos6.sh | sh base-image-centos6.sh | ||
</pre> | </pre> |
Revision as of 13:09, 27 August 2012
Base images are OS/hardware-specific. In some cases, we can leverage existing installers; in others, we must use snapshots of installed systems. In either case, the idea is to get a minimal system set up to run puppetize.sh, which will take care of getting a certificate and running puppet in a loop until it succeeds.
See Puppetization Process for how a base image becomes a running instance.
CentOS 6.2 with Kickstart
The bulk of a kickstart script is available in setup. Run 'make' to create the script. The top section will need a few site-specific modifications. Most of the action is in the %post section, which:
- looks for PUPPET_PASS on the kernel command line, and stores it in /root/deploypass
- installs minimal packages
- Using a possibly site-specific yum-repo location (under http://repos/repos/)
- installs puppetize.sh and sets it to run on boot.
The same script supports both i386 and x86_64 ISAs; the determining factor is the kernel used to run the installer.
Mac OS X 10.8 (Mountain Lion)
The current base image is built from installing 10.7 Lion via the recovery boot option (cmd + R) and then upgrading to 10.8 Mountain Lion through the App Store. You will need to log in to the apple developer site and redeem OS X Mountain Lion under your credentials
- Using a R5 Mac Mini, boot into OS X Lion Recovery mode
Hold down command + R during the boot process
- Once in recovery mode; launch the disk utility and remove any software raid configuration
- Erase all disks. This partitions and formats all disks
- Close disk utility and launch lion osx recovery from the menu
- Go get coffee and take a nap
- Once the recovery is complete, the system will reboot
At this point the system will have a fresh install of 10.7 OS X Lion
- walk through the setup screen and create a default user
- default user should be 'administrator' using the current releng root/admin password
- you can skip most of the screens such as apple account registration
- At the login screen, use the 'administrator' credentials that were entered earlier
- Launch the App store using your apple developer credentials
- Search 'os x mountain lion'
- Click download under OS X Mountain Lion
- Make sure to sign out of the app store once the download is complete
- Once the download is complete, launch the OS X Mountain Lion installer and proceed through the setup process
- Take another nap
- Once installed, the system will reboot
The system is now upgraded and running OS X 10.8 Mountain Lion
- At the login screen, use the 'administrator' credentials that were entered earlier
- Open System Preferences -> Sharing
- Disable:
- Remote Management
- Enable:
- Screen Sharing and Remote Login
- Disable:
- Open System Preferences -> Enery Saver
- Move Computer sleep slider to Never
- Move Disply sleep slider to Never
- Disable:
- put hard disks to sleep when possible
- Allow power button to put computer to sleep
- Enable:
- Wake for network access
- Start up automatically after power failure
The system is ready to be captured as an image
- Open System Preferences -> Startup Disk
- select DSR-1074 Network Disk, click Restart
- Confirm restart
- select DSR-1074 Network Disk, click Restart
This will reboot the system into the netboot image with the Deploy Studio runtime where Deploy Studio workflow will handle installing puppetize.sh and org.mozilla.puppetize.plist to be launched on first boot
CentOS 6.2 on Ganeti KVM
Installed image
Install a minimal config with CentOS-6.2 install media:
First, create a new OS type if necessary - add
IMAGE_NAME="centos-62" ARCH=x86_64 IMAGE_TYPE=dump CDINSTALL=no
to /etc/ganeti/instance-image/variants/centos-62.conf, and add it to /etc/ganeti/instance-image/variants.list.
Send it everywhere:
gnt-cluster copyfile /etc/ganeti/instance-image/variants/centos-62.conf gnt-cluster copyfile /etc/ganeti/instance-image/variants.list
modify your test VM to use this new image type:
gnt-instance modify -o image+centos-62 relabs-buildbot-master
and then start the install. I'm using a CD:
gnt-instance modify -H boot_order=cdrom,cdrom_image_path=/tmp/CentOS-6.2-x86_64-netinstall.iso relabs-buildbot-master gnt-instance reboot relabs-buildbot-master
A few hints: /dev/vda1 = boot, /dev/vda2 = swap, /dev/vda3 = root; use ext3/4; *no* LVM! Do a minimal install.
Halt this and dump it:
/usr/lib/ganeti/os/image/tools/make-dump relabs-buildbot-master
This is your installed image - it's just CentOS.
Base Image
Now, to create the base image that automatically puppetizes.
reinstall, to get the ganeti-instance-image networking, console, etc. set up
gnt-instance reinstall relabs-buildbot-master
On another system, run 'make' in the setup subdirectory of http://hg.mozilla.org/build/puppet, to get a copy of base-image-centos6.sh. Copy this and paste it into /root/base-image-centos6.sh on the destination machine:
cat >base-image-centos6.sh <<'PASTE' [[paste it here]] PASTE sh base-image-centos6.sh
After some action, and after asking for the deploy password, the system halts, ready to be imaged.
gnt-instance modify -o image+releng-base-centos-62 relabs-buildbot-master /usr/lib/ganeti/os/image/tools/make-dump relabs-buildbot-master