Commit 5161dfdb62a895b54fcc16aed5dda387e46a8c76
1 parent
b1087939
Améliorations script images
Showing
7 changed files
with
72 additions
and
51 deletions
Show diff stats
baleine.sh
@@ -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 "$@" |
container.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 |
create_image.sh
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 |
image.sh
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) |
test.sh
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" |