Created
December 7, 2016 23:10
-
-
Save frekele/b5de4d8efea3784780bce61230acf2b5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
### REF: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html | |
### http://docs.aws.amazon.com/cli/latest/reference/ec2/attach-volume.html | |
### http://docs.aws.amazon.com/cli/latest/reference/ec2/detach-volume.html | |
set -e | |
#Id do volume, adicionar manualmente aqui. | |
VOLUME_ID=$PERSISTENT_VOLUME_ID | |
#Diretorio de montagem. | |
MOUNT_DIR=/mnt/vol-persistent-tools | |
#Nome da regiao aws. | |
REGION=$INSTANCE_REGION | |
#Id da instancia. | |
INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id) | |
#Cria diretorio para montagem. | |
createDirectoryMount(){ | |
if [ -d "$MOUNT_DIR" ]; then | |
echo "Diretorio: $MOUNT_DIR ja existe. OK." | |
else | |
echo "Directorio: $MOUNT_DIR nao existe." | |
echo "Criando diretorio..." | |
mkdir $MOUNT_DIR | |
echo "Criado diretorio: $MOUNT_DIR . OK" | |
fi | |
} | |
#Remove volume de outra instancia. | |
detachVolume(){ | |
echo "Iniciando detach Volume: (aws ec2 detach-volume --volume-id $VOLUME_ID --region $REGION --force)" | |
local ec2Result=$(aws ec2 detach-volume --volume-id $VOLUME_ID --region $REGION --force) | |
echo "$ec2Result" | |
} | |
#Adiciona volume nesta instancia com montagem em /dev/sdf. | |
attachVolume(){ | |
echo "Iniciando attach Volume: (aws ec2 attach-volume --volume-id $VOLUME_ID --instance-id $INSTANCE_ID --device /dev/sdf --region $REGION)" | |
local ec2Result=$(aws ec2 attach-volume --volume-id $VOLUME_ID --instance-id $INSTANCE_ID --device /dev/sdf --region $REGION) | |
echo "$ec2Result" | |
} | |
echo "INIT - MOUNT VOLUME-ID: $VOLUME_ID IN ISNTANCE-ID: $INSTANCE_ID AND MOUNT-DIR: $MOUNT_DIR ON REGION: $REGION" | |
#Chama funcao para remover volume. | |
detachVolume || true | |
sleep 3 | |
#Chama funcao para adicionar volume. | |
attachVolume || true | |
sleep 10 | |
#Lista volumes anexado. | |
lsblk | |
#Prepara volume para trabalhar com ext4. | |
## Cuidado isso apaga todos os dados do volume, usar somente na primeira vez para criar o sistema de arquivos ext4. | |
##mkfs -t ext4 /dev/xvdf | |
#Chama funcao para cria diretorio para montagem. | |
createDirectoryMount | |
#Adiciona permissao para qualquer usuario poder gravar. | |
##chmod 777 $MOUNT_DIR | |
#faz backup do fstab original | |
cp /etc/fstab /etc/fstab.original | |
#Adiciona configuracao para o fstab montar na inicializacao, mesmo em caso de reboot. | |
echo "/dev/xvdf $MOUNT_DIR ext4 defaults,nofail 0 2" >> /etc/fstab | |
#Monta volumes, Opcao -a verifica e monta dos os volumes que nao foram montados ainda. | |
mount -a | |
#para o servico docker para poder trocar para o novo volume. | |
echo "Parando Docker --> service docker stop" | |
service docker stop && service docker stop && sleep 5 | |
#Move docker diretorio docker original para backup. | |
echo "Movendo : mv /var/lib/docker --> /var/lib/docker-original" | |
mv /var/lib/docker /var/lib/docker-original | |
#Cria link apontando para o volume. | |
echo "Cria link e apontando para o volume (ln -s $MOUNT_DIR/docker /var/lib/docker)." | |
ln -s $MOUNT_DIR/docker /var/lib/docker | |
#Inicia o servico novamente usando link para o novo diretorio no volume. | |
echo "Iniciando Docker --> service docker start" | |
systemctl daemon-reload | |
systemctl enable docker.service | |
systemctl start --no-block docker.service | |
systemctl is-active docker | |
service docker start && sleep 1 | |
docker version | |
echo "END - MOUNTED IN $MOUNT_DIR" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment