136 define_opt guest_disk /dev/vda |
136 define_opt guest_disk /dev/vda |
137 define_opt hostname $opt_name |
137 define_opt hostname $opt_name |
138 define_opt bridge br-lan |
138 define_opt bridge br-lan |
139 define_opt dns_domain paivola.fi |
139 define_opt dns_domain paivola.fi |
140 define_opt ip |
140 define_opt ip |
|
141 define_opt puppet |
141 |
142 |
142 log_info "Processing ${#@} parameters:" |
143 log_info "Processing ${#@} parameters:" |
143 for param in "$@"; do |
144 for param in "$@"; do |
144 name=${param%=*} |
145 name=${param%=*} |
145 value=${param##*=} |
146 value=${param##*=} |
178 # LVM lv to use |
178 # LVM lv to use |
179 DISK_NAME=$opt_disk_lv |
179 DISK_NAME=$opt_disk_lv |
180 |
180 |
181 # Path to disk block device |
181 # Path to disk block device |
182 DISK_PATH=/dev/mapper/${DISK_VG}-${DISK_NAME} |
182 DISK_PATH=/dev/mapper/${DISK_VG}-${DISK_NAME} |
183 DISK_BUS=$opt_disk_bus |
183 GUEST_DISK_BUS=$opt_disk_bus |
|
184 |
|
185 ### Preseed content |
184 GUEST_DISK=$opt_guest_disk |
186 GUEST_DISK=$opt_guest_disk |
185 |
187 |
186 ## Network |
188 ## Network |
187 # Network configuration, for /etc/network/interfaces |
189 # Network configuration, for /etc/network/interfaces |
188 NET_DOMAIN=paivola.fi |
190 NET_DOMAIN=paivola.fi |
219 |
221 |
220 if [ $UID -eq 0 ]; then |
222 if [ $UID -eq 0 ]; then |
221 log_debug "Get user password from shadow: $user" |
223 log_debug "Get user password from shadow: $user" |
222 getent_user_attr $user shadow 2 |
224 getent_user_attr $user shadow 2 |
223 else |
225 else |
224 echo -n "Install target login ($user) " >&2 |
226 echo -n "Install target login ($USER_NAME) " >&2 |
225 mkpasswd -m sha-512 |
227 mkpasswd -m sha-512 |
226 fi |
228 fi |
227 } |
229 } |
228 |
230 |
229 # XXX: hardcoded |
231 # XXX: hardcoded |
230 USER_CREATE='true' |
232 USER_CREATE='true' |
231 USER_NAME=$USER |
233 USER_NAME=$USER |
232 USER_FULLNAME=$(user_fullname $USER_NAME) |
234 USER_FULLNAME=$(user_fullname $USER) |
233 USER_SHADOW=$(user_shadow $USER_NAME) |
235 USER_SHADOW=$(user_shadow $USER) |
234 USER_GROUPS=(cdrom sudo adm) |
236 USER_GROUPS=( cdrom sudo adm ) |
235 |
237 |
236 |
238 ## Misc |
|
239 PACKAGE_INCLUDES=( sudo screen vim ) |
|
240 PRESEED_LATE_COMMANDS=( ) |
|
241 PRESEED_INCLUDES=( 'passwords.cfg' 'host.cfg' ) |
|
242 |
|
243 if [ $opt_puppet ]; then |
|
244 log_info "Puppetizing preseed" |
|
245 |
|
246 PUPPET_PACKAGES=( puppet ) |
|
247 PUPPET_COMMANDS=( \ |
|
248 "in-target sed -i 's/START=no/START=yes/' /etc/default/puppet" \ |
|
249 ) |
|
250 |
|
251 PACKAGE_INCLUDES=( ${PACKAGE_INCLUDES[@]} ${PUPPET_PACKAGES[@]} ) |
|
252 PRESEED_LATE_COMMANDS=( ${PRESEED_LATE_COMMANDS[@]:-} ${PUPPET_COMMANDS[@]} ) |
|
253 fi |
|
254 |
|
255 # full commands |
|
256 PRESEED_LATE_COMMAND=$(IFS=$'; \\\n\t' echo "${PRESEED_LATE_COMMANDS[@]}") |
237 |
257 |
238 ### Installer setup |
258 ### Installer setup |
239 ## Installation image |
259 ## Installation image |
240 # Original Debian Installer image (iso) |
260 # Original Debian Installer image (iso) |
241 INSTALLER_NAME="debian-6.0.3-amd64" |
261 INSTALLER_NAME="debian-6.0.3-amd64" |
248 |
268 |
249 # Customized image content |
269 # Customized image content |
250 INSTALL_TREE="images/${INSTALL_NAME}" |
270 INSTALL_TREE="images/${INSTALL_NAME}" |
251 INSTALL_ISO="iso-out/${INSTALL_NAME}.iso" |
271 INSTALL_ISO="iso-out/${INSTALL_NAME}.iso" |
252 |
272 |
|
273 |
253 ## Preseed files |
274 ## Preseed files |
254 # Preseed output file in install tree |
275 # Preseed output file in install tree |
255 PRESEED_NAME="preseed.cfg" |
276 PRESEED_NAME="preseed.cfg" |
256 |
277 |
257 # Preseed source template |
278 # Directory containing our source templates |
258 PRESEED_TEMPLATE="preseed/${PRESEED_NAME}" |
279 PRESEED_SOURCE_DIR="preseed" |
|
280 |
|
281 # Prefix for target files in install tree |
|
282 # XXX: not implemented |
|
283 #PRESEED_TARGET_PREFIX="" |
|
284 |
|
285 # Main preseed source template |
|
286 PRESEED_TEMPLATE="${PRESEED_SOURCE_DIR}/${PRESEED_NAME}" |
|
287 |
|
288 # Target path for preseed in install tree |
259 PRESEED_FILE="${INSTALL_TREE}/${PRESEED_NAME}" |
289 PRESEED_FILE="${INSTALL_TREE}/${PRESEED_NAME}" |
260 PRESEED_ISOLINUX="preseed/isolinux.cfg" |
290 |
261 PRESEED_INCLUDES=("preseed/passwords.cfg" "preseed/host.cfg") |
291 # Checksum of target preseed.cfg |
262 PRESEED_CHECKSUM= # set later |
292 PRESEED_CHECKSUM= # set later |
263 |
293 |
|
294 # Additional files to copy |
|
295 PRESEED_INCLUDE_FILES=( $(for preseed in ${PRESEED_INCLUDES[@]}; do echo "${PRESEED_SOURCE_DIR}/${preseed}"; done) ) |
|
296 #PRESEED_INCLUDE_FILES=("preseed/passwords.cfg" "preseed/host.cfg") |
|
297 |
|
298 # preseed.cfg 'includes' line |
|
299 PRESEED_INCLUDE=${PRESEED_INCLUDES[@]} |
|
300 |
|
301 |
|
302 ## Isolinux |
|
303 # Source for install tree isolinux file |
|
304 PRESEED_ISOLINUX="${PRESEED_SOURCE_DIR}/isolinux.cfg" |
|
305 |
|
306 # XXX: automagics? :) |
|
307 # virt-install assumes we have an X $DISPLAY if given --vnc |
|
308 # but we also want to enable the serial console... |
|
309 # d-i automagically configures the serial boot/login console, but only if the installer is run under serial... |
|
310 # we want to have both :( |
|
311 if [ $DISPLAY ]; then |
|
312 INSTALL_BOOT_CONSOLE="" |
|
313 else |
|
314 INSTALL_BOOT_CONSOLE="console=ttyS0" |
|
315 fi |
|
316 |
264 # installer boot args |
317 # installer boot args |
265 INSTALL_BOOT_ARGS="auto=true priority=critical preseed/file=/cdrom/${PRESEED_NAME} preseed/file/checksum=${PRESEED_CHECKSUM} -- quiet console=ttyS0" |
318 INSTALL_BOOT_ARGS="auto=true priority=critical preseed/file=/cdrom/${PRESEED_NAME} preseed/file/checksum=${PRESEED_CHECKSUM} -- quiet ${INSTALL_BOOT_CONSOLE}" |
266 |
319 |
267 |
320 |
268 |
321 |
269 ### External progs |
322 ### External progs |
270 ## Bootable .iso for Debian isolinux-based installer CDs |
323 ## Bootable .iso for Debian isolinux-based installer CDs |
425 --connect $LIBVIRT \ |
478 --connect $LIBVIRT \ |
426 --name $GUEST_NAME \ |
479 --name $GUEST_NAME \ |
427 --ram $(expand_MB $GUEST_RAM) --vcpus $GUEST_VCPUS \ |
480 --ram $(expand_MB $GUEST_RAM) --vcpus $GUEST_VCPUS \ |
428 --cdrom "$INSTALL_ISO" \ |
481 --cdrom "$INSTALL_ISO" \ |
429 --os-variant $GUEST_OS_VARIANT \ |
482 --os-variant $GUEST_OS_VARIANT \ |
430 --disk path=$DISK_PATH,bus=$DISK_BUS \ |
483 --disk path=$DISK_PATH,bus=$GUEST_DISK_BUS \ |
431 --network bridge:$NET_BRIDGE \ |
484 --network bridge:$NET_BRIDGE \ |
432 --vnc \ |
485 --vnc \ |
433 --virt-type $LIBVIRT_TYPE \ |
486 --virt-type $LIBVIRT_TYPE \ |
434 --accelerate --hvm \ |
487 --accelerate --hvm \ |
435 --serial pty |
488 --serial pty |