Terraform 从空状态刷新?

Posted

技术标签:

【中文标题】Terraform 从空状态刷新?【英文标题】:Terraform refresh from empty state? 【发布时间】:2019-01-22 05:17:26 【问题描述】:

我正在为我们的私有云开发一个自定义 Terraform 提供程序,但我在构建之间的状态文件方面遇到了困难。

基本上每次构建自定义提供程序的新版本时,我都需要执行terraform init,这似乎消除了现有状态。

我有一些资源仍然存在,但 Terraform 认为它们不存在,因为它的状态文件是空的。

我尝试执行terraform refresh,但它什么也没做:

空的或不存在的状态文件。

刷新不会做任何事情。刷新不会出错或返回错误 退出状态,因为许多自动化脚本使用刷新、计划、然后 申请,可能还没有第一次运行的状态文件。

我在文档中看到可以import 现有基础设施,但为此提供者需要实现导入功能。

有没有办法强制 Terraform 刷新状态?

【问题讨论】:

terraform init 绝对不应该消灭国家。你确定你一开始就正确地写出状态吗? @ydaetskcoR 我可能假设terraform init 擦除了状态。状态写得很好。我还在更新 terraform 之外的资源以执行一些测试等,因此在某些时候我可能会处于不同步状态。但也许import 是为尚未处于状态但处于配置中的资源刷新状态的唯一方法? 【参考方案1】:

实际上我需要为我的提供者实现import 函数,因为terraform refresh 无法刷新不在State 中的资源。

【讨论】:

以上是关于Terraform 从空状态刷新?的主要内容,如果未能解决你的问题,请参考以下文章

通过 Terraform 在 AWS 上进行路由传播

为啥需要远程保存 terraform 状态文件?

如何使用 terraform 在 AWS API Gateway method_response 中指定内容类型标头?

通过 terraform 创建 Azure App 服务时抛出错误此处不应出现名为“zone_redundant”的参数

刷新状态时出错:S3 中的状态数据没有预期的内容

在openstack中启动服务器时出现terraform错误