Terraform部署到ECS时出现无提示错误


0

我是Terraform的新手,在设置非常基本的配置时遇到了问题。我想要一些可以带来我的东西 “泊坞窗鲸” 图片。从看 Hashicorp AWS docs,似乎我需要一个 “aws_ecs_service” 用的是 “aws_ecs_task_definition”

运用 这个例子 ,我已经创建了以下配置。

variable "access_key" {}
variable "secret_key" {}

provider "aws" {
  alias = "west"
  region = "us-west-1"
  access_key = "${var.access_key}"
  secret_key = "${var.secret_key}"
}

resource "aws_ecs_cluster" "default" {
  name = "whale"
}

resource "aws_ecs_service" "whale-service" {
  name            = "whale-service"
  cluster         = "${aws_ecs_cluster.default.id}"
  task_definition = "${aws_ecs_task_definition.whale-task.arn}"
  desired_count   = 1
}

resource "aws_ecs_task_definition" "whale-task" {
  family = "whale"
  container_definitions = "${file("task-definitions/whale.json")}"
  volume {
    name = "whale-home"
    host_path = "/ecs/whale-home"
  }
}

现在,当我运行terraform apply( access_key& secret_key编辑 ),一切似乎都很好。但我在AWS Web控制台中没有看到相应的ECS群集或任务定义。我错过了什么吗?

$ terraform apply 
provider.aws.region
  The region where AWS operations will take place. Examples
  are us-east-1, us-west-2, etc.

  Default: us-east-1
  Enter a value: 

aws_ecs_task_definition.whale-task: Refreshing state... (ID: whale)
aws_ecs_cluster.default: Creating...
  name: "" => "whale"
aws_ecs_cluster.default: Creation complete
aws_ecs_service.whale-service: Creating...
  cluster:                            "" => "arn:aws:ecs:us-east-1:186598327969:cluster/whale"
  deployment_maximum_percent:         "" => "200"
  deployment_minimum_healthy_percent: "" => "100"
  desired_count:                      "" => "1"
  name:                               "" => "whale-service"
  task_definition:                    "" => "arn:aws:ecs:us-east-1:186598327969:task-definition/whale:1"
aws_ecs_service.whale-service: Creation complete

Apply complete! Resources: 2 added, 0 changed, 0 destroyed.

The state of your infrastructure has been saved to the path
below. This state is required to modify and destroy your
infrastructure, so keep it safe. To inspect the complete state
use the `terraform show` command.

State path: terraform.tfstate

Answers:


0

您还没有在群集中启动任何实例,但我认为您仍然可以在ECS管理器中看到群集。

我从这个文件开始工作: https://github.com/Capgemini/terraform-amazon-ecs/blob/master/ecs.tf

其中有一个Autoscaling组,用于启动集群的实例并使用 user_data 将计算机标记为群集的一部分

/* SSH key pair */
resource "aws_key_pair" "ecs" {
  key_name   = "${var.key_name}"
  public_key = "${file(var.key_file)}"
}

/**
 * Launch configuration used by autoscaling group
 */
resource "aws_launch_configuration" "ecs" {
  name                 = "ecs"
  image_id             = "${lookup(var.amis, var.region)}"
  /* @todo - split out to a variable */
  instance_type        = "${var.instance_type}"
  key_name             = "${aws_key_pair.ecs.key_name}"
  iam_instance_profile = "${aws_iam_instance_profile.ecs.id}"
  security_groups      = ["${aws_security_group.ecs.id}"]
  iam_instance_profile = "${aws_iam_instance_profile.ecs.name}"
  user_data            = "#!/bin/bash\necho ECS_CLUSTER=${aws_ecs_cluster.default.name} > /etc/ecs/ecs.config"
}

/**
 * Autoscaling group.
 */
resource "aws_autoscaling_group" "ecs" {
  name                 = "ecs-asg"
  availability_zones   = ["${split(",", var.availability_zones)}"]
  launch_configuration = "${aws_launch_configuration.ecs.name}"
  /* @todo - variablize */
  min_size             = 1
  max_size             = 10
  desired_capacity     = 1
}

/* ecs service cluster */
resource "aws_ecs_cluster" "default" {
  name = "${var.ecs_cluster_name}"
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.