【问题标题】:Bash script to deploy to server via SSH through jump server [duplicate]Bash脚本通过跳转服务器通过SSH部署到服务器[重复]
【发布时间】:2018-11-28 13:56:08
【问题描述】:

我有一个 Node.js 服务器(使用 PM2 管理)托管在运行 Ubuntu 16.04 的 EC2 实例上。要访问我的应用服务器并更新代码,我需要先 SSH 到跳转服务器,然后 SSH 到应用服务器,从 GitLab 拉取最新代码,然后通过 PM2 重新启动服务器。

流程如下:

$ ssh -i access_jump_server.pem ubuntu@11.11.111.111
$ ssh -i /home/ubuntu/access_application_server.pem ubuntu@222.22.22.22
$ cd app-server
$ git pull origin master
$ pm2 restart ../ecosystem.config.js

应用服务器 (222.22.22.22) 只能从跳转服务器访问,由于存在安全限制,其他任何地方都无法访问。

如何使用 bash 脚本自动执行这些任务,以便通过 GitLab CI 启用持续部署?

【问题讨论】:

    标签: bash ssh gitlab continuous-deployment pm2


    【解决方案1】:

    如何使用 bash 脚本自动执行这些任务,以便通过 GitLab CI 启用持续部署?

    如果您可以将这些命令放入 bash 脚本并使其在您的 GitLab 代理上成功运行(GitLab CI 将执行您想要的任何任务),那么这足以实现该流程自动化。

    【讨论】:

    • 我以相同的顺序将这些命令添加到我的 bash 脚本中,但只执行了第一个命令(SSH 进入跳转服务器),然后什么也没有发生。有没有办法在这个新环境中运行第二个命令以及环境中的所有后续命令(通过跳转服务器通过 SSH 进入服务器)?谢谢!
    • @DakshShah 仅当 SSH 会话是交互式会话时,它不在 GitLab-CI 管道中。另一种方法是只执行一个命令:一个脚本,其中包含您需要的所有命令。
    • 谢谢,但我已将这些命令添加到 macOS 上的本地 bash 脚本中。在第一个命令之后它仍然停止并且没有任何反应。
    • @DakshShah 命令,你的意思是 cd、git pull 和 pm2?
    • 是的,没错。甚至第二个 ssh 命令也没有运行。 cd、git pull 和 pm2 命令应该在第二个 ssh 命令之后在新环境中运行。
    猜你喜欢
    • 2018-01-28
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 2018-07-15
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多