пытается подключить / смонтировать том EBS к экземпляру ECS с помощью terraform - PullRequest
1 голос
/ 03 июня 2019

для ресурса aws_volume_attachment в terraform требуется instance_id ... моя проблема в том, что экземпляр, к которому я хочу подключить том, является частью кластера ECS, и я не могу найти какие-либо умные примеры при передаче идентификатора экземпляра экземпляра в кластера ECS в aws_volume_attachment, чтобы я мог подключить существующий том EBS.

Использование ARN не работает.

resource "aws_volume_attachment" "ebs_att" {
  device_name = "/dev/sdp"
  volume_id   = "${aws_ebs_volume.example.id}"
  instance_id = "${aws_instance.web.id}"
}

EDIT я в основном загрузил скрипт для экземпляров, и моя терраформа выглядела так:

data "template_file" "fleet-boothook" {
  template = "${file("${path.module}/boothook.tpl")}"

  vars {
    ecs_cluster_name = "${aws_ecs_cluster.this.name}"
    ebs_volume_id    = "${var.singleton_cluster_ebs_volume}"
  }
}

1 Ответ

0 голосов
/ 10 июля 2019

Я также прохожу эту проблему, и вывод, который я собираюсь принять, состоит в том, что не существует простого способа сделать это.Этот вывод подтверждается этой проблемой и этой другой .Я видел сторонние решения , подобные этому , но мне неудобно прибегать к сторонним приложениям в моей инфраструктуре.

В отличие от этого репо , который утверждает, чтодостигли способа обеспечить узлы EFS.Я знаю, что это не EBS, но он может обеспечить способ обмена данными между контейнерами и основным экземпляром EC2 независимо от того, в каком конкретном экземпляре работают контейнеры.

Возможно, вы сможете найти способ присоединить существующийEC2 создает кластер, чтобы вы могли лучше контролировать его.Это то, что я, вероятно, собираюсь попробовать, но я понимаю, что это сводит на нет половину цели использования ecs, которая абстрагируется от того, как вы запускаете контейнеры, не заботясь о базовой инфраструктуре хоста.


Редактировать :

Мне удалось создать кластер ECS, в котором во всех экземплярах смонтирован раздел EFS.

  • Создайте том EFS в том же регионе доступности, что и при создании кластера [1].Обязательно создайте его в частной подсети.

  • Измените конфигурацию запуска UserData [2] сценарий для установки amazon-efs-utils [3].Если вы используете оптимизированные для Linux образы Amazon Amazon, просто добавьте в свой скрипт следующее:

  sudo yum install -y amazon-efs-utils
  • Добавьте шаг для создания точки монтирования и монтирования ранее созданной EFSтом в UserData bash script:
  mkdir -p /mnt/efs
  mount -t efs fs-12345678:/ /mnt/efs

Измените fs-12345678 на идентификатор вашего тома EFS.

Полагаю, вы можете выставить том EBS, используя что-то вроде samba, но EFS не требуется обслуживать выделенный экземпляр EC2, он получает днс и может быть смонтирован напрямую.

[1] https://docs.aws.amazon.com/efs/latest/ug/troubleshooting-efs-mounting.html#mount-fails-dns-name

[2] https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html#user-data-shell-scripts

[3] https://docs.aws.amazon.com/efs/latest/ug/using-amazon-efs-utils.html

...