【Terraform】操作tfstate文件的方法
首先
我在使用Udemy学习了Terraform,因此这是关于如何操作tfstate文件的学习备忘录。
请确认预先创建的环境资源清单。
您可以使用以下命令来查看已创建资源的列表。
$ terraform state list
确认资源详细信息
您可以使用以下命令来查看已创建的资源的详细信息。
$ terraform state show <詳細情報を確認したいリソース名>
修改资源名称
只修改代码会导致与tfstate文件产生差异,所以在修改代码之前先更改tfstate文件。
更改资源名称的方法
首先,修改tfstate文件。
$ terraform state mv <移動元リソース名> <移動先リソース名>
最后修正代码并在计划中确认。
$ terraform plan # 差分がでなければOK
资源的获取
当您想要使用Terraform管理手动创建的资源时,
您可以使用以下命令进行导入:$ terraform import <要导入的资源名称> <要导入的资源ID>。
资源的导入方法
首先,创建一个空的资源块。
resource "aws_instance" "test" {
}
执行导入命令
$ terraform import aws_instance.test <手動で作成したEC2のID>
由于tfstate文件中详细地记录了信息,所以我们要确认其内容。
$ terraform state show aws_instance.test
在aws_instance中,填写确认内容作为必填项,然后完成。
resource "aws_instance" "test" {
ami = ""
instance_type = ""
}
从tfstate中删除资源
只有更改代码会导致tfstate文件产生差异,所以需要先修改tfstate文件,然后再修改代码。
从tfstate中删除资源的方法
首先,从源代码中开始,删除需从tfstate管理中排除的资源。
然后,使用命令从tfstate中删除资源。
$ terraform state rm <管理対象外にしたいリソース名>
最后,我们会在计划中确认。
$ terraform plan # 差分がでなければOK
目前状况的反映
在实际的云端状态下,将其反映到tfstat文件中。
当使用terraform管理的资源因手动更改而产生问题时,可以通过此方法将其恢复至代码状态。
目前状况的反映方式 de shì)
用命令将实际云上的状态反映到tfstat文件中。
$ terraform refresh
将代码恢复到先前的状态。
$ terraform plan # 手動で操作した箇所が差分で表示されます
$ terraform apply