terraformをapplyした時に作成されるtfstateには、現在の状態が記録されているみたいです。それを削除してapplyしたらどうなるか気になったのでやってみました。
前提
- コードは、EC2を作成するだけ
- 一度terraformでapplyした後に、作成されたtfstateを削除、その後再びapplyを実施してみる
検証
1度apply実行後に、tfstateを削除せずplanしてみる
$ terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.
aws_instance.example: Refreshing state... [id=i-034f0504ef1224dd5]
------------------------------------------------------------------------
No changes. Infrastructure is up-to-date.
This means that Terraform did not detect any differences between your
configuration and real physical resources that exist. As a result, no
actions need to be performed.
もちろん差分無しで表示される
次にtfstateを削除してplanしてみる
terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.
------------------------------------------------------------------------
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# aws_instance.example will be created
+ resource "aws_instance" "example" {
+ ami = "ami-0c3fd0f5d33134a76"
+ arn = (known after apply)
+ associate_public_ip_address = (known after apply)
+ availability_zone = (known afte
<省略>
Plan: 1 to add, 0 to change, 0 to destroy.
------------------------------------------------------------------------
差分が出てきた
ということは新しく作成されるかな?applyを実施
$ terraform apply
<省略>
Plan: 1 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
aws_instance.example: Creating...
aws_instance.example: Still creating... [10s elapsed]
aws_instance.example: Creation complete after 13s [id=i-03f96833d40e268eb]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
作成されたっぽい
AWSコンソール画面で確認しても、もう一台EC2が作成されていた
上部が1回目に作成したもので、下にあるのが、今回のapply実行時に作成されたもの
結論
1度実行した時のtfstateを削除すれば、terraformの管理から外れる。もう一度実行すると、別でEC2を立ち上げる