98 |
98 |
99 # forget them |
99 # forget them |
100 shift $(( $OPTIND - 1 )) |
100 shift $(( $OPTIND - 1 )) |
101 |
101 |
102 ## Command-line arguments |
102 ## Command-line arguments |
103 log_info "Processing ${#@} arguments" |
103 # Name |
|
104 [ -z $1 ] && die "Machine name must be given as first argument" |
|
105 |
|
106 opt_name="$1"; shift |
|
107 |
|
108 # Defaults |
|
109 function define_opt () { |
|
110 local name=$1 |
|
111 local value=${2:-} |
|
112 |
|
113 log_debugf "%-20s = %s" $name "$value" |
|
114 eval "opt_${name}=${value}" |
|
115 } |
|
116 |
|
117 function resolve_name () { |
|
118 local name=$1 |
|
119 local out=$(dig +short $name) |
|
120 |
|
121 [ -z "$out" ] && die "Hostname lookup failed: $name" |
|
122 |
|
123 echo $out |
|
124 } |
|
125 |
|
126 define_opt ram 1G |
|
127 define_opt cpus 2 |
|
128 define_opt os debiansqueeze |
|
129 define_opt disk_size 10G |
|
130 define_opt disk_vg pvl |
|
131 define_opt disk_lv $opt_name |
|
132 define_opt disk_bus virtio |
|
133 define_opt guest_disk /dev/vda |
|
134 define_opt hostname $opt_name |
|
135 define_opt bridge br-lan |
|
136 define_opt dns_domain paivola.fi |
|
137 define_opt ip $(resolve_name ${opt_name}.${opt_dns_domain}) |
|
138 |
|
139 log_info "Processing ${#@} parameters:" |
104 for param in "$@"; do |
140 for param in "$@"; do |
105 name=${param%=*} |
141 name=${param%=*} |
106 value=${param##*=} |
142 value=${param##*=} |
107 |
143 |
108 # evaluate |
144 # evaluate |
109 value=$(expand_line "$value") |
145 value=$(expand_line "$value") |
110 |
146 |
111 log_debug " $name = $value" |
147 define_opt ${name} "${value}" |
112 |
|
113 eval "opt_${name}=${value}" |
|
114 done |
148 done |
115 |
149 |
116 ### State |
150 ### State |
117 ## Guest info |
151 ## Guest info |
118 GUEST_NAME=$opt_name |
152 GUEST_NAME=$opt_name |
119 |
153 |
120 # Basic params |
154 # Basic params |
121 GUEST_RAM=${opt_ram:-1G} |
155 GUEST_RAM=$opt_ram |
122 GUEST_VCPUS=${opt_cpus:-2} |
156 GUEST_VCPUS=$opt_cpus |
123 |
157 |
124 # OS variant (for virt-install) |
158 # OS variant (for virt-install) |
125 GUEST_OS_VARIANT=${opt_os:-debiansqueeze} |
159 GUEST_OS_VARIANT=$opt_os |
126 |
160 |
127 ## Disk |
161 ## Disk |
128 # Size of LV to create |
162 # Size of LV to create |
129 DISK_SIZE=${opt_disk_size:-10G} |
163 DISK_SIZE=$opt_disk_size |
130 |
164 |
131 # LVM vg to use |
165 # LVM vg to use |
132 DISK_VG=${opt_disk_vg:-pvl} |
166 DISK_VG=$opt_disk_vg |
133 |
167 |
134 # LVM lv to use |
168 # LVM lv to use |
135 DISK_NAME=${opt_disk_lv:-${GUEST_NAME}} |
169 DISK_NAME=$opt_disk_lv |
136 |
170 |
137 # Path to disk block device |
171 # Path to disk block device |
138 DISK_PATH=/dev/mapper/${DISK_VG}-${DISK_NAME} |
172 DISK_PATH=/dev/mapper/${DISK_VG}-${DISK_NAME} |
139 DISK_BUS=${opt_disk_bus:-virtio} |
173 DISK_BUS=$opt_disk_bus |
140 GUEST_DISK=${opt_guest_disk:-/dev/vda} |
174 GUEST_DISK=$opt_guest_disk |
141 |
175 |
142 ## Network |
176 ## Network |
143 NET_HOSTNAME=${opt_hostname:-${GUEST_NAME}} |
177 NET_HOSTNAME=$opt_hostname |
144 NET_BRIDGE=${opt_bridge:-br-lan} |
178 NET_BRIDGE=$opt_bridge |
145 NET_IPADDR=${opt_ip:-194.197.235.36} |
179 NET_IPADDR=$opt_ip |
146 |
180 |
147 ## Installation image |
181 ## Installation image |
148 # Original Debian Installer image (iso) |
182 # Original Debian Installer image (iso) |
149 INSTALLER_NAME="debian-6.0.3-amd64" |
183 INSTALLER_NAME="debian-6.0.3-amd64" |
150 INSTALLER_ISO="iso-in/${INSTALLER_NAME}-netinst.iso" |
184 INSTALLER_ISO="iso-in/${INSTALLER_NAME}-netinst.iso" |