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

Execute script remotely on AWS VPC private instance

我正在使用 GoCD 将项目持续集成和部署到 VPC 内的 AWS EC2 实例上(同样可以 也可以在 Jenkins 中试用)。理想情况下,我想从我的 GoCD 系统触发构建、分发和 deploy/restart 项目。 我能够构建项目并将其分发到 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 中执行一个任务来执行 public/NAT 实例上的 remoteRestart.sh,内部将 私自重启项目。

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

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

上面的脚本可能哪里出错了。还有其他选择吗?

谢谢

迪夫亚·杜蒂

脚本可能在会话断开时被终止。尝试 运行 将脚本作为后台 (&) 进程或通过 at now.

将其移交