はじめに
Terraform?なにそれ?
Teraterm?の仲間で、コマンド操作するやつ?
状態な私が、OCI Resource Managerを使ってTerraformを使ってみる話です。
Terraformとは
Terraformは、2014年にリリースされたInfrastructure as Code (IaC) ツールです。
AWSやAzureなどのクラウドだけでなく、様々なインフラ構成をコードで管理することができます。
画面から手作業でリソースを作る代わりに、.tf ファイルに「どのようなリソースを作りたいか」を書き、その内容に沿ってインフラを作成・変更・削除できます。
今回やること
今回は最初の一歩として、OCIのObject StorageをTerraformで作成します。
ComputeやVCNを作るよりも影響範囲が小さく、作成後の確認や削除もしやすいので、Terraform未経験者の最初の題材として扱いやすいと思いました。
OCI Resource Managerで以下を実施します。
- ローカル環境でTerraformの
main.tf作成 - Terraform構成ファイルをZIP化
- OCI Resource ManagerでStack作成
- Plan実行
- Applyを実行してObject Storage作成
- OCIコンソールで作成確認
- Destroyを実行して削除
OCI Resource Managerとは
OCI Resource Managerは、OCI上でTerraformを実行できるマネージドサービスです。
ローカルPCにTerraformをインストールしなくても、Terraform構成ファイルをOCIにアップロードして、Plan / Apply / DestroyといったTerraform操作をOCIコンソール上から実行できます。
作成するリソース
今回はObject Storageを1つ作成します。
作成するものは以下です。
| 項目 | 内容 |
|---|---|
| サービス | Object Storage |
| リソース | Bucket |
| アクセス | NoPublicAccess |
| ストレージ層 | Standard |
Terraform構成ファイルを作成する
main.tfを作成します。
ここでは、Object Storageのnamespaceをdataブロックで取得し、そのnamespaceを使ってバケットを作成しています。
terraform {
required_providers {
oci = {
source = "oracle/oci"
version = ">= 6.0.0"
}
}
}
variable "region" {
description = "OCI region"
type = string
}
variable "compartment_ocid" {
description = "Compartment OCID where the bucket will be created"
type = string
default = <compartment ID ★自分の環境の値を入れる>
}
variable "bucket_name" {
description = "Object Storage bucket name"
type = string
}
provider "oci" {
region = var.region
}
data "oci_objectstorage_namespace" "this" {
compartment_id = var.compartment_ocid
}
resource "oci_objectstorage_bucket" "sample" {
compartment_id = var.compartment_ocid
namespace = data.oci_objectstorage_namespace.this.namespace
name = var.bucket_name
access_type = "NoPublicAccess"
storage_tier = "Standard"
}
output "bucket_name" {
value = oci_objectstorage_bucket.sample.name
}
output "namespace" {
value = data.oci_objectstorage_namespace.this.namespace
}
Resource Managerにアップロードするため、main.tfをZIP化します。
terraform-object-storage.zip
Resource ManagerでStackを作成
OCIコンソールにログインし、Resource ManagerのStackを作成します。
OCIコンソールで作成していきます。
「スタックの作成」からterraform-object-storage.zipをアップロードします。
また、Stack名を入力します。terraform-object-storage-sample
続いて、Terraform変数を入力します。
| 項目 | 入力値 |
|---|---|
| bucket_name | sample_ |
| comparment_ocid | <デフォルト値> |
| region | <デフォルト値:選択中のリージョン> |
Planを実行
Stackを作成したら、まずPlanを実行します。
Planは、Terraformがこれから何を作成・変更・削除する予定なのかを確認する操作です。
Planが成功すると、ジョブの実行したログが表示されます。
(表示されるまで少し時差がありました。)

ログをスクロールして確認すると、Object Storageが追加される予定になっているはずです。

Applyを実行
Planで今後実行される内容を確認できたら、Applyを実行します。
Applyは、Planで確認した内容を実際に反映する操作です。
Stack詳細画面で Apply をクリックします。
Applyが成功すると、バケットが作成されます。
ログの中にbucket_nameやnamespaceが表示されていてできていそうな雰囲気がぷんぷんします。

OCIコンソールからObject Storageの作成を確認
OCIコンソールから本当にバケットが作成されたか確認します。

できていました!!!
Destroyで削除
最後に、作成したバケットを削除するところもやってみたいと思います。
Resource ManagerのStack詳細画面に戻り、Destroy を実行します。
Destroyは、Terraformで管理しているリソースを削除する操作です。

Destroyが成功すると、Terraformで作成したObject Storageが削除されます。
OCIコンソールのBuckets一覧を確認すると、作成したバケットは削除されていました!
(元々のバケットが残っているせいでわかりづらいですが・・)

まとめ
まずリソースを作って削除する最も基本的なTerraformを実行することはできました!
構成ファイルさえ手元に用意できれば、つまづくことなく実行できるはずです。
次回はもう少し複雑なことをTerraformを使ってやってみたいと思います。










