OCIのリソース・マネージャを利用してCompute Instanceを作成する

# はじめに
OCIのリソース・マネージャはマネージドのTerraformです。
[前回](https://qiita.com/dingtianhongjie/items/9204a675d2edb4c4e4d4)はMACにTerraformをインストールしてOCIのCompute Instanceを作成しましたが、今回は同様のことをリソース・マネージャを利用して作成します。

https://docs.oracle.com/ja-jp/iaas/Content/ResourceManager/home.htm#top

# スタックの作成
リソース・マネージャではTerraformの構成をスタックとして作成、管理します。
まずはこのスタックを作成します。

スタックの作成には色々な方法がありますが、今回はOCIのコンソールから作成します。


`コンピュート` -> `インスタンス` -> `インスタンスの作成`からインスタンスの作成画面を開きます。

シェイプやCPU/memoryなどを指定して、`スタックとして保存`をクリックします。

![スクリーンショット 2023-04-15 13.44.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/bb69cb86-e324-700b-068b-7c27e78cf110.png)

リソース・マネージャのスタックの作成に移動しますので、`次`をクリック

![スクリーンショット 2023-04-15 13.45.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/2c78bac9-90e3-6c61-6577-05d4a4313493.png)

特に設定する項目がないので、`次`をクリック

![スクリーンショット 2023-04-15 13.45.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/3288cf80-f341-4c61-b035-bb038c997567.png)

`作成`をクリック

![スクリーンショット 2023-04-15 13.46.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/df8b220a-61b2-3450-93bb-2c053ceffdf1.png)

![スクリーンショット 2023-04-15 13.46.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/fe7f9d3b-d8f8-2c17-9dee-bf3472e51e2d.png)

スタックができました。

# 計画
通常のTerraformと同様に実行計画を作成します。
スタックの画面で`計画`をクリックし、この画面で`計画`をクリック

![スクリーンショット 2023-04-15 13.47.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/423a88c6-aa93-65a7-60c7-65ea610dc2d9.png)

しばらく待って、状態が成功になれば完了です。
コンソール上でログが確認できますし、`ログのダウンロード`をクリックすると、ログがダウンロードできます。

![スクリーンショット 2023-04-15 13.48.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/aef843d4-a3f3-a3bc-fa76-0c867ae51634.png)

# 適用
スタックの画面から`適用`をクリックします。

![スクリーンショット 2023-04-15 13.50.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/6d56ae75-a5cf-164f-d61d-4e940c82ed16.png)

しばらく待って`成功`になれば完了です。

![スクリーンショット 2023-04-15 13.53.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/ccf7333a-e433-a8ea-f46b-3872bfb8f08b.png)

インスタンスがプロビジョニングされていることを確認します。

![スクリーンショット 2023-04-15 13.54.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/638868fb-585d-439a-9a76-3b5766afa7e6.png)

また、`Terraform構成のダウンロード`をクリックすると、ZIP形式でダウンロードできます。
解凍すると、今回使用したTerraformの構成が確認できます。

```main.tf
provider "oci" {}

resource "oci_core_instance" "generated_oci_core_instance" {
	agent_config {
		is_management_disabled = "false"
		is_monitoring_disabled = "false"
		plugins_config {
			desired_state = "DISABLED"
			name = "Vulnerability Scanning"
		}
		plugins_config {
			desired_state = "DISABLED"
			name = "Oracle Java Management Service"
		}
		plugins_config {
			desired_state = "ENABLED"
			name = "OS Management Service Agent"
		}
		plugins_config {
			desired_state = "DISABLED"
			name = "Management Agent"
		}
		plugins_config {
			desired_state = "ENABLED"
			name = "Custom Logs Monitoring"
		}
		plugins_config {
			desired_state = "ENABLED"
			name = "Compute Instance Run Command"
		}
		plugins_config {
			desired_state = "ENABLED"
			name = "Compute Instance Monitoring"
		}
		plugins_config {
			desired_state = "DISABLED"
			name = "Block Volume Management"
		}
		plugins_config {
			desired_state = "DISABLED"
			name = "Bastion"
		}
	}
	availability_config {
		recovery_action = "RESTORE_INSTANCE"
	}
	availability_domain = "TGjA:AP-OSAKA-1-AD-1"
	compartment_id = "ocid1.compartment.oc1..aaaaaaaamyemvazvbgl42xxxxxxxxxxxxxxxxxxxxxx"
	create_vnic_details {
		assign_private_dns_record = "true"
		assign_public_ip = "true"
		subnet_id = "ocid1.subnet.oc1.ap-osaka-1.aaaaaaaalxloahnjjxybovqol6mxxxxxxxxxxxxxxxxxxxxxx"
	}
	display_name = "ol-instance-20230415"
	instance_options {
		are_legacy_imds_endpoints_disabled = "false"
	}
	metadata = {
		"ssh_authorized_keys" = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChiyKxOXc6N56ZEty/C8e/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx tf-ssh.key"
	}
	shape = "VM.Standard.E4.Flex"
	shape_config {
		baseline_ocpu_utilization = "BASELINE_1_1"
		memory_in_gbs = "8"
		ocpus = "1"
	}
	source_details {
		source_id = "ocid1.image.oc1.ap-osaka-1.aaaaaaaaprjpeoyjeuqos3cxxxxxxxxxxxxxxxxxxxxxx"
		source_type = "image"
	}
}

```

# 破棄
スタックの画面で`破棄`をクリックすると、インスタンスを削除できます。

![スクリーンショット 2023-04-15 13.56.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/f5b09183-9845-6260-7668-9c79d3daf8b7.png)

インスタンス一つ作るだけだったら、リソース・マネージャ使わない方が早いですが、マネージドなTerraformだと自分でTFファイルを準備しないでいいのが楽で良いですね。