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