Commit 5161dfdb62a895b54fcc16aed5dda387e46a8c76

Authored by hmalti
1 parent b1087939

Améliorations script images

@@ -30,7 +30,7 @@ case "$1" in @@ -30,7 +30,7 @@ case "$1" in
30 bash container.sh "$@" 30 bash container.sh "$@"
31 ;; 31 ;;
32 "image") 32 "image")
33 - bash image.sh "$@" 33 + bash image.sh "${@:2}"
34 ;; 34 ;;
35 "bridge") 35 "bridge")
36 bash bridge.sh "$@" 36 bash bridge.sh "$@"
@@ -18,6 +18,9 @@ case $2 in @@ -18,6 +18,9 @@ case $2 in
18 ;; 18 ;;
19 "restart") 19 "restart")
20 bash restart_container.sh "$@" 20 bash restart_container.sh "$@"
21 - ;; 21 + ;;
  22 + "exec")
  23 + bash exec_container.sh "$@"
  24 + ;;
22 25
23 esac 26 esac
24 \ No newline at end of file 27 \ No newline at end of file
create_container.sh
@@ -28,6 +28,10 @@ cp $PATH_IMAGE $PATH_BALEINE/containers/$NOM_CONTAINER/$NOM_IMAGE @@ -28,6 +28,10 @@ cp $PATH_IMAGE $PATH_BALEINE/containers/$NOM_CONTAINER/$NOM_IMAGE
28 echo "je vais mount" 28 echo "je vais mount"
29 mount -t ext4 -o loop $PATH_BALEINE/containers/$NOM_CONTAINER/$NOM_IMAGE /mnt/baleine/$NOM_CONTAINER 29 mount -t ext4 -o loop $PATH_BALEINE/containers/$NOM_CONTAINER/$NOM_IMAGE /mnt/baleine/$NOM_CONTAINER
30 30
  31 +#On renseigne le fichier fstab du conteneur
  32 +echo "proc /proc proc defaults 0 0" >> /mnt/$NOM_IMAGE/etc/fstab
  33 +echo "$PROGRAM" >> /mnt/$NOM_IMAGE/etc/rc.local
  34 +
31 nohup unshare -p -f -m -n -u chroot /mnt/baleine/$NOM_CONTAINER $PROGRAM -c "mount /proc" & 35 nohup unshare -p -f -m -n -u chroot /mnt/baleine/$NOM_CONTAINER $PROGRAM -c "mount /proc" &
32 PID=$! 36 PID=$!
33 echo "j'ai finis le unshare-nohup" 37 echo "j'ai finis le unshare-nohup"
@@ -62,6 +66,8 @@ if [[ ! -d "$PATH_MANIFEST/containers" ]]; then @@ -62,6 +66,8 @@ if [[ ! -d "$PATH_MANIFEST/containers" ]]; then
62 fi 66 fi
63 67
64 mv $NOM_CONTAINER.manifest $PATH_MANIFEST/containers/$NOM_CONTAINER.manifest 68 mv $NOM_CONTAINER.manifest $PATH_MANIFEST/containers/$NOM_CONTAINER.manifest
  69 +
  70 +
65 #TODO : son interface réseau (bridge) - taille mémoire / limite mémoire 71 #TODO : son interface réseau (bridge) - taille mémoire / limite mémoire
66 72
67 #création de son interface réseau 73 #création de son interface réseau
1 #!/bin/bash 1 #!/bin/bash
2 2
3 -NOM_IMAGE=$3; # L'utilisateur devra spécifier le nom de l'image  
4 -SIZE=$4; #L'utilisateur devra spécifier la taille du disque qu'il souhaite allouer  
5 -REPERTOIRE=$5; #L'utilisateur devra spécifier le chemin ou il mettra l'image  
6 3
7 -#ici block size vaut 1024 (on alloue par 1 méga)  
8 -# La commande resseblera à : ./baleine.sh image create nom 5120  
9 -  
10 -  
11 -#condition de bordure pour SIZE  
12 -if [ "$SIZE" -lt 0 ] || [ "$SIZE" -gt 10240 ] || [ -z $SIZE ]; then #vérifie que l'argument size est bien donné, qu'il n'est pas supérieur ou inférieur à 0 / 10240  
13 - echo "Mauvaise valeur, on met par défaut 10 Giga ! "  
14 - $SIZE=10240 4 +while getopts i:s:r: o; do
  5 + case $o in
  6 + (i) NOM_IMAGE=$OPTARG;;
  7 + (s) SIZE=$OPTARG;;
  8 + (r) REPERTOIRE=$OPTARG;;
  9 + (p) PROXY=$OPTARG;;
  10 + esac
  11 +done
  12 +
  13 +#Block size vaut 1024 (allocution par 1 MB)
  14 +if [ "$SIZE" == "" ] || [ "$SIZE" -lt 0 ] || [ "$SIZE" -gt 10240 ]; then
  15 + SIZE=10240
15 fi 16 fi
16 17
  18 +echo "La size est de $SIZE"
17 mkdir -p $PATH_BALEINE/images 19 mkdir -p $PATH_BALEINE/images
18 20
19 -#condition pour le répertoire  
20 -if [[ -z $REPERTOIRE ]]; then #si l'utilisateur oublie de donner le path on utilise celui-ci par défaut  
21 - echo "Il n'y pas eu d'argements donnés pour répertoire, je fais moi même le chemin"  
22 - REPERTOIRE=$PATH_BALEINE/images 21 +if [[ -z $REPERTOIRE ]]; then
  22 + REPERTOIRE=$PATH_BALEINE/images
23 fi 23 fi
24 24
25 -#vérification que l'utilisateur donne bien un nom à l'image  
26 -if [[ -z "$NOM_IMAGE" ]]; then  
27 - echo "Il faut donner le nom de l'image ! Relancez la commande avec les bons arguments."  
28 - exit 25 +if [[ -z "$NOM_IMAGE" ]]; then
  26 + echo "Il faut donner le nom de l'image ! Relancez la commande avec les bons arguments."
  27 + exit
29 fi 28 fi
30 -# #génération de nombres aléatoires afin de créer à chaque fois un fichier avec un nombre unique (éviter qu'un soit écraser)  
31 -# NUMBER=$(cat /dev/urandom | tr -dc '0-9' | fold -w 256 | head -n 1 | sed -e 's/^0*//' | head --bytes 3)  
32 -# if [ "$NUMBER" == "" ]; then  
33 -# NUMBER=0  
34 -# fi  
35 -echo "Le repertoire est $REPERTOIRE" 29 +
36 #Crée image 30 #Crée image
37 -FILE=$NOM_IMAGE.manifest  
38 -echo "Je vais commencer à allouer !"  
39 -dd if=/dev/zero of=$REPERTOIRE/$NOM_IMAGE bs=1024k count=$SIZE  
40 -touch FILE  
41 -echo "nom image:$NOM_IMAGE" >> FILE #nom de l'image  
42 -echo "taille:$SIZE">> FILE #taille de l'image  
43 -echo "chemin:$REPERTOIRE">> FILE #son chemin  
44 31
  32 +MANIFEST=$NOM_IMAGE.manifest
45 33
  34 +dd if=/dev/zero of=$REPERTOIRE/$NOM_IMAGE bs=1024k count=$SIZE
46 35
47 -if [[ ! -d "$PATH_MANIFEST/images" ]]; then  
48 - mkdir -p $PATH_MANIFEST/images #&& mv $NOM_IMAGE.$NUMBER.manifest $REPERTOIRE/images  
49 -fi  
50 -mv $NOM_IMAGE.manifest $PATH_MANIFEST/images 36 +touch $MANIFEST
51 37
  38 +echo "nom image:$NOM_IMAGE" >> $MANIFEST
  39 +echo "taille:$SIZE">> $MANIFEST
  40 +echo "chemin:$REPERTOIRE">> $MANIFEST
52 41
53 42
54 -#création du système de fichiers au format "ext4"  
55 -mkfs.ext4 $REPERTOIRE/images/$NOM_IMAGE  
56 43
  44 +if [[ ! -d "$PATH_MANIFEST/images" ]]; then
  45 + mkdir -p $PATH_MANIFEST/images
  46 +fi
57 47
  48 +mv $NOM_IMAGE.manifest $PATH_MANIFEST/images
58 49
59 -echo "je vais exporter le proxy"  
60 -export http_proxy=http://proxy.polytech-lille.fr:3128 50 +
  51 +if [[ -z "$FORMAT" ]]; then
  52 + FORMAT=ext4
  53 +fi
  54 +
  55 +mkfs.ext4 $REPERTOIRE/$NOM_IMAGE
  56 +
  57 +if [[ $PROXY != "" ]]; then
  58 + echo "Export du proxy"
  59 + export http_proxy=http://proxy.polytech-lille.fr:3128
  60 +fi
61 61
62 #Création de l'arborescence Debian avec debootstrap 62 #Création de l'arborescence Debian avec debootstrap
63 echo "Je vais faire le debootstrap" 63 echo "Je vais faire le debootstrap"
64 -debootstrap --include=apache2,vim,nano stable /mnt/baleine/$NOM_IMAGE  
65 -  
66 -#On renseigne le fichier fstab du conteneur  
67 -echo "proc /proc proc defaults 0 0" >> /mnt/$NOM_IMAGE/etc/fstab  
68 \ No newline at end of file 64 \ No newline at end of file
  65 +debootstrap --include=apache2,vim,nano stable /mnt/baleine/$NOM_IMAGE
69 \ No newline at end of file 66 \ No newline at end of file
exec_container.sh 0 → 100644
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
  1 +#!/bin/bash
  2 +
  3 +while getopts e: o; do
  4 + case $o in
  5 + (e) $NOM_CONTAINER=$OPTARG;;
  6 + esac
  7 +done
  8 +unshare -p -f -m -n -u chroot /mnt/baleine/$NOM_CONTAINER /bin/bash
0 \ No newline at end of file 9 \ No newline at end of file
1 #!/bin/bash 1 #!/bin/bash
2 2
3 -case $2 in  
4 - 3 +case $1 in
5 "create") 4 "create")
6 #Si on veut creer une image (qu'on a apellé le script ./balaine.sh image create) 5 #Si on veut creer une image (qu'on a apellé le script ./balaine.sh image create)
7 - bash create_image.sh "$@" 6 + bash create_image.sh "${@:2}"
8 ;; 7 ;;
9 "list") 8 "list")
10 #Si on veut lister les images (qu'on a apellé le script ./balaine.sh image list) 9 #Si on veut lister les images (qu'on a apellé le script ./balaine.sh image list)
1 #!/bin/bash 1 #!/bin/bash
2 2
3 -source baleine.sh  
4 -echo "$PATH_MANIFEST"  
5 \ No newline at end of file 3 \ No newline at end of file
  4 +echo $@
  5 +while getopts i:proxy: o "$@"; do
  6 + case $o in
  7 + (i) IMAGE=$OPTARG;;
  8 + (proxy) PROXY=$OPTARG;;
  9 + esac
  10 +done
  11 +
  12 +echo "Le proxy est $PROXY"
  13 +echo "L'image est $IMAGE"