Search code examples
jenkinsterraformamazon-ecsamazon-efs

Error using EFS in ECS, returns unknown filesystem type 'efs'


I'm using a docker image for jenkins (jenkins/jenkins:2.277.1-lts-alpine) in an AWS ECS, and I want to persist the data using a AWS EFS. I created the EFS and got the ID (fs-7dcef848)

My terraform code looks like:

resource "aws_ecs_service" "jenkinsService" {
    cluster = var.ECS_cluster
    name = var.jenkins_name
    task_definition = aws_ecs_task_definition.jenkinsService.arn
    deployment_maximum_percent = "200"
    deployment_minimum_healthy_percent = 50
    desired_count = var.service_desired_count
    tags = {
      "ManagedBy" : "Terraform"
    }
}

resource "aws_ecs_task_definition" "jenkinsService" {
  family = "${var.jenkins_name}-task"
  container_definitions = file("task-definitions/service.json")
  volume {
    name  = var.EFS_name
    efs_volume_configuration {
      file_system_id = "fs-7dcef848"
    }
  }
  tags = {
      "ManagedBy" : "Terraform"
  }
}

and the service.json

[
  {
    "name": "DevOps-jenkins",
    "image": "jenkins/jenkins:2.284-alpine",
    "cpu": 0,
    "memoryReservation": 1024,
    "essential": true,
    "portMappings": [
      {
        "containerPort" : 8080,
        "hostPort" : 80
      }
    ],
    "mountPoints": [
      {
          "sourceVolume" : "DevOps-Jenkins",
          "containerPath" : "/var/jenkins_home"
      }
      ]
  }
]

The terraform apply works OK, but the task cannot start returning:

Stopped reason Error response from daemon: create ecs-DevOps-jenkins-task-33-DevOps-Jekins-bcb381cd9dd0f7ae2700: VolumeDriver.Create: mounting volume failed: mount: unknown filesystem type 'efs'

  • Does anyone know whats happening?
  • There is another way to persist data?

Thanks in advance.


Solution

  • Solved: The first attempt was to install the "amazon-efs-utils" package using a remote-exec But following the indications provided by @Oguzhan Aygun , I did it on the USER DATA section and it worked! Thanks!