当前位置: 首页 > 知识库问答 >
问题:

如何使用Terraform部署和重新部署应用程序?

姚俊贤
2023-03-14

我正在研究Terraform以及如何使用它来设置AWS环境。到目前为止,我已经有了用3个公共子网、3个私有子网、一个互联网网关和3个Nat网关设置VPC的脚本。然而,我对如何在私有子网中部署和重新部署应用程序感到困惑?

在我的场景中,我们使用Spring Boot构建微服务。我们的想法是转移到一种状态,在这种状态下,我们可以将弹性负载平衡器连接到公共子网,并在私有子网中的自动缩放组中承载我们的应用程序。然而,我找不到任何关于Terraform的好教程,这些教程向您展示了如何以一种可以从Jenkins重新部署应用程序的方式来实现这一点。

到目前为止,我已经阅读了关于Opsworks和代码部署的内容,那么我是否需要使用Terraform来设置这些资源,然后触发部署脚本,将人工制品发送到S3,然后重新部署?

共有3个答案

陈增
2023-03-14

如果有人想了解更多信息,那么添加这些信息可能会很有用。

基于Peter的解决方案,我正在从Terraform设置CodeDeploy IAM角色和CodeDeploy应用程序/组。以下是我所拥有的:

resource "aws_iam_role" "codedeploy_role_name" {
  name = "codedeploy_role_name"

  assume_role_policy = <<EOF
{
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": {
          "Service": [
            "codedeploy.amazonaws.com",
            "ec2.amazonaws.com"
          ]
        },
        "Action": "sts:AssumeRole"
      }
    ]
}
EOF
}

resource "aws_codedeploy_app" "analytics_app" {
  name = "analytics_app"
}

resource "aws_codedeploy_deployment_config" "analytics_deployment_config" {
  deployment_config_name = "analytics_deployment_config"

  minimum_healthy_hosts {
    type  = "HOST_COUNT"
    value = 2
  }
}

resource "aws_codedeploy_deployment_group" "analytics_group" {
  app_name              = "${aws_codedeploy_app.analytics_app.name}"
  deployment_group_name = "analytics_group"
  service_role_arn      = "${aws_iam_role.codedeploy_role_name.arn}"
  deployment_config_name = "analytics_deployment_config"

  ec2_tag_filter {
    key   = "CodeDeploy"
    type  = "KEY_AND_VALUE"
    value = "analytics"
  }

  auto_rollback_configuration {
    enabled = true
    events  = ["DEPLOYMENT_FAILURE"]
  }

}
鄂伟兆
2023-03-14

我正在使用Terraform/Chef的CodeDeploy。我使用的设置如下所示:

1)提前手动设置CodeDeploy IAM角色。

2) 提前设置CodeDeploy应用程序/组。

3) 使用Terraform设置实例配置文件,如下所示:

resource "aws_iam_instance_profile" "code_deploy" {
    name = "CodeDeploy"
    roles = ["${var.codedeploy_instance_role}"]
}

4)创建实例时,使用实例配置文件和正确的标记(与CodeDeploy应用相匹配),如下所示:

iam_instance_profile = "${aws_iam_instance_profile.code_deploy.id}"
tags {
   CD = "${var.tag_cd}"
}

5)使用Chef(或任何您的预配器)在实例上设置CodeDeploy。

那么你就可以像平常一样使用CodeDeploy了。

司马彬
2023-03-14

对于部署/重新部署,可以使用Hashicorp的另一个解决方案:Nomad。它使用与Terraform相同的语言来编程可以在集群上运行的任务。任务可以是任何东西,例如:重新部署我的所有Web应用实例。

 类似资料:
  • Requirements 运行一个Spark Streaming应用程序,有下面一些步骤 有管理器的集群-这是任何Spark应用程序都需要的需求,详见部署指南 将应用程序打为jar包-你必须编译你的应用程序为jar包。如果你用spark-submit启动应用程序,你不需要将Spark和Spark Streaming打包进这个jar包。 如果你的应用程序用到了高级源(如kafka,flume),你需

  • 问题内容: JAX-RS 1.1规范在第6页上说: 如果不存在Application子类,则必须将添加的servlet命名为: 添加的servlet是什么?可以是任意servlet吗? 如果存在Application子类,并且已经定义了一个servlet,该servlet的servlet初始化参数为: 同样,这里的“ servlet”是什么? 如果存在不由现有Servlet处理的Applicati

  • 注 这一章可以有时有点难打通。 坚持并完成它 ;部署是在网站开发过程的重要组成部分。 这一章放在本教程的中部,因此你的指导者可以帮助你在使网站上线中的一些小困难。 这意味着如果您花大量的时间,你仍然能独立完成这个教程。 到目前为止您的网站只是在您的计算机上可用,现在您将了解如何部署它 ! 部署是在互联网上发布你的应用程序的一系列过程,因此人们最终可以一起去看看你的应用程序。 正如你所学习的,一个网

  • 为了使用 Electron 部署你的应用,您需要进行打包和重塑。这样做的最简单的方法是使用以下第三方打包工具之一: electron-forge electron-builder electron-packager 这些工具将覆盖发布一个Electron应用所需采取的所有步骤,例如,打包应用程序,重组可执行程序,设置图标和可配置的创建安装程序。 Application Distribution T

  • 程序开发完毕之后,我们现在要部署Web应用程序了,但是我们如何来部署这些应用程序呢?因为Go程序编译之后是一个可执行文件,编写过C程序的读者一定知道采用daemon就可以完美的实现程序后台持续运行,但是目前Go还无法完美的实现daemon,因此,针对Go的应用程序部署,我们可以利用第三方工具来管理,第三方的工具有很多,例如Supervisord、upstart、daemontools等,这小节我介

  • 概览 要使用 Electron 分发你的应用,需要打包并重命名它。 为此,您可以使用专用工具或手动方法。 专用工具 您可以使用以下工具来分发您的应用程序: electron-forge electron-builder electron-packager 这些工具将自动进行所有的步骤,例如,打包您的应用程序,重组可执行文件,并设置正确的图标。 您可以查看 快速上手指南 中如何用 electron-