首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Terraform部署和重新部署应用程序?

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

Stack Overflow用户
提问于 2016-05-18 18:48:26
回答 3查看 3.7K关注 0票数 4

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

在我的场景中,我们使用Spring Boot构建微服务。我们的想法是转移到一种状态,在这种状态下,我们可以将弹性负载均衡器附加到公共子网,并在私有子网中的自动伸缩组中托管我们的应用程序。但是,我找不到任何关于Terraform的好教程,可以向您展示如何从Jenkins重新部署应用程序。

到目前为止,我已经了解了Opsworks和Code Deploy,所以我需要使用Terraform来设置这些资源,然后触发部署脚本将工件发送到S3,然后重新部署吗?

EN

回答 3

Stack Overflow用户

发布于 2016-05-20 15:11:18

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

票数 2
EN

Stack Overflow用户

发布于 2016-05-31 03:25:33

我正在使用CodeDeploy和Terraform/Chef。我使用的设置是这样的:

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

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

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

代码语言:javascript
复制
resource "aws_iam_instance_profile" "code_deploy" {
    name = "CodeDeploy"
    roles = ["${var.codedeploy_instance_role}"]
}

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

代码语言:javascript
复制
iam_instance_profile = "${aws_iam_instance_profile.code_deploy.id}"
tags {
   CD = "${var.tag_cd}"
}

5)使用Chef (或您的置备程序)在实例上设置CodeDeploy。

然后你就可以像平常一样使用CodeDeploy了。

票数 2
EN

Stack Overflow用户

发布于 2017-10-02 01:08:08

添加它,以便在有人寻找更多信息的情况下,可能会发现这是有用的。

在Peter的解决方案的基础上,我正在设置Terraform的CodeDeploy应用程序/组和Terraform IAM角色。这就是我所拥有的:

代码语言:javascript
复制
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"]
  }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37297355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档