命令:import
tofu import
命令将现有资源 导入 到 OpenTofu 中。
用法
用法:tofu import [选项] ADDRESS ID
导入将从 ID 中查找现有资源,并将其导入到给定 ADDRESS 处的 OpenTofu 状态中。
ADDRESS 必须是有效的 资源地址。由于任何资源地址都是有效的,因此导入命令可以将资源导入到模块中,也可以直接导入到状态的根目录中。
ID 取决于要导入的资源类型。例如,对于 AWS EC2 实例,它是实例 ID (i-abcd1234
),但对于 AWS Route53 区域,它是区域 ID (Z12ABC4UGMOZ2N
)。有关 ID 格式的详细信息,请参阅提供程序文档。如果您不确定,可以随意尝试一个 ID。如果 ID 无效,您只会收到错误消息。
OpenTofu 预期它管理的每个远程对象都将绑定到唯一的资源地址,这通常由 OpenTofu 本身创建所有对象来保证。如果您将现有对象导入到 OpenTofu,请注意仅将每个远程对象导入到一个 OpenTofu 资源地址。如果您多次导入同一个对象,OpenTofu 可能会出现意外行为。有关此假设的更多信息,请参阅 状态部分。
命令行标志都是可选的。以下标志可用
-
-config=path
- OpenTofu 配置文件的目录路径,用于配置导入的提供程序。默认为您的工作目录。如果此目录不包含任何 OpenTofu 配置文件,则必须通过手动输入或环境变量来配置提供程序。 -
-input=true
- 是否询问提供程序配置的输入。 -
-lock=false
- 在操作期间不持有状态锁。如果其他人可能同时对同一工作区运行命令,则此操作很危险。 -
-lock-timeout=0s
- 重试状态锁的持续时间。 -
-no-color
- 如果指定,输出将不包含任何颜色。 -
-parallelism=n
- 限制并发操作的数量,因为 OpenTofu 遍历图。默认为 10。 -
-provider=provider
- 已弃用 覆盖导入对象时要使用的提供程序配置。默认情况下,OpenTofu 使用目标资源配置中指定的提供程序,在大多数情况下,这是最佳行为。 -
-var 'foo=bar'
- 在 OpenTofu 配置中设置变量。此标志可以设置多次。变量值在 OpenTofu 语言中被解释为 文字表达式,因此列表和映射值可以通过此标志指定。 -
-var-file=foo
- 从 变量文件 中设置 OpenTofu 配置中的变量。如果当前目录中存在terraform.tfvars
或任何.auto.tfvars
文件,则会自动加载它们。terraform.tfvars
首先加载,然后按字母顺序加载.auto.tfvars
文件。由-var-file
指定的任何文件都将覆盖从工作目录中的文件自动设置的任何值。此标志可以多次使用。这仅在使用-config
标志时才有用。
仅对于使用 cloud
后端 或 remote
后端 的配置,tofu import
还接受选项 -ignore-remote-version
。
仅对于使用 local
后端 的配置,tofu import
还接受旧版选项 -state
、-state-out
和 -backup
。
提供程序配置
OpenTofu 将尝试加载配置用于导入的提供程序的配置文件。如果不存在配置文件或不存在该特定提供程序的配置,OpenTofu 将提示您输入访问凭据。您还可以指定环境变量来配置提供程序。
OpenTofu 在读取配置文件时唯一的限制是导入提供程序配置不能依赖于非变量输入。例如,提供程序配置不能依赖于数据源。
作为一个工作示例,如果您正在导入 AWS 资源,并且您有一个包含以下内容的配置文件,则 OpenTofu 将使用此文件配置 AWS 提供程序。
variable "access_key" {}
variable "secret_key" {}
provider "aws" {
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
}
示例:导入到资源
此示例将 AWS 实例导入到名为 foo
的 aws_instance
资源中。
$ tofu import aws_instance.foo i-abcd1234
示例:导入到模块
以下示例将 AWS 实例导入到名为 foo
的模块中名为 bar
的 aws_instance
资源中。
$ tofu import module.foo.aws_instance.bar i-abcd1234
示例:导入到使用 count 配置的资源
以下示例将 AWS 实例导入到使用 count
配置的名为 baz
的 aws_instance
资源的第一个实例中。
$ tofu import 'aws_instance.baz[0]' i-abcd1234
示例:导入到使用 for_each 配置的资源
以下示例将 AWS 实例导入到使用 for_each
配置的名为 baz
的 aws_instance
资源的 "example"
实例中。
Linux、Mac OS 和 UNIX
$ tofu import 'aws_instance.baz["example"]' i-abcd1234
PowerShell
$ tofu import 'aws_instance.baz[\"example\"]' i-abcd1234
Windows cmd.exe
$ tofu import aws_instance.baz[\"example\"] i-abcd1234