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?

Terraformマスターへの道#1 OCI Resource ManagerでObject Storageを作ってみた

0
Posted at

はじめに

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で以下を実施します。

  1. ローカル環境でTerraformの main.tf 作成
  2. Terraform構成ファイルをZIP化
  3. OCI Resource ManagerでStack作成
  4. Plan実行
  5. Applyを実行してObject Storage作成
  6. OCIコンソールで作成確認
  7. 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コンソールで作成していきます。

image.png

image.png

「スタックの作成」からterraform-object-storage.zipをアップロードします。
また、Stack名を入力します。terraform-object-storage-sample

image.png

続いて、Terraform変数を入力します。

項目 入力値
bucket_name sample_
comparment_ocid <デフォルト値>
region <デフォルト値:選択中のリージョン>

image.png

image.png

Planを実行

Stackを作成したら、まずPlanを実行します。
Planは、Terraformがこれから何を作成・変更・削除する予定なのかを確認する操作です。

Stack詳細画面で Plan をクリックします。
image.png

image.png

Planが成功すると、ジョブの実行したログが表示されます。
(表示されるまで少し時差がありました。)
image.png

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

Applyを実行

Planで今後実行される内容を確認できたら、Applyを実行します。
Applyは、Planで確認した内容を実際に反映する操作です。
Stack詳細画面で Apply をクリックします。

image.png

image.png

Applyが成功すると、バケットが作成されます。
ログの中にbucket_namenamespaceが表示されていてできていそうな雰囲気がぷんぷんします。
image.png

OCIコンソールからObject Storageの作成を確認

OCIコンソールから本当にバケットが作成されたか確認します。
image.png
できていました!!!

Destroyで削除

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

image.png

image.png

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

まとめ

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

次回はもう少し複雑なことをTerraformを使ってやってみたいと思います。

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?