Постоянный запуск сценария Bash на нескольких серверах (локальный, сервер Jumpbox и сервер Dev) - PullRequest
0 голосов
/ 01 ноября 2018

Я написал сценарий bash для создания контейнера Docker (приложения NODE JS), чтобы приложение работало на сервере DEV. Дело в том, что скрипт bash нужно запускать поэтапно на нескольких серверах, т. Е. Нам нужно собрать контейнер Docker локально, от ssh до коробки перехода, и rsync его там, а затем rsync с сервера переходов на сервер dev и затем снова выполните команду ssh (если этот процесс выполняется вручную).

Если вы посмотрите на шаг 5 в сценарии BASH ниже, rsync завершится, и сценарий будет запущен по SSH на сервер jumpbox, однако сценарий остановится там, и я только что вошел в jumpbox.

Может кто-нибудь сообщить мне, что не так с этим bash-скриптом и как мне это исправить?

Заранее спасибо.

Лучшее, R

#!/bin/bash

#This script allows users to deploy the application with minimal work

echo -n "Shall we begin the deployment process? Are you ready to rule the world with QA Hero's next version? `\n` If you are, then type YES and press [ENTER]?: "
read begin

echo "Wohoooo! You did the right thing! We are now ready to roll and you can actually see your terminal scroll! Lol, what a troll!"

echo -n "Yo mate! Can you enter your enumber and press [ENTER]?: "
read enumber

docker build --build-arg NODE_ENV=staging -t course-hero-x -f Dockerfile .

echo "The file has been built! Step 1 completed"

termdown 3

echo "BOOM! Get ready for step 2."

docker save -o course-hero.tar course-hero-x

termdown 3

echo "BOOM! Get ready for step 3."

rsync -avzh --progress --stats course-hero.tar `echo ${enumber}`@10.188.129.25:/home/`echo ${enumber}`

termdown 3

echo "BOOM! Get ready for step 4."

ssh `echo ${enumber}`@10.188.129.25

termdown 3

echo "BOOM! Get ready for step 5."

ls -la

termdown 3

echo "BOOM! Get ready for step 6."

if ["$enumber" == "e30157" || "$enumber" == "E30167"]; then
    rsync -avzh --progress --stats course-hero.tar `echo ${enumber^^}`@10.80.63.65:/home/eh7/`echo ${enumber^^}`
elif ["$enumber" == "e32398" || "$enumber" == "E32398"]; then
    rsync -avzh --progress --stats course-hero.tar `echo ${enumber^^}`@10.80.63.65:/home/eh8/`echo ${enumber^^}`
else
    echo "You cannot access this system."
fi    

termdown 3

echo "BOOM! Get ready for step 7."

ssh `echo ${enumber^^}`@10.80.63.65

echo "BOOM! Get ready for step 8."

ls -la

echo "BOOM! Get ready for step 9."

sudo docker load -i course-hero.tar

termdown 3

echo "BOOM! Get ready for step 10."

sudo docker ps

termdown 3

echo "BOOM! Get ready for step 11."

sudo docker stop $(sudo docker ps -a -q)

termdown 3

echo "BOOM! Get ready for step 12."

sudo docker rm $(sudo docker ps -a -q)

termdown 3

echo "BOOM! Get ready for step 13."

sudo docker load -i course-hero.tar

termdown 3

echo "BOOM! Get ready for step 14."

sudo docker run -d -e TZ=Australia/Melbourne --net=courseHero -p 0.0.0.0:80:3000 course-hero-x

echo "QA Hero is up and running. Go to http://cohero-dev.rmit.edu.au to checkout the latest version!"

termdown 3

echo "Step 15 completed! We are done here! See you next time homey!"

1 Ответ

0 голосов
/ 01 ноября 2018

Когда вы открываете сеанс ssh в другом окне, ваш локальный скрипт останавливается, потому что он ожидает окончания сеанса ssh. Вы просто сидите в командной строке удаленного окна.

Похоже, что вы намерены произойти, это команды после запуска ssh на удаленном компьютере. Чтобы отправить команды на удаленный компьютер, перенаправьте их:

ssh ${enumber}@10.188.129.25 <<'ENDSSH'
# series of commands to 
# run on remote host
ENDSSH

Попробуйте запустить скрипт через Shellcheck & mdash; у вас есть несколько проблем, помимо той, о которой вы спрашивали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...