Commit eb0c1262a7d07ecdf129559e40f931d8dfe44cd4

Authored by Etienne Pallier
1 parent 8158eebd
Exists in master and in 1 other branch dev

Amélioration de l'installation : ajout du mode "BATCH" (non interactif)

v4.108.15-3.7.9
CHANGELOG
... ... @@ -315,6 +315,10 @@ Commencer à implémenter le nouveau workflow v5 :
315 315 ======= CHANGES =======
316 316  
317 317 -------
  318 +23/02/2021 v4.108.15-3.7.9
  319 + - Amélioration de l'installation : ajout du mode "BATCH" (non interactif)
  320 +
  321 +-------
318 322 17/02/2021 v4.108.14-3.7.9
319 323 - (b) Bugfix src/Application.php absent (créé temporairement pendant l'install, puis supprimé)
320 324  
... ...
README.md
... ... @@ -52,8 +52,8 @@ Logiciel testé et validé sur les configurations suivantes :
52 52  
53 53 --------------------------------------------------------------------------------------------
54 54  
55   -Date: 17/02/2021
56   -Version: v4.108.14-3.7.9
  55 +Date: 23/02/2021
  56 +Version: v4.108.15-3.7.9
57 57  
58 58  
59 59  
... ...
install/.gitignore
... ... @@ -2,3 +2,5 @@
2 2 /HTTPD_CONF/
3 3 files_to_process.txt
4 4 installation.macos.temp.sh
  5 +# ENV.example.sh est bien dans git mais pas sa copie privee ENV.sh :
  6 +ENV.sh
... ...
install/ENV.example.sh 0 → 100644
... ... @@ -0,0 +1,28 @@
  1 +# - Mode interactif ou batch
  2 +# Mode BATCH (NON interactif)
  3 +MODE_BATCH=ON
  4 +# Mode interactif
  5 +#MODE_BATCH=
  6 +
  7 +# - mysql host
  8 +#MYSQL_HOST=db
  9 +MYSQL_HOST=localhost
  10 +
  11 +# - mysql root login ?
  12 +# oui (active, acces root ok)
  13 +MYSQL_ROOT_LOGIN=root
  14 +# non (desactive, pas d'access root)
  15 +#MYSQL_ROOT_LOGIN=
  16 +
  17 +# - mysql root pass
  18 +MYSQL_ROOT_PASSWORD=root
  19 +#MYSQL_ROOT_PASSWORD=labinvent
  20 +
  21 +# - mysql db
  22 +MYSQL_DATABASE=labinvent
  23 +MYSQL_USER=labinvent_user
  24 +MYSQL_PASSWORD=labinvent
  25 +
  26 +# - Pour ajouter les donnees IRAP de base (categories...) pendant l'installation, mettre à 1 (sinon mettre à 0)
  27 +INSTALL_DATA_IRAP=1
  28 +#INSTALL_DATA_IRAP=0
... ...
install/installation.sh
... ... @@ -5,15 +5,29 @@ DEBUG=
5 5 # Mode DEBUG on
6 6 #DEBUG=ON
7 7  
8   -# Pour pouvoir ajouter les donnees IRAP (categories...) pendant l'installation, mettre à 1
9   -INSTALL_DATA_IRAP=1
10   -
11 8 # Chemins vers fichier de conf
12 9 cakephp_app_path=./
13 10 config_path=$cakephp_app_path/config
14 11 config_file=$config_path/app.php
15 12 default_config_file=$config_path/app.default.php
16 13  
  14 +# Des variables d'environnement peuvent etre passées via le script ENV.sh (s'il existe) :
  15 +[ -f ENV.sh ] && source ENV.sh
  16 +# Si le script ENV.sh existe
  17 +# (ou bien que les variables ont été positionnées dans l'environnement, via Docker par exemple),
  18 +# l'installation se fait silencieusement (mode batch).
  19 +# Sinon, l'installation passe en mode interactif (questions/réponses)
  20 +# Par défaut, mode BATCH (mode INTERactif est off) :
  21 +INTER=
  22 +# Si la variable MODE_INTER n'est PAS positionnée (ou valeur nulle ou ''),
  23 +# OU
  24 +# Si elle est positionnée et TRUE
  25 +# => on passe en mode INTERactif (on) :
  26 +# (Attention, ça marche pas avec simple crochet mais seulement avec double crochets !!!!!!!!)
  27 +[[ -z $MODE_BATCH ]] && INTER=ON
  28 +# Si la variable MYSQL_HOST n'est PAS positionnée (ou valeur nulle ou ''), on passe en mode INTERactif (on) :
  29 +#[[ -z $MYSQL_HOST ]] && INTER=ON
  30 +
17 31  
18 32  
19 33 # Le script peut-il continuer et créer les fichiers qui lui sont nécessaires ?
... ... @@ -34,6 +48,8 @@ fi
34 48 # cp installation.sh installation_macosx.sh
35 49 # sed -e "s/ -i / -i '' /" -i '' installation_macosx.sh
36 50  
  51 +
  52 +# Depuis le dossier install/ sinon => exit
37 53 echo
38 54 if [ ! -f ./installation.sh ] ; then
39 55 echo "Vous devez executer ce script depuis le dossier install/"
... ... @@ -54,11 +70,16 @@ echo
54 70 cat ../LICENSE
55 71 echo
56 72 echo "J'accepte ces conditions d'utilisation avant de continuer (o/n) :"
57   -read rep
58   -[[ -z $rep ]] && rep="n"
59   -[[ $rep != "o" && $rep != "O" ]] && exit
60   -echo "Conditions d'utilisation acceptées : taper une touche pour continuer"
61   -read rep
  73 +if [[ $INTER ]] ; then
  74 + read rep
  75 + [[ -z $rep ]] && rep="n"
  76 + [[ $rep != "o" && $rep != "O" ]] && exit
  77 +fi
  78 +echo "Conditions d'utilisation acceptées"
  79 +if [[ $INTER ]] ; then
  80 + echo "[Taper une touche pour continuer]"
  81 + read rep
  82 +fi
62 83  
63 84  
64 85 #
... ... @@ -367,32 +388,44 @@ cp $default_config_file $config_file
367 388  
368 389 # - Set database ip
369 390 echo
370   -echo "Entrez le nom ou l'adresse du serveur MySQL hebergeant la base de donnees (defaut=localhost) :"
371   -read bddIp
372   -[[ -z $bddIp ]] && bddIp="localhost"
373   -
  391 +if [[ $INTER ]] ; then
  392 + echo "Entrez le nom ou l'adresse du serveur MySQL hebergeant la base de donnees (defaut=localhost) :"
  393 + read bddIp
  394 + [[ -z $bddIp ]] && bddIp="localhost"
  395 +else
  396 + bddIp=$MYSQL_HOST
  397 +fi
374 398 echo "==> Adresse du serveur MySql = $bddIp"
375 399 #sed -e "s#/\*d\*/'host' => 'localhost'//\*d\*/'host' => '$bddIp'/" -i $config_file
376 400 sed -e "s/\*d\*\/'host' => 'localhost'/\*d\*\/'host' => '$bddIp'/" -i $config_file
377 401  
378 402  
379 403 # - Nom de la BD prod
380   -default="labinvent"
381 404 echo
382   -echo "Entrez le nom de la BD à utiliser pour l'inventaire (defaut=$default) :"
383   -read answer ; [[ -z $answer ]] && answer=$default
384   -bddName=$answer
  405 +if [[ $INTER ]] ; then
  406 + default="labinvent"
  407 + echo "Entrez le nom de la BD à utiliser pour l'inventaire (defaut=$default) :"
  408 + read answer ; [[ -z $answer ]] && answer=$default
  409 + bddName=$answer
  410 +else
  411 + bddName=$MYSQL_DATABASE
  412 +fi
385 413 echo "==> Nom de la BD = $bddName"
386   -echo
387 414 sed -e "s/'database' => 'database'/'database' => '$bddName'/" -i $config_file
388 415  
  416 +
389 417 # - Nom de la BD test
390   -#default="test_labinvent2"
391   -#default="test_labinvent"
392   -default=test_${bddName:0:12}
393   -echo "Entrez maintenant le nom de la BD de TEST à utiliser (pour l'exécution des tests) (defaut=$default) :"
394   -read answer ; [[ -z $answer ]] && answer=$default
395   -bddName_test=$answer
  418 +echo
  419 +if [[ $INTER ]] ; then
  420 + #default="test_labinvent2"
  421 + #default="test_labinvent"
  422 + default=test_${bddName:0:12}
  423 + echo "Entrez maintenant le nom de la BD de TEST à utiliser (pour l'exécution des tests) (defaut=$default) :"
  424 + read answer ; [[ -z $answer ]] && answer=$default
  425 + bddName_test=$answer
  426 +else
  427 + bddName_test=test_$MYSQL_DATABASE
  428 +fi
396 429 echo "==> Nom de la BD de test = $bddName_test"
397 430 sed -e "s/'database' => 'test_database'/'database' => '$bddName_test'/" -i $config_file
398 431 #sed -e "s/'username' => 'test_username'/'username' => 'superadmin'/" -i $config_file
... ... @@ -400,52 +433,69 @@ sed -e "s/'database' => 'test_database'/'database' => '$bddName_test'/" -i $conf
400 433  
401 434  
402 435 # - Accès root à Mysql o/n ?
403   -MYSQL_ROOT_ACCESS=ON # admin mysql
404 436 echo
405   -echo "Etes-vous administrateur du serveur BD MySql (vous avez un login root) (defaut=o) [o/n] ?"
406   -read rep
407   -if [ -z $rep ] || [ $rep == "O" ] || [ $rep == "o" ] || [ $rep == "Oui" ] || [ $rep == "oui" ] || [ $rep == "OUI" ]; then
  437 +if [ $INTER ] ; then
  438 + # PAS admin mysql
  439 + MYSQL_ROOT_LOGIN=
  440 + echo "Etes-vous administrateur du serveur BD MySql (vous avez un login root) (defaut=o) [o/n] ?"
  441 + read rep
  442 + if [ -z $rep ] || [ $rep == "O" ] || [ $rep == "o" ] || [ $rep == "Oui" ] || [ $rep == "oui" ] || [ $rep == "OUI" ]; then
  443 + MYSQL_ROOT_LOGIN=ON # admin mysql
  444 + fi
  445 +fi
  446 +if [ $MYSQL_ROOT_LOGIN ] ; then
408 447 echo "==> Administrateur de MySql"
409 448 else
410 449 # PAS admin mysql
411   - MYSQL_ROOT_ACCESS=
412 450 echo "==> PAS administrateur de MySql"
413 451 echo "==> La BD '$bddName' doit donc être déjà créée (ainsi que la BD de test) et vous avez un login pour y accéder (sinon, inutile de continuer)"
414   - echo "Taper une touche pour continuer..."
415   - read
  452 + [ $INTER ] && (echo "Taper une touche pour continuer..." ; read)
416 453 fi
417   -[ $DEBUG ] && echo "MYSQL_ROOT_ACCESS == $MYSQL_ROOT_ACCESS";
  454 +[ $DEBUG ] && echo "MYSQL_ROOT_LOGIN == $MYSQL_ROOT_LOGIN";
418 455  
419 456  
420 457 # - Si admin mysql, entrer le login et pass root (et demander si on doit RE-créer la BD ou pas)
421 458 ##if [ $BD_NOT_YET_CREATED -eq 1 ] ; then
422   -if [ $MYSQL_ROOT_ACCESS ] ; then
  459 +if [ $MYSQL_ROOT_LOGIN ] ; then
423 460 echo
424 461  
425   - #echo "La BD n'existe pas encore, il faut donc la créer, et pour cela j'ai besoin du login admin de mysql"
426   - echo "- entrez le login privilegie (admin) vous donnant le droit de CREER des bases de donnees"
427   - echo "(ce login ne sera utilisé qu'une seule fois, pour la creation des bases prod et test, et de l'utilisateur)"
428   - #echo "Si vous n'avez pas la permission de créer de nouvelles bases sur le serveur mais souhaitez installer le logiciel dans une base existante, entrez 'latmos'"
429   - ##echo "Si vous n'avez pas la permission de créer de nouvelles bases sur le serveur mais souhaitez installer le logiciel dans une base existante, entrez 'bd_existante'"
430   - ##echo "(defaut=root) [root/bd_existante/...] :"
431   - default="root"
432   - echo "(defaut=$default) :"
433   - read answer ; [[ -z $answer ]] && answer=$default
434   - bddAdminName=$answer
  462 + if [ $INTER ] ; then
  463 + #echo "La BD n'existe pas encore, il faut donc la créer, et pour cela j'ai besoin du login admin de mysql"
  464 + echo "- entrez le login privilegie (admin) vous donnant le droit de CREER des bases de donnees"
  465 + echo "(ce login ne sera utilisé qu'une seule fois, pour la creation des bases prod et test, et de l'utilisateur)"
  466 + #echo "Si vous n'avez pas la permission de créer de nouvelles bases sur le serveur mais souhaitez installer le logiciel dans une base existante, entrez 'latmos'"
  467 + ##echo "Si vous n'avez pas la permission de créer de nouvelles bases sur le serveur mais souhaitez installer le logiciel dans une base existante, entrez 'bd_existante'"
  468 + ##echo "(defaut=root) [root/bd_existante/...] :"
  469 + default="root"
  470 + echo "(defaut=$default) :"
  471 + read answer ; [[ -z $answer ]] && answer=$default
  472 + bddAdminName=$answer
  473 + else
  474 + bddAdminName=$MYSQL_ROOT_LOGIN
  475 + fi
435 476 echo "==> SGBD admin login = $bddAdminName"
436   - echo
437   - echo "- entrez le mot de passe de ce login privilegié :"
438   - read -s bddAdminPass
  477 +
  478 + if [ $INTER ] ; then
  479 + echo
  480 + echo "- entrez le mot de passe de ce login privilegié :"
  481 + read -s bddAdminPass
  482 + else
  483 + bddAdminPass=$MYSQL_ROOT_PASSWORD
  484 + fi
439 485  
440 486 # - Supprimer la BD avant de la créer ?
441 487 DROP_DATABASE=ON # par defaut, oui, on drop la BD
442 488 echo
443   - while : ; do
444   - echo "Si la BD existe déjà, elle sera supprimée avant d'être créée à nouveau, OK (defaut=O) (O/N) ?"
445   - read rep
446   - [[ -z $rep ]] && rep="O"
447   - [[ $rep == "O" || $rep == "N" ]] && break
448   - done
  489 + if [ $INTER ] ; then
  490 + while : ; do
  491 + echo "Si la BD existe déjà, elle sera supprimée avant d'être créée à nouveau, OK (defaut=O) (O/N) ?"
  492 + read rep
  493 + [[ -z $rep ]] && rep="O"
  494 + [[ $rep == "O" || $rep == "N" ]] && break
  495 + done
  496 + else
  497 + rep="O"
  498 + fi
449 499 if [[ $rep == "O" ]] ; then
450 500 echo "==> La BD sera détruite puis re-créée"
451 501 else
... ... @@ -455,7 +505,6 @@ if [ $MYSQL_ROOT_ACCESS ] ; then
455 505 echo "ATTENTION: la re-création des tables risque de ne pas fonctionner... (il vaut mieux supprimer la BD avant)"
456 506 fi
457 507 [ $DEBUG ] && echo "DROP_DATABASE == $DROP_DATABASE";
458   -
459 508  
460 509 fi # mysql admin
461 510  
... ... @@ -464,13 +513,17 @@ fi # mysql admin
464 513 # (Attention, le login doit faire maximum 16 caracteres, car Mysql ne supporte pas plus)
465 514  
466 515 # -- login
467   -default=${bddName:0:12}_user
468 516 echo
469   -echo "Entrez le login et le mot de passe du proprietaire de la BD $bddName (à créer ou déjà créé)"
470   -echo "(login utilisé par le logiciel pour accéder et modifier la BD de production ainsi que la BD de test)"
471   -echo "- login (attention, ce login doit faire 16 caracteres MAX) (defaut=$default) :"
472   -read answer ; [[ -z $answer ]] && answer=$default
473   -bddUserName=$answer
  517 +if [ $INTER ] ; then
  518 + default=${bddName:0:12}_user
  519 + echo "Entrez le login et le mot de passe du proprietaire de la BD $bddName (à créer ou déjà créé)"
  520 + echo "(login utilisé par le logiciel pour accéder et modifier la BD de production ainsi que la BD de test)"
  521 + echo "- login (attention, ce login doit faire 16 caracteres MAX) (defaut=$default) :"
  522 + read answer ; [[ -z $answer ]] && answer=$default
  523 + bddUserName=$answer
  524 +else
  525 + bddUserName=$MYSQL_USER
  526 +fi
474 527 echo "==> BD labinvent user login = $bddUserName"
475 528 sed -e "s/'username' => 'db_username'/'username' => '$bddUserName'/" -i $config_file
476 529 sed -e "s/'username' => 'test_db_username'/'username' => '$bddUserName'/" -i $config_file
... ... @@ -478,8 +531,12 @@ sed -e "s/'username' => 'test_db_username'/'username' => '$bddUserName'/" -i $co
478 531  
479 532 # -- pass
480 533 echo
481   -echo "- mot de passe :"
482   -read -s bddUserPass
  534 +if [ $INTER ] ; then
  535 + echo "- mot de passe :"
  536 + read -s bddUserPass
  537 +else
  538 + bddUserPass=$MYSQL_PASSWORD
  539 +fi
483 540 echo "==> BDD labinvent user pass = $bddUserPass"
484 541 echo "(Vous pourrez retrouver ces login et mot de passe dans le fichier de configuration config/app.php)"
485 542 sed -e "s/'password' => 'db_password'/'password' => '$bddUserPass'/" -i $config_file
... ... @@ -489,12 +546,6 @@ sed -e "s/'password' => 'test_db_password'/'password' => '$bddUserPass'/" -i $co
489 546  
490 547  
491 548  
492   -
493   -
494   -
495   -
496   -
497   -
498 549 # - Création du Script de construction "build.sql"
499 550  
500 551 #if [ $BDD == "N" ] ; then
... ... @@ -534,7 +585,7 @@ echo
534 585 fi
535 586  
536 587 # Si l'utilisateur n'est pas admin mysql et qu'on n'arrive pas à accéder à la BD ==> STOP ici
537   - if [[ ! $MYSQL_ROOT_ACCESS && $BD_NOT_YET_CREATED ]] ; then
  588 + if [[ ! $MYSQL_ROOT_LOGIN && $BD_NOT_YET_CREATED ]] ; then
538 589 echo "La BD $bddName (ou bien votre login) n'existe pas (et vous ne pouvez pas la créer) !"
539 590 echo "==> *** ABORT ***"
540 591 echo
... ... @@ -550,7 +601,7 @@ echo
550 601 # (1) DATABASES et USERS : 1ères instructions de création de la BD et users (prod et test)
551 602 ###if [ $bddAdminName == 'bd_existante' ] ; then
552 603 #if [ $BD_NOT_YET_CREATED -eq 1 ] ; then
553   - if [ $MYSQL_ROOT_ACCESS ] ; then
  604 + if [ $MYSQL_ROOT_LOGIN ] ; then
554 605 #cat ./labinvent_2.1_22-05-17.sql > ./build.sql
555 606 #cat ./labinvent_last_version_from_existing_bd.sql > ./build.sql
556 607 # On crée un fichier vide
... ... @@ -599,21 +650,25 @@ echo
599 650  
600 651  
601 652 # (5) (optionnel) DATA optionnelles (IRAP only) : ajout données IRAP (catégories, groupes)
602   - echo
603   - if [ $INSTALL_DATA_IRAP -eq 1 ] ; then
  653 + if [ $INTER ] ; then
  654 + INSTALL_DATA_IRAP=0
  655 + echo
604 656 echo "Voulez-vous installer les donnees propres a l'IRAP (categories, groupes metiers, groupes thematiques) dans la base de donnees ?"
605 657 echo "(OPTIONNEL, c'est juste pour que vous ayez déjà quelques données pour commencer, que vous pourrez remplacer progressivement)"
606 658 echo "(defaut = o) [o/n] ?"
607 659 read rep
608 660 if [ -z $rep ] || [ $rep == "O" ] || [ $rep == "o" ] || [ $rep == "Oui" ] || [ $rep == "oui" ] || [ $rep == "OUI" ]; then
609   - echo "==> Les données IRAP seront installées dans la BDD"
610   - #cat ./Insert_TablesFunct.sql >> ./build.sql
611   - #cat ./insert_tables_default_data_IRAP.sql >> ./build.sql
612   - cat ./install/DB5_insert_tables_default_data_IRAP_optional.sql >> ./build.sql
613   - else
614   - echo "==> Pas de données IRAP dans la base"
  661 + INSTALL_DATA_IRAP=1
615 662 fi
616 663 fi
  664 + if [ $INSTALL_DATA_IRAP -eq 1 ] ; then
  665 + echo "==> Les données IRAP seront installées dans la BDD"
  666 + #cat ./Insert_TablesFunct.sql >> ./build.sql
  667 + #cat ./insert_tables_default_data_IRAP.sql >> ./build.sql
  668 + cat ./install/DB5_insert_tables_default_data_IRAP_optional.sql >> ./build.sql
  669 + else
  670 + echo "==> Pas de données IRAP dans la base"
  671 + fi
617 672  
618 673  
619 674 # (5) Ajout du user superadmin (dans table 'users')
... ... @@ -665,21 +720,23 @@ echo
665 720 ##if [[ $BDD == "O" ]] ; then
666 721 echo
667 722 echo "Je vais maintenant procéder à la création des tables de la BD '$bddName'"
668   - [ $MYSQL_ROOT_ACCESS ] && echo "(avec création de la BD si elle n'existe pas déjà)"
  723 + [ $MYSQL_ROOT_LOGIN ] && echo "(avec création de la BD si elle n'existe pas déjà)"
669 724 echo "Votre serveur Mysql doit etre demarré"
670 725 echo "La commande 'mysql' doit aussi etre accessible:"
671 726 res=`which mysql`
672 727 [[ -z "$res" ]] && exit 1
673 728 echo "==> ok"
674   - echo "...[taper une touche pour continuer]..."
675   - read rep
  729 + if [ $INTER ] ; then
  730 + echo "...[taper une touche pour continuer]..."
  731 + read rep
  732 + fi
676 733  
677 734 #exit
678 735  
679 736 ##if [ $bddAdminName == 'bd_existante' ] ; then
680 737 #if [ $BD_NOT_YET_CREATED -eq 1 ] ; then
681 738 # mysql admin ==> on utilise le login root
682   - if [ $MYSQL_ROOT_ACCESS ] ; then
  739 + if [ $MYSQL_ROOT_LOGIN ] ; then
683 740 #echo "mysql --user=$bddAdminName --password="$bddAdminPass" -h $bddIp < ./build.sql"
684 741 mysql --user=$bddAdminName --password="$bddAdminPass" -h $bddIp < ./build.sql
685 742 # PAS admin ==> on utilise le login de l'utilisateur labinvent
... ...