【问题标题】:How to deploy maven project in aws ec2 instance without pem file如何在没有pem文件的aws ec2实例中部署maven项目
【发布时间】:2019-12-28 14:01:02
【问题描述】:

在我之前的question 中,我通过使用带有 PEM 文件的 SSH 解决了使用 Gitlab CI/CD 在 AWS EC2 实例上部署 Maven 项目的问题,但我在 Internet 上了解到提交Git 存储库中的 .pem 文件。那么在不使用 pem 文件的情况下,我必须如何更改才能在 aws 上部署我的应用程序。

我正在尝试关注这个tutorial,但这里的应用程序是用 node.js 编写的,而我的应用程序是用 maven 构建的,所以我需要更改什么?

【问题讨论】:

    标签: amazon-web-services maven amazon-ec2 gitlab gitlab-ci


    【解决方案1】:

    使用什么语言编写应用程序并不重要。教程是正确的:你应该使用GitLab CI/CD environment variables来存储密钥等秘密。

    变量在构建时作为环境变量公开。你可以像这样使用它们:

    production:
      stage: deploy
      image: alpine/latest
      variables:
        GIT_STRATEGY: none
      before_script:
        - eval $(ssh-agent -s)
        - echo "$DEPLOY_KEY" | tr -d '\r' | ssh-add - > /dev/null
      script:
        - ./deploy # This script uses SSH to deploy things
        - ssh-agent -k
    

    【讨论】:

    • 在教程中,repo 被克隆到 AWS 实例中。在我的构建阶段之后,我只想在我的 AWS 实例中部署工件。所以我编辑了 updateAndRestart.sh 文件。我删除了所有东西,然后以这种方式放置了一个 scp 命令:scp ./target/*.jar ubuntu@$DEPLOY_SERVERS:*.jar 但这给了我错误:ssh: Could not resolve hostname : Name or service not know
    • 您是否为目标主机创建了DEPLOY_SERVERS 变量?您是否将实例的 public 主机/IP 放入该变量中?
    • 是的。我也尝试直接写公共 DNS 名称,但出现错误:Host key verification failed
    猜你喜欢
    • 1970-01-01
    • 2020-04-16
    • 2019-09-16
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多