Когда terraform применяет aws_spot_fleet_request, как я могу получить частные IP-адреса? - PullRequest
0 голосов
/ 19 мая 2018

Если Terraform применяется, скажем, 6 экземпляров EC2 в качестве целевой емкости, как показано в этом примере :

# Request a Spot fleet
resource "aws_spot_fleet_request" "cheap_compute" {
  iam_fleet_role      = "arn:aws:iam::12345678:role/spot-fleet"
  spot_price          = "0.03"
  allocation_strategy = "diversified"
  target_capacity     = 6
  valid_until         = "2019-11-04T20:44:20Z"

  launch_specification {
    instance_type             = "m4.10xlarge"
    ami                       = "ami-1234"
    spot_price                = "2.793"
    placement_tenancy         = "dedicated"
    iam_instance_profile_arn  = "${aws_iam_instance_profile.example.arn}"
  }

  launch_specification {
    instance_type             = "m4.4xlarge"
    ami                       = "ami-5678"
    key_name                  = "my-key"
    spot_price                = "1.117"
    iam_instance_profile_arn  = "${aws_iam_instance_profile.example.arn}"
    availability_zone         = "us-west-1a"
    subnet_id                 = "subnet-1234"
    weighted_capacity         = 35

    root_block_device {
      volume_size = "300"
      volume_type = "gp2"
    }

    tags {
      Name = "spot-fleet-example"
    }
  }
}

Единственными доступными атрибутами являются 'id' и 'spot_request_state'.

Как вывести частные IP-адреса запущенных экземпляров?

Возможно ли это или мне нужно использовать другой инструмент, такой как Boto3?

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

В терраформе невозможно получить данные об экземплярах спотового флота.

Для нахождения экземпляров, созданных с использованием спотового флота, необходимо написать коды в AWS SDK / boto3.То же самое относится к группам автоматического масштабирования EC2 и кластерам EMR.

Спасибо.

0 голосов
/ 20 мая 2018

Вы можете использовать Data Sources в Terraform.Это позволяет вам по существу выполнять вызовы API для извлечения данных из AWS.Создав свой ресурс, вы можете использовать следующую Terraform -

data "aws_instances" "spot-fleet-ips" {
  instance_tags {
    Name = "spot-fleet-example"
  }
}

. Чтобы получить IP-адреса, вы можете сделать следующее -

"${data.aws_instances.spot-fleet-ips.private_ips}"

Документация для указанного выше источника данных.здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...