diff options
author | Dieter Plaetinck <dieter@plaetinck.be> | 2009-03-29 18:16:42 +0200 |
---|---|---|
committer | Dieter Plaetinck <dieter@plaetinck.be> | 2009-03-29 18:16:42 +0200 |
commit | ef2290b0e31c285267bba9dde3634b628df0ebf0 (patch) | |
tree | de627bb47c87f535ad7eea5d7b3da9bc2cbef3c7 /src/core/procedures/automatic | |
parent | 71f5510aaaa20ae5ae9c773dca12028bd96aafdf (diff) | |
parent | ff1bc0cd6060d0a23911f1ef25633f706a9af619 (diff) |
Merge branch 'experimental'2009.03.29
Diffstat (limited to 'src/core/procedures/automatic')
-rw-r--r-- | src/core/procedures/automatic | 116 |
1 files changed, 55 insertions, 61 deletions
diff --git a/src/core/procedures/automatic b/src/core/procedures/automatic index 3c93167..b0e327a 100644 --- a/src/core/procedures/automatic +++ b/src/core/procedures/automatic @@ -1,24 +1,32 @@ #!/bin/bash -# This procedure is EARLY in development!! # This is a procedure for automatic deployment/installation/configuration of systems. # TODO: document! (readme, notes about deployment profiles, examples, ...) +# check /usr/share/aif/examples for some example config files. +# This procedure can easily replace the old quickinst script if you look at the "generic install" config file +# Look at the base procedure to see the phases and which workers they'll execute. +# It should be: +# phase_preparation=(configure intro sysprep select_source runtime_network runtime_repositories runtime_packages) +# phase_basics=(set_clock prepare_disks) +# phase_system=(package_list install_packages auto_fstab auto_networkTODO auto_locale auto_keymap_font configure_system mkinitcpio locales install_bootloader) +# phase_finish=(msg_report) # In theory, the only manual thing should maybe be configuring the runtime network and putting the configfile in place # TODO: I don't know if you can do non-interactive dm_crypt stuff.. maybe by pulling luks keyfiles from svn/git/..? +# TODO: for worker_configure_system, we probably want the user to specify hostname, root pass etc. +# TODO: implement setting hostname, keymap, consolefont, network settings +# for a list of recognized variables, see examples/generic-install-on-sda depend_procedure core base var_OPTS_STRING="c:" -var_ARGS_USAGE="-c <config>: Specify a configfile (profile) to be used (optional)" #if we need some settings that we're missing, we'll ask for them - -phase_preparation+=(runtime_settings) -phase_preparation+=(msg_automatic) # this can happen probably a bit earlier.. -phase_preparation+=(fetch_configs) +var_ARGS_USAGE="-c <config>: Specify a configfile (profile) to be used" +var_AUTOMATIC_PROFILE="" +# TODO: if the user does aif -p automatic -c, then $1 is ":-" ??? if you do -c <something> then it's ok. process_args () { if [ "$1" = '-c' ] then [ -z "$2" ] && die_error "You must specify a config" - source $2 || die_error "Could not source config $2" + var_AUTOMATIC_PROFILE=$2 else usage exit 5 @@ -28,69 +36,51 @@ process_args () worker_intro () { - notify "Automatic procedure running..." + notify "Automatic procedure running profile $var_AUTOMATIC_PROFILE ..." } worker_configure () { var_UI_TYPE=${arg_ui_type:-cli} + [ -z "$var_AUTOMATIC_PROFILE" ] && die_error "You must specify a config file to use this procedure" + source $var_AUTOMATIC_PROFILE || die_error "Could not source config $var_AUTOMATIC_PROFILE" + # Check mandatory options + [ -z "$PARTITIONS" ] && die_error "You did not specify a partition scheme" + [ -z "$BLOCKDATA" ] && die_error "You did not specify a partition scheme" + [ -z "$GRUB_DEVICE" ] && die_error "You did not specify a grub device" + # initialize internal variables based on variables set by the user (some of the vars are handled in other workers): + var_RUNTIME_REPOSITORIES=$RUNTIME_REPOSITORIES + var_RUNTIME_PACKAGES=$RUNTIME_PACKAGES + var_GRUB_DEVICE=$GRUB_DEVICE + var_PARTITIONS=$PARTITIONS + var_BLOCKDATA=$BLOCKDATA } - -# not used -worker_msg_manual () -{ - notify "A few manual things need to happen first..." -} - - -worker_msg_automatic () -{ - notify "**** From now on. everything will be automatic. Enjoy the show!" # not true: you need pass for dm_crypt -} - - -worker_fetch_configs () +worker_select_source () { - true + var_PKG_SOURCE_TYPE=${SOURCE:-cd} + var_FILE_URL=${FILE_URL:-file:///src/core/pkg} + var_SYNC_URL=${SYNC_URL:-} } - worker_runtime_network () { - if ask_yesno "Do you want to (re)-configure your networking?" - then - interactive_runtime_network - else - infofy "Ok. skipping network config" - fi -} - - -# Check if we have all needed settings loaded from the profile -worker_runtime_settings () -{ - if check_is_in $var_RUNTIME_PACKAGES svn - then - [ -z "$SVN_USERNAME" ] && ask_string "Please enter your svn username" && SVN_USERNAME=$ANSWER_STRING - [ -z "$SVN_PASSWORD" ] && ask_password svn #TODO: if user entered incorrect password, the install process will just fail.. - [ -z "$SVN_BASE" ] && ask_string "What's the base path of your svn repo? (no ending /) " && SVN_BASE=$ANSWER_STRING - [ -z "$DEPLOY_CLASS" ] && ask_string "Which hostclass are you installing? (optional)" '' 0 && DEPLOY_CLASS=$ANSWER_STRING - SVN="svn --username $SVN_USERNAME --password $SVN_PASSWORD" - elif check_is_in $var_RUNTIME_PACKAGES moo - then - # Maybe more stuff later - true - fi - [ -z "$HOSTNAME" ] && ask_string "Hostname of target system?" && HOSTNAME=$ANSWER_STRING - - return 0 + true # for now. we assume the user has taken care of this himself already. doing this interactively wouldn't be a good default anyway. + # maybe check if network works, if not, try dhcp. let user override by using a static config in his config file + #if ask_yesno "Do you want to (re)-configure your networking?" + #then + # interactive_runtime_network + #else + # infofy "Ok. skipping network config" + #fi } worker_prepare_disks () { + echo "$var_PARTITIONS" > $TMP_PARTITIONS + echo "$var_BLOCKDATA" > $TMP_BLOCKDEVICES process_disks || die_error "Could not process_disks" if ! process_filesystems then @@ -105,31 +95,35 @@ worker_prepare_disks () true } +worker_package_list () +{ + var_TARGET_PACKAGES=$TARGET_PACKAGES + var_TARGET_GROUPS=$TARGET_GROUPS + [ -z "$var_TARGET_PACKAGES" -a -z "$var_TARGET_GROUPS" ] && var_TARGET_GROUPS=base +} + worker_install_packages () { target_prepare_pacman core extra community #TODO: it would be better if this was a separate worker, i think - [ -z "$TARGET_PACKAGES" ] && die_error "No packages listed to be installed!" installpkg } worker_set_clock () { - #timezone="Europe/Brussels" - #Not doing anything. hwclock is set already and configs are coming from svn anyway.. + #TODO implement this true } -worker_install_bootloader () -{ - install-grub /dev/sda +worker_auto_network () { + # temporary override because i need to implement this + true } -worker_runtime_yaourt () +worker_install_bootloader () { - _yaourt_replace_pacman + grub-install $var_GRUB_DEVICE --root-directory=/mnt } - |