如何在AWS中已经存在的Terraform资源中使用(手动创建)?

虾仁的

有没有办法在我的AWS账户中已经存在的Terraform资源中使用这些资源,这些资源是手动创建的?我不想更改它们,说实话,我不想“触摸”它们。我只需要一些用于我所创建环境的资源。例如,vpc和IAM。

我已经读过一些有关导入的信息,但是我不确定这是答案吗?

ydaetskcoR

Terraform有两种使用资源的方式,这些资源位于要应用的上下文或目录之外。

第一个是数据源,它使您可以查找现有资源并将有关它们的信息传递给其他资源。所述aws_ami数据源的文档提供了这种有用的例子:

data "aws_ami" "ubuntu" {
  most_recent = true

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }

  owners = ["099720109477"] # Canonical
}

resource "aws_instance" "web" {
  ami           = "${data.aws_ami.ubuntu.id}"
  instance_type = "t2.micro"

  tags = {
    Name = "HelloWorld"
  }
}

这样,Terraform可以获取与数据源中指定的条件相匹配的现有AMI,选择最新的AMI,然后将AMI的ID传递给aws_instance资源,以便从该AMI构建它。

即使使用Terraform创建所有资源,它也仍然有用,因为它允许您拆分Terraform配置以限制爆炸半径并控制同时更新的内容,同时仍然允许您访问有关这些资源的信息。aws_subnet_ids文档中有提供这个地方的子网,则可能已在不同的上下文或目录到你要创建的实例创建由Terraform一个很好的例子,一个例子:

data "aws_subnet_ids" "private" {
  vpc_id = "${var.vpc_id}"

  tags = {
    Tier = "Private"
  }
}

resource "aws_instance" "app" {
  count         = "3"
  ami           = "${var.ami}"
  instance_type = "t2.micro"
  subnet_id     = "${element(data.aws_subnet_ids.private.ids, count.index)}"
}

使用现有资源的第二种方法是将其导入州这使Terraform可以开始管理现有资源,就像Terraform最初创建它们一样。这样,对Terraform配置所做的任何更改都将在下次运行时应用于现有资源terraform apply这也意味着,如果您运行terraform destroy了该资源,则该资源将被删除。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在C#中手动使用资源(不执行IDE操作)?

如何在手动创建的函数中使用变量名作为参数?

如何在与MySQL相同的查询中使用手动创建的字段?

如何在odoo中创建手动视图?

如何在Python中手动创建稀疏矩阵

如何在Go中手动创建线程?

手动删除 terraform 资源无法使用 terraform 代码删除资源

如何在Api-Platform中手动将资源序列化到Json?

如何在资源文件中手动引用DataGridViewColumn.HeaderText?

通过 terraform 创建资源但如果手动删除则不重新创建?

如何在不手动列出查询中的所有值的情况下使用 SQL 创建分发表?

如何让 consul 在 Helm 中使用手动创建的 PersistentVolumeClaim

使用cloudformation创建的AWS中手动更新的堆栈将来会导致冲突吗?

如何在React / JSX中手动创建的数组中设置密钥?

如何在Yii2中手动在数据库中创建用户?

如何在 Debian 上手动创建 windows pendrive?

如何在Vuex操作中使用手动路由?

如何在 TFS 中使用 TFVC 为构建定义手动选择源分支?

如何在python中使用numpy for循环手动计算相关系数?

如何在Spring MVC中使用HandlerInterceptorAdapter手动处理会话超时

如何在Flutter中使用户手动在地图上设置位置

如何在CloudFormation中获取手动创建的dynamodb表的streamArn

如何在pouchdb中访问手动创建的索引查找

如何在迁移中手动删除和重新创建数据库?

如何在IE10中手动创建msxml文档

如何在Unity中手动编辑/创建新的启动器项目?

如何在 React 钩子中的文本字段上创建引用并手动触发 onclick

如何在 monaco-editor 中手动创建文本模型实例?

如何在Laravel 4中手动创建新的空Eloquent集合