JETPrimer

From JetResources
Jump to: navigation, search

Introduction

The Sun Microsystems JumpStart Enterprise Toolkit is a suite of utilities that reduce the initial complexity of setting up a JumpStart environment by providing a framework to manage JumpStart target systems. The software started life as an internal project for Sun in the United Kingdom and quickly spread through the Sun field organisation. In 2002 the software was presented at the Sun Network conference in San Francisco and subsequently released AS IS to the world.

The toolkit is available from www.sun.com/downloads and is being included as part of the Sun N1 Provisioning Software suite.

Why Use a Framework ?

After most System Administrators try JumpStart, either from the manual or from a Solaris System Administration course (or from reading our JumpStartPrimer page!), they understand the possibilities of JumpStart but can also see the time investment required to get something operational and can also see many potential pit-falls around third-party and/or complex applications.

JET Background

The essence of the JET framework was to develop a modular environment where support for applications, or particular OS features, could be designed and added as needed. From a large number of years working with JumpStart solutions, the main authors of JET had been through the single monolithic finish script per client and had developed more modular approaches to JumpStart, mainly from a re-use perspective. When the JET project was started, this approach was taken as the basis of a new framework, aiming to be the tool for UK Sun field engineer use. With the dot-com boom in full swing, the time taken to install systems needed to reduce, and at the same time, the consistency and quality of the installs needed to increase.

Once the toolkit was in active use on customer sites, a number of other good reasons came to light - obviously subliminal requirements!

  • Better use of System Administrator's time
  • Repeatable builds for disaster recovery potential
  • Consistency across a server estate
  • Ability to quickly build test environments that match production systems
  • Embedded Sun best-practice

Installing the Toolkit

Once the toolkit has been downloaded from the Sun website, you'll be faced with a file, probably called 'jet.pkg.bz2' or the like. Just what is this thing ?

The FAQ has such an answer, but to save you a click or two, it's a compressed SVR4 package datastream.

# bunzip2 jet.pkg.bz2
# pkgadd -d jet.pkg

You might be familiar with the pkgadd -d command, where you specify the directory from which you wish to install the SVR4 packages. Using the magic that is pkgtrans(1m) you can place the packages into a single datastream file and then you pkgadd -d from the file. This single file format makes more sense from the web distribution mechanism, as Sun just needs to put a single file up than a directory. You can even use pkgtrans(1m) to transfer the datastream back to a directory based structure if you want, but we'll leave that as an exercise for the reader....

So, now you have the package installer open, you probably want to install the 'SUNWjet' and 'SUNWjetd' packages - the main toolkit and it's documentation package.

In older versions, the packages installed into /opt/jet; nowdays, they install into /opt/SUNWjet, so check which one you have and then you'll probably find it easier to add PATH=$PATH:/opt/SUNWjet/bin to the .profile file for the root user. From here on in, we are assuming that you have the JET bin directory in your path, so we don't have to use full paths to commands in the examples.

Solaris Media

By default (set in /opt/SUNWjet/etc/jumpstart.conf) Solaris media is located in /export/install/media on the JumpStart server. If you are adding JET to an existing JumpStart server, then you might like to change the jumpstart.conf file to reflect your own preference. Either way, make sure the directory exists and also make sure it is shared out through NFS in /etc/dfs/dfstab

share -F nfs -o ro,anon=0 -d "JumpStart Media" /export/install

You should probably also run shareall to make the NFS server re-read the dfstab file.

Next step is to pop in the Solaris CD (if you are using Solaris 8 or above and CD media, then ignore the 'Installation' CD at the front of the media pack; go straight for CD 1 of 2) or DVD into the JumpStart server and then you can run the JET command:

copy_solaris_media /cdrom/cdrom0

and while you are having a coffee or three, it will pull in the Solaris media to your chosen directory. At this point we must make it clear that too much coffee can make you irritable and a bit hyper-active. JumpStart does that to lowly System Administrators. If you can, arrange for this to be running while you go for a nice relaxing lunch somewhere instead. (Hint: it takes a while!)

For Solaris 8 and above from CD media, the first CD will eventually eject and you will be prompted to insert the second CD (that'll be the one that reads CD 2 of 2 !)

Finally, you'll be told that the Solaris media has been copied and that JET has kindly set up a 'tag' for you to refer to this media. If you have existing media, or you don't like the tag's JET uses, you can use the add_solaris_location command to define new tags and/or media.

Packages and Patches

For the sake of the primer, we are going to ignore patches and packages, but you need to create the following directories (or suitable replacements as defined in the jumpstart.conf file):

# mkdir -p /export/install/pkgs
# mkdir -p /export/install/patches

And then share them out through NFS - /etc/dfs/dfstab unless you did this earlier for Solaris media!

share -F nfs -o ro,anon=0 -d "JumpStart Media" /export/install

Setting up a JumpStart Client

So far, you've just been setting up the JumpStart server, which is pretty similar to traditional JumpStart; no great time savings or massive advantages yet discovered... Now we move to the setting up of Client's for JumpStart.

JET uses a concept of a single Template file to hold all the configuration settings for the particular client. This file is just a set of name/value pairs, and is actually just a Bourne shell script, so the usual rules of sh variables apply.

To create a new template for the client, we run the command

make_template <clientname> base_config

What this does (as it will tell you as output), is create a new template in /opt/SUNWjet/Templates/<clientname> and include the configuration information for base_config which is the standard Solaris configuration module. If we ommitted the base_config argument, it would create a template will all module options in it - just a bit too much for a primer example!

Once the template has been created, edit it with your editor of choice

# vi /opt/SUNWjet/Templates/<clientname>

For a minimal primer example, you need to fill in the following options:

base_config_ClientArch=
base_config_ClientEther=
base_config_ClientOS=

base_config_sysidcfg_ip_address=
base_config_sysidcfg_netmask=

base_config_profile_cluster=SUNWCreq
  • The ClientArch is probably sun4u; examples of possible options are listed just above the setting in the template
  • ClientEther is the MAC address of the client, format is aa:bb:cc:dd:ee:ff in HEX
  • ClientOS is the tag given to the Solaris image you installed; list_solaris_locations will tell you all possible tags
  • sysidcfg_ip_address is the IP address for the target system; auto-populated if the system is in /etc/hosts
  • sysidcfg_netmask is the netmask for the target system; auto-populated if the system is in /etc/hosts and the netmask in /etc/netmasks
  • profile_cluster is set to SUNWCreq to make this build really quick. Almost unuseable, but quick

Once this is configured, save the file and then run the command

# make_client <clientname>

This can be considered a wrapper around the JumpStart add_install_client command, and takes the contents of the client template and configures the JumpStart server accordingly.

!!! If you edit the client template you must always run make_client afterwards to propogate the changes !!!

With any luck you'll get a simple message that your client configuration has 'Passed' and not the large banner 'FAILED' message. If it does come up with the FAILED message, you should see some messages indicating why; normally NFS or missing directories.

You can now go to the target system and run the command

ok boot net - install

Errr, that's it; no faffing around with rules, profiles, sysidcfg files, finish scripts etc; one simple template file and then a make_client afterwards.

Further Configuration

Once you get the basic JET install to work, you can go back to the client template and look at the other options in base_config for configuring Solaris. In general, each setting is preceeded with an explanation of what it does. This means you get some idea of the setting, possibly some examples and then the setting itself. Have a good look and play with base_config before making life harder by adding other modules!

Adding a Module to a Template

By default, the SUNWjet package will also contain the 'custom' module for doing more ad-hoc scripting around JumpStart. To add these module options to your existing template from the first example, run the command

# make_template -f -T <clientname> <clientname> custom

This is probably the most illuminating JET command, as it is taking a starting template -T <clientname> and creating a new template <clientname> plus adding a new module custom. Hopefully you can see how you could have a number of pre-defined 'master' templates from which you then generate individual client templates. The 'master' templates hold all the main configuration options for that type of install but are no t necessarily actual systems.

A full list of available modules can be obtained by running the 'make_template' command with no arguments:

# make_template

Usage: /opt/SUNWjet/bin/make_template [-f] [-T <source template>] <client> [product] ...

In addition the following options may be useful when scripting
       [-A cpuarch]		- e.g. sun4u
       [-O osversion]		- e.g. 8_0701 - OS tag
       [-E ethernet]		- e.g. 08:00:20:ff:ff:ff
       [-M]			- Disables autopopulation of ip/ether from nsswitch

Installed products can be selected from the following list.

       base_config	(Always included anyway)
       custom
       sds

Once the template is revised, you can pull up the file in your editor and at the bottom you will see the custom_* options.

In the directory /opt/SUNWjet/Clients/<clientname> create a file called 'make_issue' with the contents:

#!/bin/sh
#
# Create a 'banner' /etc/issue message
#
banner `uname -n` > /etc/issue

In your client template, update the following setting:

custom_scripts="make_issue"

Rebuild the client configuration:

# make_client -f <clientname>

And finally, rebuild the client:

ok boot net - install

Once the system has built, you should find that the console login is preceeded with the name of the system in large 'banner' letters.

Conclusions

JET was designed to make the process of setting up and managing JumpStart servers as easy as possible; JumpStart still exists under the hood, but the complexity has been masked as much as possible.

If you already have an existing JumpStart server with detailled configurations, then moving to JET is probably of limited value. It does come in to it's own when you are starting from scratch or you need to do a major overhaul of a JumpStart environment.

--Marty 12:35, 22 January 2006 (GMT)