Update snf-image-creator usage documentation
[snf-image-creator] / docs / usage.rst
1 Usage
2 =====
3
4 snf-image-creator comes in 2 variants:
5  * snf-image-creator: A non-interactive command line program
6  * snf-mkimage: A user-friendly dialog-based program
7
8 Non-interactive version
9 -----------------------
10
11 snf-image-creator receives the following options:
12
13 .. code-block:: console
14
15  $ snf-image-creator --help
16
17  Usage: snf-image-creator [options] <input_media>
18
19  Options:
20   --version             show program's version number and exit
21   -h, --help            show this help message and exit
22   -o FILE, --outfile=FILE
23                         dump image to FILE
24   -f, --force           overwrite output files if they exist
25   -s, --silent          silent mode, only output errors
26   -u FILENAME, --upload=FILENAME
27                         upload the image to pithos with name FILENAME
28   -r IMAGENAME, --register=IMAGENAME
29                         register the image with ~okeanos as IMAGENAME
30   -a ACCOUNT, --account=ACCOUNT
31                         Use this ACCOUNT when uploading/registering images
32                         [Default: None]
33   -m KEY=VALUE, --metadata=KEY=VALUE
34                         Add custom KEY=VALUE metadata to the image
35   -t TOKEN, --token=TOKEN
36                         Use this token when uploading/registering images
37                         [Default: None]
38   --print-sysprep       print the enabled and disabled system preparation
39                         operations for this input media
40   --enable-sysprep=SYSPREP
41                         run SYSPREP operation on the input media
42   --disable-sysprep=SYSPREP
43                         prevent SYSPREP operation from running on the input
44                         media
45   --no-sysprep          don't perform system preparation
46   --no-shrink           don't shrink any partition
47
48
49 Most input options are self-describing. If you want to save a local copy for
50 the image, you need to specify *-o* option. In order to upload the image to
51 pithos, you need to specify valid credentials with *-a* and *-t* options and a
52 filename using *-u* option. To also register the image with ~okeanos, specify a
53 name using the *-r* option.
54
55 By default snf-image-creator will run a number of system preparation tasks on
56 the snapshot of the media and will shrink the last partition found, before
57 extracting the image. Both can be disabled by specifying *--no-sysprep* and
58 *--no-shrink* respectively.
59
60 If *--print-sysprep* is defined, then snf-image-creator will not create an
61 image at all. It will only run the OS detection part and will output the system
62 preparation tasks that would and would not run on the image. This behavior is,
63 convenient because it allows you to see the available system preparation tasks
64 that you can enable or disable with *-{enable,disable}-sysprep* options when
65 you create a new image.
66
67 Running *snf-image-creator* with *--print-sysprep* on a raw file that hosts a
68 debian system, I get the following output:
69
70 .. code-block:: console
71
72    $ snf-image-creator --print-sysprep debian_desktop.img
73
74    snf-image-creator 0.1
75    =====================
76    Examining source media `debian_desktop.img'... looks like an image file
77    Snapshotting media source... done
78    Enabling recovery proc
79    Launching helper VM... done
80    Inspecting Operating System... found a(n) debian system
81    Mounting image... done
82    
83    Enabled system preparation operations:
84        cleanup-cache:
85         Remove all regular files under /var/cache
86    
87        cleanup-log:
88         Empty all files under /var/log
89    
90        cleanup-passwords:
91         Remove all passwords and lock all user accounts
92    
93        cleanup-tmp:
94         Remove all files under /tmp and /var/tmp
95    
96        cleanup-userdata:
97         Delete sensitive userdata
98    
99        fix-acpid:
100         Replace acpid powerdown action scripts to immediately shutdown the
101         system without checking if a GUI is running.
102    
103        remove-persistent-net-rules:
104         Remove udev rules that will keep network interface names persistent
105         after hardware changes and reboots. Those rules will be created again
106         the next time the image runs.
107    
108        remove-swap-entry:
109         Remove swap entry from /etc/fstab. If swap is the last partition
110         then the partition will be removed when shrinking is performed. If the
111         swap partition is not the last partition in the disk or if you are not
112         going to shrink the image you should probably disable this.
113    
114        use-persistent-block-device-names:
115         Scan fstab & grub configuration files and replace all non-persistent
116         device references with UUIDs.
117    
118    Disabled system preparation operations:
119        cleanup-mail:
120         Remove all files under /var/mail and /var/spool/mail
121    
122        remove-user-accounts:
123         Remove all user accounts with id greater than 1000
124    
125    
126    cleaning up...
127
128 If I want your images to also have all normal user accounts and all mail files
129 removed, you can create it specifying the *--enable-sysprep* option like this:
130
131 .. code-block:: console
132
133    $ snf-image-creator --enable-sysprep cleanup-mail,remove-user-accounts ...
134
135 Dialog-based version
136 --------------------
137
138
139 Creating a new image
140 --------------------
141
142 Suppose you want to create a new ubuntu server image. Download the installation
143 disk from the internet:
144
145 .. code-block:: console
146
147    $ wget http://ubuntureleases.tsl.gr/12.04.1/ubuntu-12.04.1-server-amd64.iso
148
149 Create a 2G sparce file to host the new system:
150
151 .. code-block:: console
152
153    $ truncate -s 2G ubuntu_hd.raw
154
155 And install the ubuntu system on this file:
156
157 .. code-block:: console
158
159    $ sudo kvm -boot d -drive file=ubuntu_hd.raw,format=raw,cache=none,if=virtio \
160      -cdrom ubuntu-12.04.1-server-amd64.iso
161
162 After this, become root, activate the virtual environment you have installed
163 snf-image-creator in, and use *snf-mkimage* to create and upload the image:
164
165 .. code-block:: console
166
167    $ sudo -s
168    $ source /path/to/snf-image-env/bin/activate
169    $ snf-mkimage ubuntu_hd.raw
170
171 In the first screen you will be asked to choose if you want to run the program
172 in *Wizand* or *Expert* mode. Choose *Wizard*.
173
174 .. image:: /snapshots/01_wizard.png
175
176 Then you will be asked to provide a name, a description, an ~okeanos account
177 and the token corresponding to this account. After that you will be asked to
178 confirm the provided data.
179
180 .. image:: /snapshots/06_confirm.png
181
182 Choosing *YES* will create the image and upload it to your ~okeanos account.
183