src/bin.exe anlegen (lib.sh) alle function Variablen local Konzept: Unterscheidung replay apply fetch durchgaengig siehe marsadm_pause_cmd Symlinknamen: apply fetch sync Fragen: Einstellen von hosts am besten dynamisch. Wie? Momentan mach ich das in .conf Dateien Doku: - Alle globalen Variablen in .conf - Dateien - Die Reihenfolge der default-*.conf - Dateien ist u.U. wichtig, wenn die gegenseitig Variable referenziert werden!! Daher sollte hier eine entsprechende _set_globals Funktion definiert sein (siehe z.B. resource_set_globals) - Alle globalen Variablen und alle Funktionen mit Modulname als Präfix - Globale Arrays muessen mit declare -g deklariert werden, da die Variablen via source innerhalb einer Funktion bekannt gemacht werden - Globale Arrays sollten im Namen _list als Postfix haben - Nur die _prepare, _run, _finish, _cleanup Funktionen duerfen mit globalen Variablen arbeiten. - Werden in einem Modul globale Variablen gebraucht, bekommen die das Präfix my__ - Standardfunktion _check_variables fuer Plausi der globalen Variablen - Funktionen die return-Wert auf stdout schreiben, duerfen nicht myexit aufrufen wg a=$(myfunc) || myexit 1 - Die Pflege der run_list, prepare_list usw. sollte ausschließlich in den .conf - Dateien erfolgen. (wird in blkreplay nicht beachtet 30_recreate_lvm.sh) - ueber verbose_script lib_vmsg ("echo if verbose") definieren - error recovery functions: Wann gesetzt, wann wieder aufgehoben: siehe Beispiel grub_restore_boot_configuration - Signale abfangen siehe main_error_recovery_functions - check - Funktionen sollten nicht lib_exit aufrufen, sondern eine Fehlermeldung ausspucken und 1 returnen, damit der Aufrufer noch reagieren kann (insbesondere damit man die Aufrufstelle findet) - Werden Werte an Aufrufparameter zurueckgegeben, heissen die f "pid" function f { local varname_pid ... eval $varname_pid=pid } - Namenskonvention fuer lib - Funktionen und main (gemaess Moduln) - "includeable" conf Dateien (Beispiel ./build_test_environment/resource/lib-resource.conf) evtl. via base-directory bis zu dem nach oben nach .conf - Dateien gesucht wird - Argumentzahlpruefung in allen Funktionen - Problem, wenn man nur einen Test laufen lassen will => Subdirectory out und - out.conf gelinkt auf .conf (Beispiel admin/apply_fetch/apply/out.conf) Meeting: passwort freier Zugang aller roots untereinander Robustheit: - sequence number vorne und hinten in die log Einträge - keine Nullbytes als Füllsel remote device: ln -s /tmp/fly@istore-test-bs7,remote-floppy /mars/resource-lv-2/_direct-002-istore-test-bap7