blob: 0d7c5673a94513c8b7cba93a4d6939b43261dab3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
#!/bin/bash
die() { echo "$@" ; exit 1 ; }
info() { echo " * $@" ; }
opt_openstack_instance=os1
opt_distro=fedora
opt_distro_version=20
function show_help()
{
cat <<EOHELP >&2
Usage: $0 OPTION
Script is aimed to help sysadmin.
Options:
--distro=NAME Distro name, like fedora
--distro-version=VERSION E.g. 20 for Fedora 20
--openstack-instance=ID
--name=NAME Name of the machine
EOHELP
test -n "$1" && exit "$1"
}
boot()
(
set -o pipefail
nova boot "$1" --poll \
--image "$2" \
--flavor "$3" \
--security-groups "$os_security_group" \
--key-name "$os_keypair" \
| grep "| id " | cut -d\| -f 3 | xargs -n 1
)
get_ip()
(
id="$1"
set -o pipefail
nova show "$id" | grep ' network ' \
| cut -d\| -f 3 | cut -d, -f2 | xargs -n 1
)
longopts="distro:,distro-version:,openstack-instance:,name:"
ARGS=$(getopt -o "" -l "help,$longopts" -n "$0" -- "$@") \
|| exit 1
eval set -- "$ARGS"
while true; do
case "$1" in
--distro|--distro-version|--openstack-instance|--name)
opt=$(sed -e 's/^--//' -e 's/[^[a-zA-Z0-9]/_/g'<<<"$1")
eval "opt_$opt=\"${2,,}\""
shift 2
;;
--help)
show_help 0
;;
--)
shift
break;
esac
done
. "@pkgdatadir@/parse_credsfile" "$opt_openstack_instance" || exit 1
. ./config/os/"$opt_openstack_instance.sh" || exit 1
image_version=$opt_distro$opt_distro_version
image=${os_image_ids[$image_version]}
flavor=${os_flavor_ids[$image_version]}
test -z "$image" && die "no image for '$image_version'"
test -z "$flavor" && die "no flavor for '$image_version'"
test -z "$opt_name" && opt_name="testing-$image"
info "booting machine $image_version from $image"
machine=$(boot "$opt_name" "$image" "$flavor")
info "machine id: $machine"
ip=$(get_ip "$machine")
info "ip: $ip"
|