如何使用Terraform部署ElasticBeanstalk

249 阅读3分钟

目录

阅读时间: 4 分钟

读者朋友们大家好!在这篇博客中,我们将看到如何使用terraform部署ElasticBeanstalk。在我之前的博客中,我们已经看到了如何在 Elastic Beanstalk中部署应用程序。在那里我们看到了AWS是如何处理所有底层资源的,所以你不必担心任何事情。你可以专注于编写你的应用程序代码,将其打包并上传。而EBS则负责其基础设施和资源。

先决条件。

  1. 你必须在你的系统中安装terraform。如果你还没有,那么请选择这个博客来安装terraform:https://learn.hashicorp.com/tutorials/terraform/install-cli

它已经成功安装在你的系统中。现在是时候为AWS Elastic beanstalk建立Terraform配置文件了,我们将用它来在AWS云上启动AWS Elastic beanstalk。

所以,让我们开始吧!

第1步:建立一个目录并移动到这个目录。创建一个名为main.tf的文件,将整个内容粘贴在该文件中。为了部署ElasticBeanstalk,我们需要创建一个ElasticBeanstalk应用程序和环境。所以,在这个文件中,我们要创建一个应用程序和环境。

# Create elastic beanstalk application
 
resource "aws_elastic_beanstalk_application" "elasticapp" {
  name = var.elasticapp
}
 
# Create elastic beanstalk Environment
 
resource "aws_elastic_beanstalk_environment" "beanstalkappenv" {
  name                = var.beanstalkappenv
  application         = aws_elastic_beanstalk_application.elasticapp.name
  solution_stack_name = var.solution_stack_name
  tier                = var.tier
 
  setting {
    namespace = "aws:ec2:vpc"
    name      = "VPCId"
    value     = var.vpc_id
  }
  setting {
    namespace = "aws:autoscaling:launchconfiguration"
    name      = "IamInstanceProfile"
    value     =  "aws-elasticbeanstalk-ec2-role"
  }
  setting {
    namespace = "aws:ec2:vpc"
    name      = "AssociatePublicIpAddress"
    value     =  "True"
  }
 
  setting {
    namespace = "aws:ec2:vpc"
    name      = "Subnets"
    value     = join(",", var.public_subnets)
  }
  setting {
    namespace = "aws:elasticbeanstalk:environment:process:default"
    name      = "MatcherHTTPCode"
    value     = "200"
  }
  setting {
    namespace = "aws:elasticbeanstalk:environment"
    name      = "LoadBalancerType"
    value     = "application"
  }
  setting {
    namespace = "aws:autoscaling:launchconfiguration"
    name      = "InstanceType"
    value     = "t2.medium"
  }
  setting {
    namespace = "aws:ec2:vpc"
    name      = "ELBScheme"
    value     = "internet facing"
  }
  setting {
    namespace = "aws:autoscaling:asg"
    name      = "MinSize"
    value     = 1
  }
  setting {
    namespace = "aws:autoscaling:asg"
    name      = "MaxSize"
    value     = 2
  }
  setting {
    namespace = "aws:elasticbeanstalk:healthreporting:system"
    name      = "SystemType"
    value     = "enhanced"
  }
 
}

第二步:之后,我们将在同一目录下创建一个vars.tf文件。顾名思义,这个文件将包含我们将在main.tf文件中引用的所有变量。将以下内容粘贴到你的文件中。

variable "elasticapp" {
  default = "myapplication"
}
variable "beanstalkappenv" {
  default = "myenvironment"
}
variable "solution_stack_name" {
  default = "64bit Amazon Linux 2018.03 v2.10.13 running Python 3.6"
}
variable "tier" {
  default = "WebServer"
}
 
variable "vpc_id" {
    default = "vpc-0dd76a41523810a28"
}
variable "public_subnets" {
    default = ["subnet-091f546a60cdf204f", "subnet-0af22fcd735aea012"]
}

在这个文件中,我提到了应用程序名称、环境名称、解决方案栈名称、层级、vpc_id和公共子网。你可以根据你的需要改变这些字段。如果你不知道该给解决方案堆栈的名称,那么你可以通过列出它来选择。列出解决方案堆栈名称的命令是。

$ aws elasticbeanstalk list-available-solution-stacks

ElasticBeanstalkElasticBeanstalk

Step3: 现在,我们将建立一个名为provider.tf的文件。正如它的名字所暗示的,在这个文件中我们将提到在哪里创建资源。provider.tf文件将验证并允许Terraform连接到AWS云。

provider "aws" {
  region = "ap-south-1"
}

第四步:现在所有的配置都完成了。现在是时候使用terraform命令来部署ElasticBeanstalk了。所以,我们将使用的第一个命令是。

$ terraform init

terraform initterraform init

这将初始化terraform。Terraform被成功初始化了。

第五步:接下来我们将运行以下命令,告诉terraform需要提供哪些资源。

$ terraform plan

terraform planterraform plan

第6步:最后,我们将运行命令,部署我们的ElasticBeanstalk。

$ terraform apply

terraform applyterraform apply

这将需要一些时间,让我们等待。

terraform applyterraform apply

是的,现在已经成功完成了。现在,让我们在AWS控制台检查ElasticBeanstalk。

这是我的ElasticBeanstalk环境。

这是我的应用程序。

当你在你的环境中打开这个网址,你会发现你部署的应用程序。

总结

谢谢你坚持到最后。在这篇博客中,我们已经看到了如何使用terraform部署ElasticBeanstalk。如果你喜欢这篇博客,请通过竖起大拇指表示感谢,并分享这篇博客,同时给我提出建议,告诉我如何改进我未来的文章以满足你的需求。

学习愉快!