|
#!/bin/sh |
|
# Tentative pour lancer un cluster de coreos "à la laborieuse" |
|
# BUG (je crois) : le clusterId n'est pas mis -> en ssh (core -> sudo su = root) |
|
#, le mettre dans le fichier /var/lib/coreos-install/user_data et rebooter |
|
# la machine coreos |
|
|
|
# Arguments : clusterId, [basehostname] |
|
set -xv |
|
|
|
BASEHOSTNAME=$2 |
|
INSTALLDIR=gdicos |
|
|
|
|
|
function init { |
|
# Création d'un VLAN et d'une ip sur ce vlan |
|
gandi vlan create --datacenter FR --subnet 10.0.0.0/16 \ |
|
--gateway 10.0.255.254 --name ${BASEHOSTNAME}net |
|
echo $1 > /tmp/clusterId |
|
|
|
|
|
} |
|
|
|
|
|
function prepare { |
|
HOSTNAME=$BASEHOSTNAME-$1 |
|
|
|
# Create disk, create ip on vlan |
|
gandi disk create --name cor-$HOSTNAME --size 10G --datacenter FR |
|
|
|
# Créer une vm pour installer coreOS sur ce disque |
|
gandi vm create --datacenter FR --memory 256 --cores 1 --ip-version 4 \ |
|
--hostname $HOSTNAME --image "Debian 8 64 bits (HVM)" --size 3G |
|
|
|
sleep 10 # ?? utile ? |
|
gandi ip create --vlan ${BASEHOSTNAME}net --ip 10.0.0.$1 --attach $HOSTNAME |
|
sleep 10 # ?? utile ? |
|
gandi disk attach -f cor-$HOSTNAME $HOSTNAME |
|
sleep 10 # ?? utile ? |
|
|
|
|
|
# Préparation de l'installation de coreOs, méthode "disque" |
|
gandi vm ssh --wipe-key $HOSTNAME "umount /dev/sdc;\ |
|
apt-get update &&\ |
|
apt-get install -y wget git &&\ |
|
git clone https://gist.github.com/ab06cf23735845a0167a.git $INSTALLDIR &&\ |
|
cd $INSTALLDIR &&\ |
|
wget https://raw.github.com/coreos/init/master/bin/coreos-install &&\ |
|
chmod +x coreos-install prepare_gandi_cloudinit.sh" |
|
|
|
|
|
# Get server network address |
|
IP=`gandi vm info $HOSTNAME | grep ip4 | grep -v 10.0. | sed 's/ip4 *: //g'` |
|
|
|
|
|
# Préparation du cloud-init |
|
scp ~/.ssh/id_rsa.pub root@$IP:/root/$INSTALLDIR/ |
|
scp /tmp/clusterId root@$IP:/root/$INSTALLDIR/ |
|
ssh root@$IP "./$INSTALLDIR/prepare_gandi_cloudinit.sh $INSTALLDIR > /root/$INSTALLDIR/cloud-config.yml" |
|
|
|
# Installation coreOS |
|
ssh root@$IP ./$INSTALLDIR/coreos-install -d /dev/sdc -C alpha\ |
|
-c /root/$INSTALLDIR/cloud-config.yml |
|
sleep 10 |
|
|
|
|
|
# # Remise en l'état de la future machine |
|
gandi vm stop $HOSTNAME |
|
|
|
# Démontage des disques, et définition en disque de boot |
|
gandi disk detach -f cor-$HOSTNAME |
|
gandi disk detach -f sys_$HOSTNAME |
|
|
|
gandi disk delete -f sys_$HOSTNAME |
|
gandi disk update --kernel raw cor-$HOSTNAME |
|
# p 0 => premier disque (/dev/sda) ... ?? le p=0 fait foirer la commande de |
|
# temps en temps ?.?. Je pense qu'on peut le virer ? |
|
gandi disk attach -f -p 0 cor-$HOSTNAME $HOSTNAME |
|
|
|
# Redémarrage |
|
gandi vm start $HOSTNAME |
|
|
|
# Suppression de l'empreinte du serveur "temporaire" |
|
ssh-keygen -f ~/.ssh/known_hosts -R $IP |
|
} |
|
|
|
init |
|
prepare 1 |
|
prepare 2 |
|
prepare 3 |
|
|
|
|
|
# Pas oublier de faire le ménage après avoir joué |
|
# gandi vm delete -f ... |