Как мне добавить несколько экземпляров в aws_network_interface_sg_attachment?

#amazon-web-services #terraform #aws-security-group #elastic-network-interface

#amazon-web-services #terraform #aws-security-group #эластичный сетевой интерфейс

Вопрос:

У меня есть следующий код, и я хотел бы присоединить группу безопасности к эластичному сетевому интерфейсу (ENI).

 resource "aws_instance" "foo" {
  # us-west-2
  count = var.instances
  ami           = data.aws_ami.ubuntu.id
  instance_type = "t2.micro"
  key_name = aws_key_pair.deployer.key_name
  subnet_id  = aws_subnet.tf_test_subnet.id
  vpc_security_group_ids  = [ aws_security_group.allow_tls.id ]
}
 
 resource "aws_network_interface_sg_attachment" "sg_attachment" {
  security_group_id    = aws_security_group.allow_tls.id
  network_interface_id = element(aws_instance.foo.*.primary_network_interface_id,0)
}
 

однако после развертывания кода я получаю

 Error: security group sg-060153b203cbaa6d5 already attached to interface ID eni-006293e38b0056a91
 

Я подозреваю, что это может быть из-за значения индекса 0, но я не уверен?

итак, вопрос в том, как я могу перебирать экземпляры и применять группу безопасности к ENI

Ответ №1:

На самом деле ваш шаблон пытается прикрепить его дважды:

  • Один раз как часть атрибута aws_instance resource ’s vpc_security_group_ids ,
  • а затем снова с помощью aws_network_interface_sg_attachment .

В вашем случае вам не нужен aws_network_interface_sg_attachment ресурс.

Комментарии:

1. ах, хорошо, спасибо за это, я не знал, что они одинаковые

2. Да, это может сбивать с толку. Отдельный ресурс вложения может быть полезен, если в противном случае у вас были бы циклические зависимости, чего здесь нет.

3. просто запустил terraform apply код без aws_network_interface_sg_attachment компонента, который работал как шарм, спасибо agian

4. Конечно, рад, что смог помочь