0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【OCI】Terraformのdataブロックでinstanceの参照をする際のフィルタリング方法

Last updated at Posted at 2025-06-22

背景

OCIのスタック更新時に削除されたインスタンスの情報を参照してしまい、意図したインスタンスにIPアドレスをアタッチ出来ないという問題が発生しました。その際に、dataブロックで取得しているインスタンスの情報をフィルタリングする事で削除済のインスタンスを参照しなくできたのでメモとして残しています。

解決方法

結論:dataブロックにフィルタを追加する。

env.tf
data "oci_core_instances" "your_label"{
    compartment_id = local.compartment_id
    state = "RUNNING"
}

削除済のインスタンスを参照しないように、dataブロックにstateを追加してRUNNING状態のインスタンスのみを参照するようにしたら治りました。

問題の原因

結論:削除済のインスタンス情報がOCI上に残っていてたこと

今回のケースでは過去に同じTerraformを使用してインスタンスを作成した事があり、Terraformを再利用したことで名前などの情報が重複したインスタンスが作成されてしまいました。※削除されても情報は残る
その状態で、スタックにてIPアドレスのアッタッチ時にインスタンスを参照しようとすると作成順に参照が実行されて削除済のインスタンスを見に行ってしまうという訳でした。

まとめ

今回の問題を通じてインスタンスの再作成後に作成するオブジェクトでインスタンスを参照する際に旧インスタンスの情報を参照しないようにする方法を学ぶことができました。知っていると意外と使いそうなので皆さんのご参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?