gpt4 book ai didi

amazon-web-services - 如何使用Terraform在现有VPC中启动EC

转载 作者:行者123 更新时间:2023-12-04 17:15:53 25 4
gpt4 key购买 nike

我需要在现有的AWS VPC中使用Terraform创建多个新的EC2,RDS等。以及现有子网,安全组,IAM等。它们不是Terraform创建的。它是手动创建的。

我听说正确的方法是使用Terraform导入(正确吗?)。为了测试terraform导入的工作方式,我首先测试了如何导入现有EC2而不是现有VPC,因为我不想意外更改现有VPC中的任何内容。

运行前

terraform import aws_instance.example i-XXXXXXXXXX

看来我需要在ec2.tf文件中创建非常详细的EC2资源,例如:
resource "aws_instance" "example" {
iam_instance_profile = XXXXXXXXXX
instance_type = XXXXXXX
ami = XXXXXXX
tags {
Name = XXXXX
Department = XXXX
....
}
}

如果我只写:
resource "aws_instance" "example" {
}

它表明我错过了ami和实例类型,

如果我写:
resource "aws_instance" "example" {
instance_type = XXXXXXX
ami = XXXXXXX
}

然后运行“terraform apply”
将现有EC2的标签更改为空,将IAM配置文件更改为空。

我还没有尝试过如何导入现有的vpc,子网,安全组。恐怕如果尝试,我必须放入许多有关现有vpc,子网,安全组等的信息。我的系统很复杂。

是否需要在Terraform代码中指出这么多的细节?有没有办法让我只是简单地指出现有 Material 的ID(例如vpc的ID),然后根据现有ID创建我的新 Material ?某物喜欢:
data "aws_subnet" "public" {
id = XXXXXXX
}

resource "aws_instance" "example" {
instance_type = "t2.micro"
ami = "${var.master_ami}"
......
subnet_id = "${aws_subnet.public.id}"
}

最佳答案

您可以在导入期间将资源主体保留为空白,但是一旦导入,则需要返回并填写特定的详细信息。您可以使用terraform show命令查看导入的资源,并填写所有资源详细信息,因此,当您尝试运行terraform plan时,它不应显示任何更改。

但是,要回答您的问题,是的,您可以使用现有资源而不必导入它们。只需创建一个变量文件,其中包含新资源所需的现有资源ID,然后可以引用所需的ID。

因此,您可以拥有一个.vars文件,其中包含以下内容:

variable "ami_id" {
description = "AMI ID"
default = "ami-xxxxxxxx"
}

variable "subnet_prv1" {
description = "Private Subnet 1"
default = "subnet-xxxxxx"
}

然后在main.tf中创建资源:
resource "aws_instance" "example" {
instance_type = "t2.micro"
ami = "${var.ami_id}"
......
subnet_id = "${var.subnet_prv1}"
}

只是一种解决方法。还有其他一些,您可以在 the terraform docs for variables中阅读

关于amazon-web-services - 如何使用Terraform在现有VPC中启动EC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47665428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com