>> Apresentação:
Fala galera, hoje vou postar um script para fazer backup do rancher no filesystem e no GIT. Bom, resolvi desenvolver o script pois estava com muitos problemas de esquecimento, sempre que eu ou o artiqueto de sistemas criava um stack eu tinha que adicionar os composes no git na mão, e isso estava ficando bem chato, então resolvi automatizar.
>>Pré-requisitos:
- linux
- git instalado e repositório local configurado e pronto para fazer pull das branches
- json_reformat
- curl
- wget
Para que o script funcione corretamente é necessário substituir as credenciais do RANCHER e do GIT. O primeiro script faz o download dos arquivos no S.O:
#!/bin/bash DIR="/Rancher-compose" rm -rf $DIR/* #USER is Rancher API User USER="UUUUUUUUUUUUUUU" #PASS is Rancher API Password, or key PASS="PPPPPPPPPPPPPPPPPPPPPPPP" #KEY is a combination of USER+PASS KEY="$USER:$PASS" #rancher ip and rancher port SOCKET="RANCHER_IP:RANCHER_PORT" #ENVs will create a list with all rancher environments ENVs=$(curl -s -XGET -u $KEY http://$SOCKET/v1/projects | json_reformat | egrep '\bid\b' | awk -F: '{print $2}' | tr -d '",') #DATE will set a branch name, so we have a branch name based in timestamp DATE=$(date +%d%m%Y%k%M) #BRANCHKEEP is the number of branches what you need keep BRANCHKEEP=4 mkdir -p "$DIR" for i in `echo $ENVs` do #ENVNAME we take a ENV id and get name, to create a environment directory with human readable name ENVNAME=$(curl -s -XGET -u $KEY http://$SOCKET/v2-beta/projects/$i | json_reformat | grep name | awk -F: '{print $2}' | tr -d '",' | sed -e 's@ @@g') #print ENVNAME echo $ENVNAME echo " " #STACKs make a list with all stacks id from each environment STACKs=$(curl -s -XGET -u $KEY http://$SOCKET/v2-beta/projects/$i/stacks | json_reformat | grep -b1 '"type": "stack"' | grep id | awk '{print $3}' | tr -d '",' | sed -e 's@ @@g') for x in `echo $STACKs` do #STACKNAME, take a STACK name from stack id, to create a stack directory with human readable name STACKNAME=$(curl -s -XGET -u $KEY http://$SOCKET/v2-beta/projects/$i/stacks/$x | json_reformat | egrep '"name"' | awk -F: '{print $2}' | tr -d '",' | sed -e 's@ @@g' ) #create directories mkdir -p "$DIR/$ENVNAME/$STACKNAME" #download .zip compose wget -q --user=$USER --password=$PASS http://$SOCKET/v2-beta/projects/$i/stacks/$x/composeconfig -P $DIR/$ENVNAME/$STACKNAME #unzip files unzip -q -o $DIR/$ENVNAME/$STACKNAME/composeconfig -d $DIR/$ENVNAME/$STACKNAME #remove ziped files rm -rf $DIR/$ENVNAME/$STACKNAME/composeconfig #print stackname echo $STACKNAME done echo -e '\n\n' done
Para Gerar uma Branch e fazer o pull no git, basta adicionar o segundo
script no final do primeiro script:
cd $DIR git add --all git commit -m "$DATE" if [ $? == 0 ];then git checkout -b $DATE git add --all git commit -m "$DATE" git push -u origin $DATE else echo "no changes" fi #at LASTBRANCHES you need set your git hub project id, im my case it is 12 LASTBRANCHES=$(curl -XGET -s --header 'PRIVATE-TOKEN: XXXXXXXXXXXXXXX' http://git.server.org/api/v4/projects/12/repository/branches | json_reformat | egrep '\bname\b' | awk '{print $2}' | tr -d '",' | egrep -v '(master|stable)' | sort | tac | tail -n+$BRANCHKEEP) echo $LASTBRANCHES for y in `echo $LASTBRANCHES` do git push origin --delete $y done
Agora basta agendar o script para rodar quando for necessário.
Por enquanto é isso!
se tiver dúvidas pode me chamar por email.
Abraços e até mais!!!
Deixe um comentário