LoginSignup
2
2

More than 1 year has passed since last update.

[Oracle Cloud]特定コンパートメントのリソース一括削除にTerraformの使用 (2021/12/13)

Posted at

はじめに

この記事は Oracle Cloud Infrastructure Advent Calendar 2021 Day 13の記事として書かれています。
OCIのコンパートメント内のリソースの一括削除をTerraform/OCI Resource Managerを使って実施してみた。

既存コンパートメントからスタックを作成

Webコンソールから「開発者サービス」の
「リソース・マネージャ」>「スタック」を選択
image.png

コンパートメント内のすべてのリソース用にTerraformプランファイルのセットを新しいスタックを作成します。
「スタックの作成」をクリック
image.png

「既存のコンパートメント」を選択し、リソースが存在するコンパートメントを選択しスタックを作成
image.png

image.png

image.png

Resource Managerでのリソース削除

スタックの作成が完了後 「Destroy/破棄」を実行
image.png

image.png

補足

破棄操作が失敗した場合、OCI Cloud ShellからTerraformコマンドを実行しリソースを削除できます。
OCI Provider Webページ(https://releases.hashicorp.com/terraform-provider-oci/)から最新リリース(Linux 64bit版)のリンクURLをコピー
image.png

コンソールから Cloud Shellを起動
image.png

ユーザーのルートディレクトリの下に、binというディレクトリを作成
wget <リンク先>を使って、binフォルダにOCI Providerをダウンロードし、ダウンロードしたファイルを解凍

@cloudshell:~ (ap-tokyo-1)$ mkdir bin
@cloudshell:~ (ap-tokyo-1)$ cd bin
@cloudshell:bin (ap-tokyo-1)$ wget https://releases.hashicorp.com/terraform-provider-oci/4.55.0/terraform-provider-oci_4.55.0_linux_amd64.zip
--2021-12-05 07:47:07--  https://releases.hashicorp.com/terraform-provider-oci/4.55.0/terraform-provider-oci_4.55.0_linux_amd64.zip
Resolving releases.hashicorp.com (releases.hashicorp.com)... 146.75.37.183, 2a04:4e42:79::439
Connecting to releases.hashicorp.com (releases.hashicorp.com)|146.75.37.183|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 25541306 (24M) [application/zip]
Saving to: ‘terraform-provider-oci_4.55.0_linux_amd64.zip’

100%[===============================================================================================================================================================================================================================================================================================================================================>] 25,541,306   150MB/s   in 0.2s   

2021-12-05 07:47:07 (150 MB/s) - ‘terraform-provider-oci_4.55.0_linux_amd64.zip’ saved [25541306/25541306]

@cloudshell:bin (ap-tokyo-1)$ ls
terraform-provider-oci_4.55.0_linux_amd64.zip
@cloudshell:bin (ap-tokyo-1)$ unzip terraform-provider-oci_4.55.0_linux_amd64.zip 
Archive:  terraform-provider-oci_4.55.0_linux_amd64.zip
  inflating: terraform-provider-oci_v4.55.0_x4  
@cloudshell:bin (ap-tokyo-1)$ ls
terraform-provider-oci_4.55.0_linux_amd64.zip  terraform-provider-oci_v4.55.0_x4
@cloudshell:bin (ap-tokyo-1)$ cd 

ユーザーのホームディレクトリの下にcleaningディレクトリを作成し、そのディレクトリに移動
クリーンナップするコンパートメントのOCIDを指定して下記exportコマンドを実行 ( ダウンロードした OCI Providerのバージョンに注意してコマンドを実行 )

@cloudshell:~ (ap-tokyo-1)$ mkdir cleaning
@cloudshell:~ (ap-tokyo-1)$ cd cleaning/
@cloudshell:cleaning (ap-tokyo-1)$ ~/bin/terraform-provider-oci_v4.55.0_x4 -command=export -compartment_id=ocid1.compartment.oc1..aaaaaaaan -output_path=. -generate_state
2021/12/05 07:51:08 [INFO] terraform-provider-oci 4.55.0

略

INFO 2021/12/XX 07:51:46.315147 === COMPLETED ===
INFO 2021/12/XX 07:51:46.315152 ========= PERFORMANCE SUMMARY ==========
INFO 2021/12/XX 07:51:46.315157 Total resources: 2
INFO 2021/12/XX 07:51:46.315165 Total time taken for discovering all services: 18.93891921s
INFO 2021/12/XX 07:51:46.315175 Total time taken for generating state of all services: 16.43681961s
INFO 2021/12/XX 07:51:46.315183 Total time taken by entire export: 35.380211205s
@cloudshell:cleaning (ap-tokyo-1)$ 

コマンドを実行すると、リソースを検査し、Terraformリソースとして定義されたTerraform Planファイル(.tf)が作成され、Terraformステートファイルにインポートされます。
この
.tfファイルを調べると、削除したいクラウドリソースの定義がわかります。

Terraform Destroy コマンドを実行しリソースの削除を実行します。
破壊される内容を確認し、「yes」と入力してエンターキーを押下し、リソースの削除。

@cloudshell:cleaning (ap-tokyo-1)$ ls -l
total 44
-rw-r--r--. 1 kenji_wata oci  6112 Dec  X 07:51 database.tf
-rw-r--r--. 1 kenji_wata oci    38 Dec  X 07:51 provider.tf
-rw-r--r--. 1 kenji_wata oci 15641 Dec  X 07:51 terraform.tfstate
-rw-r--r--. 1 kenji_wata oci  8826 Dec  X 07:51 terraform.tfstate.tmp.backup
-rw-r--r--. 1 kenji_wata oci   171 Dec  X 07:51 vars.tf
@cloudshell:cleaning (ap-tokyo-1)$ terraform destroy
oci_database_db_system.export_DBSystem1: Refreshing state... [id=ocid1.dbsystem.oc1.phx.anyhqljrssl]
oci_database_autonomous_database.export_ADB01: Refreshing state... [id=ocid1.autonomousdatabase.oc1.phx.anyhqljrssl]

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  - destroy

Terraform will perform the following actions:

略

Plan: 0 to add, 0 to change, 2 to destroy.

Do you really want to destroy all resources?
  Terraform will destroy all your managed infrastructure, as shown above.
  There is no undo. Only 'yes' will be accepted to confirm.

  Enter a value: yes

注意:ポリシーのようなアイデンティティリソースなどの一部のリソースは、テナントレベルでのみ存在するため別途削除する必要があります。

おわりに

OCI Resource Managerの リソースディスカバリー機能は、OCI コンパートメント内のリソースを把握するための非常に強力なメカニズムです。結果として得られるTerraformファイルは、コンパートメントからリソースを破壊するために使用することができます - 適切な順序で、すべての基礎となる詳細と子要素を考慮に入れて。時間と手間の節約になります。

OCI Cloud Shellは、Terraformを使いこなすための簡単なアクセスメカニズムを提供します。

参考情報

2
2
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
2
2