在AWS VPC私有实例上远程执行脚本

时间:2015-08-07 06:31:23

标签: bash shell amazon-vpc

我正在使用GoCD在VPC内建立项目的持续集成和部署到AWS EC2实例(同样可以 也在詹金斯尝试)。理想情况下,我想从我的GoCD系统触发构建,分发和部署/重启项目。 我能够在VPC中构建和分发项目到私有实例。但是我在私有项目上重新启动项目时遇到了问题 实例。我的项目是基于java [dropwizard]的微服务项目。

重新启动以下是我迄今为止所做的事情:

1-在目标私有实例上安装restart.sh脚本以停止并重新启动项目。

#!/bin/sh
BASE_DIR=/home/ubuntu/project
PROJECT=my_deployment_test

# Kill the existing API service
echo "Stopping test Server instance"
#sudo pkill -f 'my_deployment_test.jar'

echo "Starting my_deployment_test"
# Start API Services
sudo /usr/bin/java -cp "$BASE_DIR/$PROJECT/lib/*:$BASE_DIR/$PROJECT" -jar $BASE_DIR/$PROJECT/my_deployment_test.jar  server $BASE_DIR/$PROJECT/conf.yml &

在私有实例中本地运行时,此脚本正常工作。它正在扼杀现有流程并启动项目。

2-在public / NAT实例中有一个remoteRestart.sh脚本,我可以通过该脚本触发私有实例中的上述restart.sh

ssh -i private_key.pem user@host /home/ubuntu/project/my_deployment_test/restart

如果以上脚本有效,那么我将在GoCD中执行一个任务,在内部将在公共/ NAT实例上执行remoteRestart.sh 在私人场所重启项目。

但是,我在公共/ NAT实例本身上执行remoteRestart.sh时遇到问题。 在控制台中我可以看到echo语句的输出。私有实例上的早期项目进程也被杀死但是 项目没有开始。

有一个选项可以使用S3来分发使用AWS代码部署服务,但我发现[对于我的情况],每次我需要部署时都不需要在s3上存储所有项目项。

上面的脚本我可能会出错。还有其他选择吗?

感谢

Divya Dyuti

1 个答案:

答案 0 :(得分:0)

当会话断开连接时,脚本可能会被杀死。尝试将脚本作为后台(&)进程运行,或通过at now将其移除。