Estou tentando iniciar uma instância com o endereço IP privado 172.31.32.101 usando o Terraform em minha VPC padrão (CIDR 172.31.0.0/16), na sub-rede eu-west-1a que tem o CIDR 172.31.32.0/ 20 Eu normalmente posso fazer isso sem nenhum problema, mas cada vez mais eu acho que terraform apply
falha com o seguinte erro:
* Error launching source instance: InvalidParameterValue: Address 172.31.32.101 does not fall within the subnet's address range
status code: 400, request id: []
Eu suspeito que, como isso funciona pelo menos parte do tempo, é um problema com AWS ou Terraform, mas eu admito que meu conhecimento de blocos CIDR (especialmente o / x em o final) é um pouco deficiente. No entanto, eu verifiquei esta calculadora de sub-rede e vi que o IP estou passando para o instância pelo menos deve ser válida.
A AWS falhou por algum outro motivo, e. Eu estou tentando levantar muitos casos em um período muito curto de tempo, e Terraform está me dando o erro errado? Ou o IP que estou passando realmente é inválido?
EDIT - Código abaixo:
instances.tf:
resource "aws_instance" "mgmt-jump" {
ami = "${lookup(var.amis, var.region)}"
instance_type = "t2.micro"
key_name = "${var.key_pair}"
security_groups = ["${aws_security_group.mgmt-jump-sg.name}"]
count = "${var.mgmt_jump_count}"
private_ip = "${lookup(var.mgmt_jump_private_ips,count.index)}"
tags {
Name = "mgmt-jump-${count.index+1}"
category = "dec"
environment = "management"
role = "jump"
}
}
variables.tf:
variable "region" {
default = "eu-west-1"
}
variable "amis" {
default = {
# AMIs for Ubuntu 14.04
eu-west-1 = "ami-47a23a30"
eu-west-2 = "ami-accff2b1"
}
}
variable "mgmt_jump_count" {
default = "1"
}
variable "mgmt_jump_private_ips" {
default = {
"0" = "172.31.32.101"
"1" = "172.31.32.102"
}
}
EDIT 2: Eu corri o seguinte comando para trazer a instância com o AWS CLI, o que teria sucesso se não fosse pelo sinalizador dry run, então acredito que isso pode ser um problema com o Terraform.
➜ ~ aws ec2 run-instances --image-id ami-47a23a30 --private-ip-address 172.31.32.101 --instance-type t2.micro --dry-run
A client error (DryRunOperation) occurred when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.
De qualquer maneira, não estou usando o VPC padrão agora, embora esteja usando os mesmos blocos CIDR descritos acima, e descobri que não encontro mais o problema. Dito isto, estou agora elevando meu host de salto com o endereço IP 172.31.0.6 em vez de 172.31.32.101, então talvez seja por isso que não estou encontrando o problema.