使用 terraform 启动 aws elb 实例
Posted
技术标签:
【中文标题】使用 terraform 启动 aws elb 实例【英文标题】:launching aws elb instace using terraform 【发布时间】:2021-11-15 15:13:10 【问题描述】:我是 terraform 和 aws 的新手,我想做的就是启动一个 aws ec2 实例,该实例带有带有 terraform 的弹性负载均衡器。我从各个站点获得了一些配置示例,但不知道实现这些配置的正确方法是什么,文件夹结构应该是什么以及所有内容。我已经使用 aws 的 GUI 完成了它,但在 terraform 方面没有得到太多帮助。
这里的服务器应该是apache2。
感谢任何帮助。
提前致谢
【问题讨论】:
您能否展示您的 TF 代码并解释为什么它不起作用?有什么错误吗? 我在link 获得了配置代码以及针对不同站点的更多选项,但不知道如何适应这个,基本上我想知道如何从 TF 开始。你能推荐一些我可以开始的网站吗?对不起,如果我不能说清楚我真正想要什么 如果您是 TF 新手,TF 文档有初学者教程。 learn.hashicorp.com/collections/terraform/aws-get-started 我也做了同样的事情,但是我知道我想给它添加负载均衡器(包括如何添加目标组和安全组)我该怎么做 【参考方案1】:根据您创建弹性负载均衡器的要求,使用 terraform。您将需要创建以下资源。 如果您已经创建了 EC2 实例并且只想将它们附加到 ELB。
创建目标组 创建 ELB 将目标组分配给您的 ELB 将现有实例注册到目标组如果您没有创建任何实例,
创建目标组 创建 ELB 将目标组分配给您的 ELB 创建启动模板/配置 创建 ASG,将 ELB 分配给 ASG 通过 ASG 创建的新实例将自动注册到 ELB 目标组。Terraform 资源示例,
启动配置
resource "aws_launch_configuration" "Your_Launch_Configuration"
name = "launch_conf_name"
instance_type = "Instance_Type"
image_id = "AMI_image_id"
key_name = "Key_Name"
security_groups = "security_groups_id"
user_data = "User Data"
iam_instance_profile = "Instance IAM Role"
Auto Scaling 组
resource "aws_autoscaling_group" "Your_ASG"
name = "ASG Name"
launch_configuration = aws_launch_configuration.Your_Launch_Configuration.id
max_size = "Max size"
min_size = "Min Size"
desired_capacity = "Desired Capacity"
vpc_zone_identifier = "Your Subnet List"
tags = [
"key" = "Name"
"value" = "ASG Name"
"propagate_at_launch" = true
]
health_check_grace_period = "300"
target_group_arns = "set of your ELB target Group"
负载均衡器目标组
resource "aws_load_balancer_target_group" "Your_target_group"
name = "Target_group_name"
port = "80"
protocol = "HTTP"
vpc_id = "Your_vpcid"
tags =
name = "Target_group_name"
health_check
enabled = true
interval = 300 # health check interval
protocol = "HTTP"
timeout = 300 # timeout seconds
path = "/" # your health check path
负载平衡器
resource "aws_load_balancer" "your_load_balancer"
name = load_balancer_name
load_balancer_type = "application"
internal = true # if not internet facing
subnets = ["List of your subnet id"]
security_groups = ["List of your security group id"]
tags =
"name" = load_balancer_Target_group_name
负载平衡器列表器
resource "aws_load_balancer_listener" "your_load_balancer_Listner"
load_balancer_arn = listner_load_balancer_arn #arn of your load balancer
port = "80"
protocol = "http"
default_action
target_group_arn = listner_Target_group_arn # arn of your target group
type = "forward"
【讨论】:
谢谢,这就是我一直在寻找的。还有一件事,哪个应该放在哪个文件中以及如何链接所有这些,(文件夹结构应该是什么,哪个文件包含什么,这是主要关注点) 您可以将所有内容放在一个文件中,也可以将它们解耦到单独的文件中用于 ELB,另一个用于 ASG/启动配置。所有文件都应该在您执行 terraform 命令的工作/项目文件夹的根文件夹中,例如,如果您在 c:\workspace 中执行项目,请将所有文件保存在 c:\workspace 中。案例 1(两个不同的文件)c:\workspace -- ASG.tf -- ELB.tf 案例 2:(单个文件)c:\workspace -- main.tf(或任何文件名,但在单个文件中包含所有上述代码) 由于字符限制,在第二条评论中粘贴,引用数据非常容易,例如我们必须在 ASG 中指定启动配置,为此只需提供参考,例如,launch_configuration = aws_launch_configuration.Your_Launch_Configuration。 id 即 .以上是关于使用 terraform 启动 aws elb 实例的主要内容,如果未能解决你的问题,请参考以下文章
当您的实例位于 ELB 之后时,您如何为 AWS 建立维护页面?