未使用terraform创建ecs实例
所以我试图通过terraform将一个公共托管的docker容器启动到我的ECS中。计划完成无误,启动服务,但ECS实例为空,服务只抱怨没有分配给集群的ECS实例 作为我的基础设施的一部分,我定义了:未使用terraform创建ecs实例,terraform,amazon-ecs,terraform-provider-aws,Terraform,Amazon Ecs,Terraform Provider Aws,所以我试图通过terraform将一个公共托管的docker容器启动到我的ECS中。计划完成无误,启动服务,但ECS实例为空,服务只抱怨没有分配给集群的ECS实例 作为我的基础设施的一部分,我定义了: 专有网络 安全小组 iam角色 ecs集群 使用ALB的ecs服务 考虑到其他一切都启动了,我可以通过ssh连接到ecs(甚至手动拉取并运行docker映像),我非常确定所有的网络都正常,这让我觉得可能是ecs服务和ALB之间的连接 ECS服务: locals { application_
- 专有网络
- 安全小组
- iam角色
- ecs集群
- 使用ALB的ecs服务
locals {
application_name = "${var.environment}-kafka"
}
resource "aws_ecs_service" "kafka" {
name = "${local.application_name}"
iam_role = "${var.iam-role_arn}"
cluster = "${var.ecs-cluster_id}"
task_definition = "${aws_ecs_task_definition.kafka_definition.arn}"
desired_count = "${var.count_kafka}"
deployment_minimum_healthy_percent = "${var.deployment_min_healthy_percent}"
deployment_maximum_percent = "${var.deployment_max_percent}"
depends_on = ["aws_alb_listener.kafka-alb-listener"]
load_balancer {
target_group_arn = "${aws_alb_target_group.kafka-alb-target-group.arn}"
container_port = 80
container_name = "kafka"
}
lifecycle {
create_before_destroy = true
}
}
resource "aws_ecs_task_definition" "kafka_definition" {
family = "${var.environment}_kafka"
container_definitions = "${data.template_file.kafka_task.rendered}"
lifecycle {
create_before_destroy = true
}
}
data "template_file" "kafka_task" {
template= "${file("${path.module}/kafka_task_definition.tpl")}"
vars {
kafka_docker_image = "${var.kafka-docker-image_name}:${var.kafka-docker-image_tag}"
}
}
ALB:
您可能还没有将实例添加到集群中 用户_data.sh:
#!/bin/bash
echo ECS_CLUSTER='${ecs_cluster_name}' > /etc/ecs/ecs.config
在地形配置中:
data "template_file" "user_data" {
template = "${file("user_data.sh")}"
vars {
ecs_cluster_name = "${var.ecs_cluster_name}"
}
}
resource "aws_launch_configuration" "current" {
...
user_data = "${data.template_file.user_data.rendered}"
...
}
我花了两天的时间试图解决这个问题。令人烦恼的是,我已经拥有了所有这些,但是因为我已经硬编码了用户数据,所以我在ecs.config中的ecs\u cluster\u名称和资源上的实际ecs-cluster.name是不同的。非常感谢,我不会发现这个错误。谢谢你的回答,这也是我的解决方案:)请注意,对于TF0.12.0,它是
user\u data=templatefile(“user\u data.sh”,{ecs\u cluster\u name=var.ecs\u cluster\u name})
data "template_file" "user_data" {
template = "${file("user_data.sh")}"
vars {
ecs_cluster_name = "${var.ecs_cluster_name}"
}
}
resource "aws_launch_configuration" "current" {
...
user_data = "${data.template_file.user_data.rendered}"
...
}