#! /bin/bash -xe # # Deploy EOSC staging instance # cd terraform && terraform init && terraform apply cd - cp -pv terraform/inventory.yaml inventory/1-safespring.yaml # dynamic DNS ip="$(head -n 1 < terraform/fip.txt)" # shellstate=$(shopt -po xtrace) # set +o xtrace # # https://nsupdate.fedcloud.eu # vault_prefix=secrets/users/e1662e20-e34b-468c-b0ce-d899bc878364@egi.eu/eosc-staging # FEDCLOUD_DYNAMIC_DNS=$(vault read -field data $vault_prefix/FEDCLOUD_DYNAMIC_DNS | grep ^map | head -n 1 | sed 's/map\[\(.*\)\]/\1/') # for auth in $FEDCLOUD_DYNAMIC_DNS; do # echo "curl -i -X GET -u $(echo "$auth" | cut -d: -f1):XXX https://nsupdate.fedcloud.eu/nic/update?myip=$ip" # curl -i -X GET -u "$auth" https://nsupdate.fedcloud.eu/nic/update?myip="$ip" # done # eval "$shellstate" echo "Terraform finished. Check terraform/docker-volume.sh. Continue? (CTRL-C to quit)" read -r _ # wait for ping and ssh for ip in $(cat terraform/hosts.txt); do while ! ping -c 1 "$ip"; do sleep 5; done ssh-keygen -R "$ip" while ! ssh egi@"$ip" -o ConnectTimeout=10 -o PreferredAuthentications=publickey -o StrictHostKeyChecking=no :; do sleep 10; done done # check ssh access ansible -m command -a 'uname -a' allnodes # wait cloud-init ansible -m shell -a 'while ! test -f /var/lib/cloud/instance/boot-finished; do sleep 2; done' allnodes # setup volumes ansible -m copy -a 'src=terraform/nfs-volume.sh dest=/root/ mode=preserve' nfs ansible -m command -a '/root/nfs-volume.sh' nfs ansible -m copy -a 'src=terraform/squid-volume.sh dest=/root/ mode=preserve' 'ingress[0]' ansible -m command -a '/root/squid-volume.sh' 'ingress[0]' # kubernetes ansible-playbook playbooks/k8s.yaml while ansible -i ./inventory -m command -a 'kubectl get pods --all-namespaces' master | tail -n +3 | grep -v ' Running '; do sleep 5; done # docker runtime directory after Kubernetes deployment (problem with unmounts) ansible -m copy -a 'src=terraform/docker-volume.sh dest=/root/ mode=preserve' 'ingress nfs worker gpu' ansible -m command -a '/root/docker-volume.sh' 'ingress nfs worker gpu' ansible-playbook playbooks/squid.yaml ansible-playbook playbooks/cvmfs.yaml # wait for finish while ansible -m command -a 'kubectl get pods --all-namespaces' master | tail -n +3 | grep -v ' Running '; do sleep 5; done