1 ========== Introduction ==========
4 1. Get yourself a working Xen dom0 setup, eg according to
5 https://wiki.ubuntu.com/XenOnEdgy
6 2. Configure adtxenlvm:
7 - assign a fixed IP address for the host and the testbed
8 - create DNS entries (forward and reverse)
9 for the testbed hostname edgy.adt.<your.domain.here>
10 - read below about settings you might want to set
11 creating /etc/autopkgtest/xenlvm_adt_config if needed
13 4. adt-xenlvm-with-testbed
14 5. adt-xenlvm-on-testbed
16 In some more detail, there are four main programs provided:
18 adt-xenlvm-setup [<config settings>]
19 Creates the snapshot. Broadly speaking, does the following:
20 - deletes any existing snapshot, virtual machine, etc.
21 - creates a new lvm volume and filesystem for the snapshot base
22 - runs debootstrap to install a system into the new filesystem
23 - makes necessary config changes to the testbed and the host
24 - boots the testbed and waits for it to start
25 - freezes the testbed into a snapshot file
26 After this, you can run with-testbed.
28 adt-xenlvm-with-testbed [<config settings>] [<master> [<args...>]]
29 Starts the testbed and runs <master> _on the HOST_. When
30 <master> finishes, the testbed state will be discarded. While
31 <master> is running, you can interact with the testbed. If
32 <master> is not specified, you get an interactive shell.
34 adt-xenlvm-on-testbed [<config settings>] [<command and args>]
35 Runs <command and args> on the running testbed. A <master>
36 child of adt-xenlvm-with-testbed must be running, or the
37 behaviour is not defined. However, adt-xenlvm-on-testbed does
38 not need to be a descendent of adt-xenlvm-with-testbed.
39 The arguments <command and args> are passed to ssh verbatim
40 and are therefore subject to ssh's unpleasant mangling.
42 adt-xenlvm-cleanup [<config settings>]
43 Cleans up any running testbed state. This is not normally
44 needed, as adt-xenlvm-with-testbed and adt-xenlvm-setup run it
45 at appropriate moments. However, if one of these should fail
46 and it is desirable to reclaim any resources used by the
47 testbed, cleanup will do this job.
49 In each case [<config settings>] is zero or more arguments of the form
50 --<config-var>=<value>
51 where <config-var> is one of the configuration items listed below.
52 (On the command line, the configuration item name may be spelled with
53 either hyphens or underscores.) Also, `--' may be used to indicate the
54 end of the config vars.
56 Note that there is NO LOCKING. If you run more than one of either
57 adt-xenlvm-with-testbed or adt-xenlvm-setup (or one of each)
58 simultaneously, the behaviour is not defined, except that the host
59 will definitely not be trashed, and just two or more copies of
60 adt-xenlvm-with-testbed at once has no bad effects that
61 adt-xenlvm-cleanup won't fix.
64 ========== Configuration ==========
66 The configuration is read as follows:
67 1. set all variables whose defaults are fixed strings to
68 those built-in default values
69 2. process the command line arguments
70 3. read the user configuration file (sourced by bash)
71 this file must not use fds 10 onwards, which may have been used
72 for other purposes by other adtxenlvm machinery
73 4. process the command line arguments again, so they
74 can easily be made to override the user configuration file
75 5. calculate the values for variables which haven't been set
76 and whose default values depend on circumstances (including
79 ---------- Items which definitely need attention ----------
81 adt_guests_domain .<domain-of-host_hostname>
82 adt_guest_hostname <distro>.[<nominum>.]<domain>
83 adt_guest_ipaddr from looking hostname up in the DNS
84 Hostname and IP address for the testbed.
85 If the configuration specifies one of the address and hostname
86 but not the other, the missing information will be found with
87 a DNS lookup. If neither is specified, adt_guests_domain is
88 used; if it starts with `.' then <distro>.<nominum> is
89 prepended; otherwise just <distro>. is prepended. NOTE: some
90 effort by the local network administrator to allocate an IP
91 address (and ideally create DNS entries) is essential. It is
92 not possible to use DHCP for IP address allocation for the
95 ---------- Firewall policy items ----------
97 adt_fw_localmirrors <none>
98 List of IP addresses of local mirrors, to which the
99 testbed should allowed to make HTTP requests.
101 adt_fw_testbedclients <host_ipaddr>
102 List of IP addresses of hosts which will be allowed to make
103 connections into the testbed system.
105 adt_fw_prohibnets 192.168.0.0/24 172.16.0.0/12 10.0.0.0/8
106 List of network ranges with which the testbed will be
107 prohibited from communicating, notwithstanding
110 adt_fw_allowglobalports 80
111 List of ports to which the testbed will be allowed to make
112 outgoing connections.
114 adt_fw_hook <config> with _config replaced with _fwhook
115 or none of <config> doesn't end in _config
116 bash fragment to source during firewall setup
118 ---------- Items that are likely to need attention ----------
120 adt_kernel the booted kernel file /boot/xen*`uname -r`
121 Kernel to boot in the testbed image
123 adt_ramdisk <kernel>.initrd.img
124 Initial ramdisk to provide to the testbid image.
125 "none" means do not provide an initial ramdisk.
127 adt_modules /lib/modules/`uname -r`
128 Directory with modules to be copied into the testbed.
130 adt_lvm_vg the system's LVM volume group if there is only one
131 LVM volume group to create base filesystem image in.
133 adt_pbuilder_args <none>
134 Extra arguments to pass to pbuilder.
136 adt_lvm_erasebase yes
137 Whether the base filesystem image needs to be filled with
138 zeroes. If you are going to be using the image only locally
139 and so don't care whether the base image contains bits of
140 previous data from the disk, you may set this to `no'.
142 adt_debootstrap_includemore <empty>
143 adt_debootstrap_include libc6-xen,openssh-server,ed
144 Comma-separated lists of packages for --include option to
145 debootstrap. It is best to set includemore.
147 adt_debootstrap_components *
148 Components of the distribution to consider. (Eg, `main'.)
150 adt_debootstrap_mirrors <empty string>
151 adt_debootstrap_script <empty string>
152 Third and fourth arguments to debootstrap.
154 adt_setup_hook <config> with _config replaced with
155 _setuphook, as for adt_fw_hook
156 Program to run at last moment before we freeze the image.
157 Will be invoked with one argument: the directory containing
158 the root of the testbed. In the future more arguments may be
159 defined, so the hook script should not fail if more are
160 supplied. The supplied hook value will be split at
161 whitespace before execution as if
162 $adt_setup_hook /path/to/root
163 was run from within a shellscript.
165 ---------- Tuning parameters ----------
168 adt_fs_mkfs_args <none>
169 Filesystem type and any additional arguments to mkfs. If
170 _args contains whitespace, it results in multiple arguments;
171 it is not possible to pass whitespace-containing arguments to
174 adt_testbed_ram 256 [Mby]
175 Physical RAM allocated for each testbed instance while
176 creating and running.
178 adt_freeze_ram 32 [Mby]
179 Physical RAM size for frozen image; we reduce the testbed
180 to this before freezing it and grow it again when we resume
184 Size of base filesystem image. Should be big enough to
185 contain all of the software under test and all of its working
186 space, as no running testbed can ever use more than this
187 (despite copy-on-write).
190 Space to allocate for copy-on-write snapshot data. This is
191 the maximum amount of data that a running testbed can use.
192 This value should be less than the adt_fs_size.
194 adt_fs_cowchunk 8 [Mby]
195 Copy-on-write chunk size.
197 adt_vm_reduce_retries 10 [seconds]
198 Time to wait for VM to reduce its memory following
201 ---------- Configuration for advanced uses ----------
203 adt_config /etc/autopkgtest/xenlvm_<nominum>_conf
206 adt_ssh_privkey /root/.ssh/id_<ssh_keytype>_<nominum>
207 adt_ssh_pubkey <ssh_privkey>.pub
208 adt_ssh_keyident_args -i <ssh_privkey>
209 adt_ssh_keygen_args -t <ssh_keytype>
210 SSH keypair to use for authentication to the testbed.
211 If the pubkey file and privkey file do not exist and
212 correspond to each other, a new key will be generated.
213 The best combinations of these variables to set are:
214 keytype [& keygen_args] - just change the key type
215 privkey [& keygen_args] - generate/use a different keypair
216 pubkey, keyident_args - use an existing key via agent etc.,
217 privkey is ignored if pubkey and keyident_args
218 are set and pubkey file exists
221 Namespace prefix for Xen domains, LVM volumes, devmapper
222 devices, entries in /dev, files in /var, and so on. You may
223 run several instances of the adt virtualisation system with
224 different nominums and they won't interact. It is best for
225 this to be a legal DNS label (using alphanumerics and hyphens
226 only); normally it when it is used to construct an identifier
227 it will be separated by other parts by underscores `_', so
228 they should be avoided.
230 adt_guest_macaddr 00:16:3e:7c:aa:7f
231 adt_net_vifscript /etc/xen/scripts/vif-route-adt
233 adt_normaluser adtxenu
234 Create a normal user account of this name, with disabled
237 ---------- Items which should not usually need to be changed ----------
239 adt_host_hostname `hostname -f`
240 adt_host_ipaddr from looking hostname up in the DNS
241 Hostname and IP address for the host, ie the Xen dom0 system.
242 If the configuration specifies one of the address and hostname
243 but not the other, the missing information will be found with
244 a DNS lookup. Note that if the host system uses a dynamically
245 allocated DHCP address, things will go wrong when the address
248 adt_playbase /var/lib/autopkgtest/xenlvm
249 Base of filesystem playground areas.
251 adt_play <playbase>/<nominum>_<distro>
252 Playground area for this particular testbed construction and
255 adt_xmconfig <play>/xmconfig
256 Xen virtual machine creation configuration for xm create.
257 This file will be (over)written during testbed setup.
259 adt_lvm_baselv <nominum>_<distro>_base
260 adt_lvm_cowdatalv <nominum>_<distro>_cowdata
261 LVM volume for base filesystem image, and copy-on-write
262 buffer. Will be created during testbed setup, destroying any
263 previous volume if necessary. This is the logical volume name
264 not including /dev/<lvm_vg>.
266 adt_devmapper_cowdev <nominum>_<distro>_snap
267 devmapper device for copy-on-write image used by testbed when
268 running. This is the device name in the devmapper namespace,
269 ie not including /dev/mapper.
271 adt_fslink_dir adt-xenlvm
272 adt_fslink_name <nominum>_<distro>_fs
273 Directory in /dev, and filename in that directory, where the
274 scripts put the symlink used to trick Xen into using a
275 different block device on resume than was used for creation.
277 adt_xmname <nominum>_<distro>
278 Xen virtual machine name, as passed to xm create.