Commit 5161dfdb62a895b54fcc16aed5dda387e46a8c76

Authored by hmalti
1 parent b1087939

Améliorations script images

baleine.sh
... ... @@ -30,7 +30,7 @@ case "$1" in
30 30 bash container.sh "$@"
31 31 ;;
32 32 "image")
33   - bash image.sh "$@"
  33 + bash image.sh "${@:2}"
34 34 ;;
35 35 "bridge")
36 36 bash bridge.sh "$@"
... ...
container.sh
... ... @@ -18,6 +18,9 @@ case $2 in
18 18 ;;
19 19 "restart")
20 20 bash restart_container.sh "$@"
21   - ;;
  21 + ;;
  22 + "exec")
  23 + bash exec_container.sh "$@"
  24 + ;;
22 25  
23 26 esac
24 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 28 echo "je vais mount"
29 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 35 nohup unshare -p -f -m -n -u chroot /mnt/baleine/$NOM_CONTAINER $PROGRAM -c "mount /proc" &
32 36 PID=$!
33 37 echo "j'ai finis le unshare-nohup"
... ... @@ -62,6 +66,8 @@ if [[ ! -d "$PATH_MANIFEST/containers" ]]; then
62 66 fi
63 67  
64 68 mv $NOM_CONTAINER.manifest $PATH_MANIFEST/containers/$NOM_CONTAINER.manifest
  69 +
  70 +
65 71 #TODO : son interface réseau (bridge) - taille mémoire / limite mémoire
66 72  
67 73 #création de son interface réseau
... ...
create_image.sh
1 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 16 fi
16 17  
  18 +echo "La size est de $SIZE"
17 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 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 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 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 62 #Création de l'arborescence Debian avec debootstrap
63 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 64 \ No newline at end of file
  65 +debootstrap --include=apache2,vim,nano stable /mnt/baleine/$NOM_IMAGE
69 66 \ No newline at end of file
... ...
exec_container.sh 0 → 100644
... ... @@ -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 9 \ No newline at end of file
... ...
image.sh
1 1 #!/bin/bash
2 2  
3   -case $2 in
4   -
  3 +case $1 in
5 4 "create")
6 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 8 "list")
10 9 #Si on veut lister les images (qu'on a apellé le script ./balaine.sh image list)
... ...
1 1 #!/bin/bash
2 2  
3   -source baleine.sh
4   -echo "$PATH_MANIFEST"
5 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"
... ...