Как создать EFS в нескольких зонах доступности с помощью Terraform (AWS)

Я запустил два экземпляра ec2 в двух зонах доступности, и мне нужно смонтировать efs в обоих экземплярах, используя terraform.

resource "aws_efs_file_system" "magento-efs" {
   creation_token = "efs-demo"
   performance_mode = "generalPurpose"
   throughput_mode = "bursting"
   encrypted = "true"
 tags = {
     Name = "Magento-EFS"
   }
 }

resource "aws_efs_mount_target" "efs-mount" {
   file_system_id  = "${aws_efs_file_system.magento-efs.id}"
   subnet_id = "${aws_subnet.public_subnet.0.id}"
   security_groups = ["${aws_security_group.efs-sg.id}"]
}

используя приведенный выше код, я могу создать efs в us-east-1a. Мне нужно сделать его доступным как в us-east-1a, так и в us-east-1b


person Muneesh DuRaipandi    schedule 18.08.2019    source источник


Ответы (2)


Вам просто нужно добавить еще одну цель монтирования в подсети в AZ us-east-1b:

resource "aws_efs_mount_target" "efs-mount-b" {
   file_system_id  = "${aws_efs_file_system.magento-efs.id}"
   subnet_id = "${aws_subnet.public_subnet.1.id}"
   security_groups = ["${aws_security_group.efs-sg.id}"]
}

Более элегантно (с использованием count в зависимости от количества подсетей):

resource "aws_efs_mount_target" "efs-mount" {
   count = "length(aws_subnet.public_subnet.*.id)"
   file_system_id  = "${aws_efs_file_system.magento-efs.id}"
   subnet_id = "${element(aws_subnet.public_subnet.*.id, count.index)}"
   security_groups = ["${aws_security_group.efs-sg.id}"]
}
person StephenKing    schedule 18.08.2019
comment
Благодарим вас за ответ, однако вы получаете ошибку ниже, как в ссылке imagizer.imageshack.com/img922 /856/alRoep.png - person Muneesh DuRaipandi; 18.08.2019
comment
Я могу создать новую цель, используя вышеизложенное. Большое спасибо за вашу своевременную помощь !!! - person Muneesh DuRaipandi; 18.08.2019
comment
Приятно читать, что вы это исправили. Не стесняйтесь исправлять опечатку в моем коде. - person StephenKing; 19.08.2019
comment
Поскольку эта угроза устранена, отметьте вопрос знаком галочки. Спасибо! - person StephenKing; 19.08.2019
comment
конечно я сделаю это - person Muneesh DuRaipandi; 19.08.2019

Я использую версию terraform 0.14.10. Это сработает.

resource "aws_efs_mount_target" "efs-mount-a" {
   file_system_id  = aws_efs_file_system.magento-efs.id
   subnet_id = aws_subnet.public_subnet.0.id
   security_groups = [aws_security_group.efs-sg.id]
}

resource "aws_efs_mount_target" "efs-mount-b" {
   file_system_id  = aws_efs_file_system.magento-efs.id
   subnet_id = aws_subnet.public_subnet.1.id
   security_groups = [aws_security_group.efs-sg.id]
}
person Kai    schedule 17.04.2021