【发布时间】:2020-04-24 18:31:36
【问题描述】:
我需要在不使用 CLI 命令的情况下使用 TF 文件刷新资源“ibm_is_image”的状态?
我知道我们可以使用“terraform import”来导入资源的状态。但我应该在 TF 文件中使用 IaC 做同样的事情。
如何做到这一点?
例子:
在 workspace1 中,我创建了一个资源“f5_custom_image”,稍后会从命令行中删除该资源。在 workspace2 中,TF 文件中的相同代码将假定“f5_custom_image”已经存在,并且无法读取自定义图像资源。因此,我的代码必须在每次执行“terraform apply”时刷新此资源的 terraform 状态:
resource "ibm_is_image" "f5_custom_image" {
depends_on = ["data.ibm_is_images.custom_images"]
href = "${local.image_url}"
name = "${var.vnf_vpc_image_name}"
operating_system = "centos-7-amd64"
timeouts {
create = "30m"
delete = "10m"
}
}
【问题讨论】:
-
刷新状态只是检查提供程序以查看自 Terraform 上次运行以来是否发生了任何变化,并且由 Terraform 自动完成。在这种情况下,这就是正在发生的事情并导致您的第二个 Terraform 命令失败,因为该图像自上次运行以来已被删除,并且是您希望在此处发生的事情。您能否更清楚地解释您想要发生的事情,因为听起来您希望 Terraform 重新创建已删除的自定义图像。
-
我希望使用已删除的自定义图像在第二个工作区中更新 terraform 状态,然后重新创建自定义图像。
-
Terraform 不会那样工作。您明确表示要使用现有图像,然后从中创建资源。您需要重新考虑如何管理图像或 Terraform 结构。
-
我的自定义图像是使用 TF 文件创建的。我想在应用 terraform 后使用命令行销毁自定义图像。我的问题是:我当前和新的工作空间是否会刷新状态并使用 TF 文件创建另一个自定义图像?
-
第一个会注意到它创建的图像在下一个计划中丢失并尝试重新创建它。第二个工作区(如果在应用第一个工作区之前计划)将出错,因为找不到自定义图像。如果您应用第一个然后计划第二个,那么它会很好,因为它会找到新图像。