tools/adt-setup-vm: Avoid debconf prompts during dist-upgrade
[autopkgtest/autopkgtest.git] / ssh-setup / SKELETON
1 #!/bin/sh
2 # Skeleton for an adt-virt-ssh setup script that configures a testbed.
3 # See man adt-virt-ssh for details.
4
5 set -e
6
7 # add testbed capabilities here (possibly dynamically), see
8 # doc/README.virtualisation-server.rst
9 CAPABILITIES='isolation-machine'
10
11 SUDO_PASSWORD=''
12
13 # create a testbed (if necessary), configure ssh, copy ssh key into it,
14 # configure sudo, etc.; print a list of "key=value" parameters to stdout on
15 # success
16 # required: login, hostname
17 # optional: identity, password, port, options, capabilities, extraopts
18 # see adt-virt-ssh(1) for details
19 open() {
20     cat<<EOF
21 login=<username>
22 hostname=<host>
23 capabilities=$CAPABILITIES
24 identity=$HOME/.ssh/id_rsa
25 extraopts="<additional args to pass to the script with other commands>"
26 EOF
27     if [ -n "$SUDO_PASSWORD" ]; then
28         echo "password=$SUDO_PASSWORD"
29     fi
30 }
31
32 # called when closing the testbed; should revert/remove things installed in
33 # open() if the testbed is not ephemeral
34 cleanup() {
35     exit 0
36 }
37
38 # Called for reverting the testbed. This can optionally output some or all of
39 # the ssh config keys from open() to update the configuration.
40 # This only needs to be implemented if CAPABILITIES offers "revert".
41 revert() {
42     echo "revert not implemented" >&2
43     exit 1
44
45     # calling these two is a common method, but there might be a more efficient
46     # way like snapshots
47     # cleanup
48     # open
49 }
50
51 # only needs to handle this if CAPABILITIES offers "reboot"
52 reboot() {
53     echo "reboot not implemented" >&2
54     exit 1
55 }
56
57 case "$1" in
58     open)
59         open $@;;
60     cleanup)
61         cleanup $@;;
62     revert)
63         revert $@;;
64     reboot)
65         reboot $@;;
66     '')
67         echo "Needs to be called with command as first argument" >&2
68         exit 1
69         ;;
70     *)
71         echo "invalid command $1" >&2
72         exit 1
73         ;;
74 esac