Migrate Existing Tasks
Your tasks must first be specified in Terraform using the ecs_task_definition resource so that they can then be converted to use the .
For example, your tasks should be defined with Terraform similar to the following:
The mesh-task
module uses inputs similar to your old ECS task definition but creates a new version of the task definition with additional containers.
The mesh-task
module is used as follows:
module "my_task" {
source = "hashicorp/consul/aws-ecs//modules/mesh-task"
version = "<latest version>"
family = "my_task"
container_definitions = [
{
name = "example-client-app"
essential = true
{
containerPort = 9090
hostPort = 9090
protocol = "tcp"
}
]
cpu = 0
mountPoints = []
volumesFrom = []
]
port = "9090"
}
- You must remove the
execution_role_arn
andtask_role_arn
fields. Themesh-task
module will create the task and execution roles. - You must set the
port
field to the port that your application listens on. If your application has no listening port, setoutbound_only = true
and remove theport
field. - You must add the
retry_join
field. This specifies the location of your Consul servers so that your task can join the mesh. - You must remove the
jsonencode()
function from thecontainer_definitions
field.
The mesh-task
module will create a new version of your task definition with the necessary sidecar containers added so you can delete your existing aws_ecs_task_definition
resource.
Now that your task(s) are migrated to the mesh-task
module,
- Start at the ECS Service section of the Installation Guide to continue installing Consul on ECS.
- Refer to the for all available inputs to your mesh tasks.