>source

Terraform을 통해 서로 IP 주소를 인식하는 3 개의 aws_instance를 인스턴스화하려고합니다. 이것은 물론 순환 종속성이 발생합니다. 이 문제를 극복하는 가장 좋은 방법이 무엇인지 궁금했습니다. 몇 가지 해결책을 시도했습니다.

  • 2 개의 인스턴스를 함께 인스턴스화 한 다음 2 개의 인스턴스에 종속 된 1 개의 인스턴스를 인스턴스화합니다. 세 번째 인스턴스에서 인스턴스가 필요한 구성을 설정하기 위해 다른 2 개의 인스턴스로 ssh 할 수 있도록하는 user_data 스크립트가 있습니다.
  • 작동하지만 3 개의 인스턴스가 모든 의도와 목적을위한 init 이후 동일하더라도 2 개의 별개의 리소스 그룹을 생성한다는 사실이 마음에 들지 않습니다.

    1. 3 개의 인스턴스를 동시에 인스턴스화 한 다음 필요한 구성을 설정하기 위해 각 인스턴스에 ssh하는 것이 유일한 목적인 다른 인스턴스를 인스턴스화합니다. 초기화가 완료되면 추가 인스턴스가 자체적으로 종료되어야합니다.
    2. 또한 작동하지만 terraform은 네 번째 리소스를 종료 된 리소스로보고 업데이트가있을 때마다 다시 생성하려고 시도하므로 매우 깨끗하지 않습니다.

      권장 사항이 있습니까? 감사.

      편집하다:

      다음은 순환 종속성을 설명하기 위해 remote-exec에서 작동하지 않는 시도입니다.

      resource "aws_instance" "etcd" {
        count           = 3
        ami             = data.aws_ami.ubuntu.id
        instance_type   = "t3.micro"
        subnet_id       = module.vpc.public_subnets[count.index].id
        provisioner "remote-exec" {
          inline = [
            "echo ${aws_instance.etcd[0].private_ip}",
            "echo ${aws_instance.etcd[1].private_ip}",
            "echo ${aws_instance.etcd[2].private_ip}"
          ]
        }
      }
      
      

    • 답변 # 1

      의견을 기반으로합니다.

      remote-exec를 사용하여 세 인스턴스에서 코드를 실행할 수 있습니다.모두 프로비저닝 된 후. 그들 중 세 명에게 ssh하기 위해서는 그러한 스크립트를 개발해야합니다.

      그러나, 당신은 당신의 remote-exec 세 번째 인스턴스가 가동 된 후 스크립트. 이는 인스턴스에 의존하는 null_resoruce를 사용하여 달성 할 수 있습니다.

      null_resource를 사용하는이 방법은 리소스가없는 제공자에 설명되어 있습니다.

  • 이전 python 3.x - 쿠키가 수시로 변경 될 때 http 요청 보내기
  • 다음 집계를 사용하는 동안 정렬과 관련된 MongoDb 문제