ReleaseEngineering/PuppetAgain/Base Images: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(undo move)
No edit summary
Line 3: Line 3:
See [[ReleaseEngineering/PuppetAgain/Puppetization Process|Puppetization Process]] for how a base image becomes a running instance.
See [[ReleaseEngineering/PuppetAgain/Puppetization Process|Puppetization Process]] for how a base image becomes a running instance.


== CentOS 6.2 on Ganeti KVM ==
= CentOS 6.2 with Kickstart =
 
The bulk of a kickstart script is available in [http://hg.mozilla.org/build/puppet/file/default/setup/ 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 <tt><nowiki>http://repos/repos/</nowiki></tt>)
* installs [http://hg.mozilla.org/build/puppet/file/default/setup/puppetize.sh 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) =
 
''details from Jake''
 
= CentOS 6.2 on Ganeti KVM =
== Installed image ==
Install a minimal config with CentOS-6.2 install media:
Install a minimal config with CentOS-6.2 install media:


Line 26: Line 41:
  /usr/lib/ganeti/os/image/tools/make-dump relabs-buildbot-master
  /usr/lib/ganeti/os/image/tools/make-dump relabs-buildbot-master


:'''saved in kvm-relabs as image+centos-62'''
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
reinstall, to get the ganeti-instance-image networking, console, etc. set up
Line 44: Line 63:
  gnt-instance modify -o image+releng-base-centos-62 relabs-buildbot-master
  gnt-instance modify -o image+releng-base-centos-62 relabs-buildbot-master
  /usr/lib/ganeti/os/image/tools/make-dump relabs-buildbot-master
  /usr/lib/ganeti/os/image/tools/make-dump relabs-buildbot-master
:'''saved in kvm-relabs as image+releng-base-centos-62'''
== CentOS 6 with Kickstart ==
The bulk of a kickstart script is available in [http://hg.mozilla.org/build/puppet/file/default/setup/centos6-kickstart.cfg centos6-kickstart.cfg].  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
** Uses a possibly site-specific yum-repo location (under <tt><nowiki>http://repos/repos/</nowiki></tt>)
* installs [http://hg.mozilla.org/build/puppet/file/default/setup/puppetize.sh puppetize.sh] and sets it to run on boot.

Revision as of 14:53, 31 July 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)

details from Jake

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 <<EOF
[[paste it here]]
EOF
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