Skip to content
Snippets Groups Projects
usage.rst 14.93 KiB

Usage

snf-image-creator comes in 2 variants:

  • snf-mkimage: A non-interactive command line program
  • snf-image-creator: A user-friendly dialog-based program

Both expect the input media as first argument. The input media may be a local file, a block device or "/" if you want to create an image out of the running system (see host bundling operation).

Non-interactive version

snf-mkimage receives the following options:

$ snf-mkimage --help
Usage: snf-mkimage [options] <input_media>

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -o FILE, --outfile=FILE
                        dump image to FILE
  -f, --force           overwrite output files if they exist
  -s, --silent          output only errors
  -u FILENAME, --upload=FILENAME
                        upload the image to the cloud with name FILENAME
  -r IMAGENAME, --register=IMAGENAME
                        register the image with a cloud as IMAGENAME
  -m KEY=VALUE, --metadata=KEY=VALUE
                        add custom KEY=VALUE metadata to the image
  -t TOKEN, --token=TOKEN
                        use this authentication token when
                        uploading/registering images
  -a URL, --authentication-url=URL
                        use this authentication URL when uploading/registering
                        images
  -c CLOUD, --cloud=CLOUD
                        use this saved cloud account to authenticate against a
                        cloud when uploading/registering images
  --print-syspreps      print the enabled and disabled system preparation
                        operations for this input media
  --enable-sysprep=SYSPREP
                        run SYSPREP operation on the input media
  --disable-sysprep=SYSPREP
                        prevent SYSPREP operation from running on the input
                        media
  --print-sysprep-params
                        print the needed sysprep parameters for this input
                        media
  --sysprep-param=SYSPREP_PARAMS
                        Add KEY=VALUE system preparation parameter
  --no-sysprep          don't perform any system preparation operation
  --no-shrink           don't shrink any partition
  --public              register image with the cloud as public
  --tmpdir=DIR          create large temporary image files under DIR

Most input options are self-describing. If you want to save a local copy of the image you create, provide a filename using the -o option. To upload the image to the storage service of a cloud, provide valid cloud API access info (by either using a token and a URL with -t and -a respectively, or a cloud name with -c) and a remote filename using -u. If you also want to register the image with the compute service of the cloud, in addition to -u provide a registration name using -r. All images are registered as private. Only the user that registers the image can create VM's out of it. If you want the image to be visible by other user too, use the --public option.

By default, before extracting the image, snf-mkimage will perform a number of system preparation operations on the snapshot of the media and will shrink the last partition found. Both actions can be disabled by specifying --no-sysprep and --no-shrink respectively.

If --print-sysprep is defined, the program will exit after printing a list of enabled and disabled system preparation operation applicable to this input media. The user can enable or disable specific syspreps, using -{enable,disable}-sysprep options. The user may specify those options multiple times.

Running snf-mkimage with --print-sysprep on a raw file that hosts a debian system, we print the following output:

$ snf-mkimage --print-syspreps ubuntu.raw
snf-image-creator 0.6
=====================
Examining source media `ubuntu_hd.raw' ... looks like an image file
Snapshotting media source ... done
Enabling recovery proc
Launching helper VM (may take a while) ... done
Inspecting Operating System ... ubuntu
Mounting the media read-only ... done
Collecting image metadata ... done
Umounting the media ... done

Enabled system preparation operations:
    cleanup-cache:
        Remove all regular files under /var/cache

    cleanup-log:
        Empty all files under /var/log

    cleanup-passwords:
        Remove all passwords and lock all user accounts

    cleanup-tmp:
        Remove all files under /tmp and /var/tmp

    cleanup-userdata:
        Delete sensitive userdata

    fix-acpid:
        Replace acpid powerdown action scripts to immediately shutdown the
        system without checking if a GUI is running.

    remove-persistent-net-rules:
        Remove udev rules that will keep network interface names persistent
        after hardware changes and reboots. Those rules will be created again
        the next time the image runs.

    remove-swap-entry:
        Remove swap entry from /etc/fstab. If swap is the last partition
        then the partition will be removed when shrinking is performed. If the
        swap partition is not the last partition in the disk or if you are not
        going to shrink the image you should probably disable this.

    use-persistent-block-device-names:
        Scan fstab & grub configuration files and replace all non-persistent
        device references with UUIDs.

Disabled system preparation operations:
    cleanup-mail:
        Remove all files under /var/mail and /var/spool/mail

    remove-user-accounts:
        Remove all user accounts with id greater than 1000


cleaning up ...

If you want the image to have all normal user accounts and all mail files removed, you should use --enable-sysprep option like this:

$ snf-mkimage --enable-sysprep cleanup-mail --enable-sysprep remove-user-accounts ...

Dialog-based version

snf-image-creator receives the following options:

$ snf-image-creator --help
Usage: snf-image-creator [options] [<input_media>]

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -l FILE, --logfile=FILE
                        log all messages to FILE
  --tmpdir=DIR          create large temporary image files under DIR

If the input media is not specified in the command line, in the first dialog box the user will be asked to specify it:

/snapshots/select_media.png

The user can select a file (regular or block device) or use the Bundle Host button to create an image out of the running system (see Host bundling operation).

After the input media is examined and the program is initialized, the user will be given the choice to run snf-image-creator in wizard or expert mode.

Wizard mode

When snf-image-creator runs in wizard mode, the user is just asked to provide the following basic information:

  • Cloud: The cloud account to use to upload and register the resulting image
  • Name: A short name for the image (ex. "Slackware")
  • Description: An one-line description for the image (ex. "Slackware Linux 14.0 with KDE")
  • Registration Type: Private or Public

After confirming, the image will be extracted, uploaded to the storage service and registered with the compute service of the selected cloud. The user will also be given the choice to keep a local copy of it.

For most users the functionality this mode provides should be sufficient.

Expert mode

Expert mode allows the user to have better control on the image creation process. The main menu can be seen in the picture below:

/snapshots/main_menu.png

In the Customize sub-menu the user can control:

  • The system preparation operations that will be applied on the media
  • Whether the image will be shrunk or not
  • The properties associated with the image
  • The configuration tasks that will run during image deployment

In the Register sub-menu the user can provide:

  • Which cloud account to use
  • A filename for the uploaded diskdump image
  • A name for the image to use when registering it with the storage service of the cloud, as well as the registration type (private or public)

By choosing the Extract menu entry, the user can dump the image to the local file system. Finally, if the user selects Reset, the system will ignore all changes made so far and will start the image creation process again.

Host bundling operation

As a new feature in v0.2, snf-image-creator can create images out of the host system that runs the program. This is done either by specifying / as input media or by using the Bundle Host button in the media selection dialog of snf-mkimage. During this operation, the files of the disk are copied into a temporary image file, which means that the file system that will host the temporary image needs to have a lot of free space (see large temporary files for more information).

Creating a new image

Suppose your host system is a Debian Wheezy and you want to create a new Ubuntu server image. Download the installation disk from the Internet:

$ wget http://ubuntureleases.tsl.gr/12.04.2/ubuntu-12.04.2-server-amd64.iso

Verify that it has been downloaded correctly:

$ echo 'a8c667e871f48f3a662f3fbf1c3ddb17  ubuntu-12.04.2-server-amd64.iso' > check.md5
$ md5sum -c check.md5

Create a 2G sparse file to host the new system:

$ truncate -s 2G ubuntu.raw

And install the Ubuntu system on this file: