Terraform является декларативным языком, что означает, что сценарий, который вы пишете, сообщает terraform состояние, в которое вы хотите попасть (тогда terraform решает, как туда добраться). Это все равно, что сказать «Я хочу, чтобы вы удостоверились, что у меня есть aws_instance», а не «Я хочу, чтобы вы создали aws_instance».
Если я правильно понимаю, вы, вероятно, стремитесь сделать это:
provider "aws" {
profile = "default"
region = "us-east-1"
}
resource "aws_instance" "example" {
ami = "ami-2757f631"
instance_type = "t2.micro"
}
resource "aws_instance" "example2" {
ami = "ami-2757f631"
instance_type = "t2.micro"
}
Если вы запустите terraform apply
сейчас, у вас будет два экземпляра EC2 независимо от того, сколько было создано сценарием ранее . Это связано с тем, что terraform отслеживает ресурсы, созданные ранее для этого сценария в файле состояния, сравнивает их с текущим сценарием, а затем определяет, какие действия необходимо предпринять, чтобы выстроить их в линию.
В качестве альтернативы,Вы можете использовать параметр count
для получения нескольких копий одного и того же ресурса:
provider "aws" {
profile = "default"
region = "us-east-1"
}
resource "aws_instance" "example" {
count = 2
ami = "ami-2757f631"
instance_type = "t2.micro"
}