TerraformでOCI上に仮想サーバを建ててみた

こんにちは。Oracle Cloud Infrastructure(OCI)特集 編集部です。

今回は Terraformを使用して
OCI上に仮想サーバを建ててみます。
※この内容は 2019/04/07 時点の情報です。

<前提>
・PC(Terraformの実行場所)のOSは Windows 7 (64bit)を使用しています。
・APIキーを使用するには pem形式の公開鍵が必要となり、opensslを使用して作成します。
※WindowsにOpenSSLをインストールするか、
 手元にあるLinuxサーバのOpenSSLを使用するなどして作成してください。
・Terraformにてネットワークも作成できますが、今回はネットワークは手動で作成し、仮想サーバの作成のみTerraformを使用します。

今回実施する作業項目は大まかに以下のようになります。
1.Terraformのインストール
2.APIキーの作成
3.OCID情報の収集
4.Terraformの実行準備
5.Terraform実行

※参考サイト:TerraformでOCIの構築を自動化する
https://community.oracle.com/docs/DOC-1024538


1.Terraformのインストール

Terraformをダウンロードするにあたり、
下記のサイトに接続します。
https://www.terraform.io/downloads.html

PCが Windows 7 (64bit) ですので、
「Windows」の「64-bit」をクリックしてダウンロードを開始します。

ダウンロードされたファイル
terraform_0.11.13_windows_amd64.zip
を解凍すると
terraform.exe
が作成されます。

下記のフォルダ
C:\Program Files\Terraform
を作成し、この中に terraform.exe ファイルを保存します。

続いて環境変数 PATH に追記するにあたり、
コントロール パネル → システムとセキュリティ → システム
から「システムの詳細設定」をクリックします。

「詳細設定」タブを選択し、「環境変数」ボタンをクリックします。

下記のように システム環境変数 の「Path」を選択し、
「編集」ボタンをクリックします。

変数値の末尾に下記を追加します。
;C:\Program Files\Terraform
その後「OK」ボタンをクリックします。

元の「環境変数」ダイアログに戻りますので「OK」をクリックし、
更に「システムのプロパティ」ダイアログに戻って「OK」をクリックします。

スタートメニューから
「すべてのプログラム」→「アクセサリ」→「コマンド プロンプト」
を選択するなどして コマンドプロンプトを起動し、
terraform
と入力して実行します。
下記のように表示されることを確認します。


2.APIキーの作成

まずは鍵ペアを作成します。
opensslを使用して下記コマンドを実行します。

openssl genrsa -out id_rsa
openssl rsa -in id_rsa -pubout -out id_rsa.pem

id_rsa が秘密鍵(①)、
id_rsa.pem が公開鍵(②)です。

また、サーバへ接続するための鍵ペアも作成します。
ここでは TeraTermから作成しています

TeraTermを起動し、接続はキャンセルしてメニューから
「設定」→「SSH鍵生成」を選択します。

「生成」ボタンをクリックします。

必要に応じてパスフレーズを入力しておき、
「秘密鍵の保存」をクリックして鍵を id_rsa_server という名前で保存(③)し、
「公開鍵の保存」もクリックして鍵を id_rsa_server.pub という名前で保存(④)します。
その後、「×」をクリックしてダイアログを閉じます。

3.OCID情報の収集

OCIのコンソールにログインします。
画面右上の人のマークをクリックし、メニューからユーザ名を選択します。

画面下側にて「公開キーの追加」をクリックします。

「公開キー」の部分に公開鍵のテキスト内容を貼り付けます。

ちなみに、ssh-rsaキーでは下記のようにエラーとなります。

PEMフォーマットの公開鍵のテキスト内容(②の内容)を貼り付け、
「追加」ボタンを押下します。

「フィンガープリント」をメモします(⑤)。
ここでは
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
とします。

続いて画面上側にて ユーザーのOCIDをメモします(⑥)。
ここでは
ocid1.user.oc1..aaaaaaaaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
とします。

画面右上の人のマークをクリックし、メニューからテナントを選択します。

テナントのOCID をメモします。
ここではテナント名は
ocXXXXXXXXXXX
とし、テナント名のOCID(⑦)は
ocid1.tenancy.oc1..aaaaaaaaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
とします。

続いて 左上のメニューから
「アイデンティティ」→「コンパートメント」を選択します。

使用するコンパートメントを選択します。

コンパートメントのOCID をメモします。
ここではコンパート名は
C05
とし、コンパートメントのOCID(⑧)は
ocid1.compartment.oc1..aaaaaaaaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
とします。

続いて、作成する仮想サーバのイメージのOCIDですが、下記サイトから確認します。
https://docs.cloud.oracle.com/iaas/images/

下記は us-ashburnリージョンの Oracle-Linux-7.6-2019.03.22-0 です。
OCIDは
ocid1.image.oc1.iad.aaaaaaaavzrrzlq2zvj5fd5c27jed7fwou5aqkezxbtmys4aolls54zg7f7q
でした(⑨)。

4.Terraformの実行準備

テスト用ネットワークを作成します。
OCIコンソールのメニューから「ネットワーキング」をクリックします。

「仮想クラウド・ネットワークの作成」ボタンをクリックします。

ここでは名前を「vcn_test」とし、作成を簡略化するために
「仮想クラウド・ネットワークおよび関連リソースの作成」を選択します。

「仮想クラウド・ネットワークの作成」をクリックします。

「閉じる」をクリックします。

続いて作成したVCNの名前をクリックします。

画面の下側に表示されるサブネットの情報より
サブネットのOCIDをメモします(⑩)。
ここではOCIDを
ocid1.subnet.oc1.iad.aaaaaaaaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
とします。また、「可用性ドメイン」の
EAbO:US-ASHBURN-AD-3
もメモしておいてください(⑪)。

今回のファイルを準備します。
作業フォルダを
c:\work\oci
とし、下記のようにファイルを配置します。

c:\work\oci
 ├ keys
 │ ├id_rsa
 │ ├id_rsa.pem
 │ ├id_rsa_server
 │ └id_rsa_server.pub
 ├compute.tf
 ├provider.tf
 └variables.tf

Terraform用のファイルの内容は下記の通りです。

■compute.tf
※⑪(可用性ドメイン)と
⑩(サブネットのOCID)と
⑨(イメージのOCID)を使用しています。



// Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.

resource "oci_core_instance" "ComputeTest" {
availability_domain = "EAbO:US-ASHBURN-AD-3"
compartment_id = "${var.compartment_ocid}"
display_name = "ComputeTest1"
shape = "VM.Standard2.1"

create_vnic_details {
subnet_id = "ocid1.subnet.oc1.iad.aaaaaaaaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
display_name = "ComputeTest1_primaryvnic"
assign_public_ip = true
hostname_label = "ComputeTest1"
}

source_details {
source_type = "image"
source_id = "ocid1.image.oc1.iad.aaaaaaaavzrrzlq2zvj5fd5c27jed7fwou5aqkezxbtmys4aolls54zg7f7q"
}

metadata {
ssh_authorized_keys = "${var.ssh_public_key}"
}

timeouts {
create = "60m"
}
}


■provider.tf


// Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.

provider "oci" {
tenancy_ocid = "${var.tenancy_ocid}"
user_ocid = "${var.user_ocid}"
fingerprint = "${var.fingerprint}"
private_key_path = "${var.private_key_path}"
region = "${var.region}"
}


■variables.tf


// Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.

variable "tenancy_ocid" {}
variable "user_ocid" {}
variable "fingerprint" {}
variable "private_key_path" {}
variable "region" {}

variable "compartment_ocid" {}
variable "ssh_public_key" {}
variable "ssh_private_key" {}


5.Terraform実行

スタートメニューより
「すべてのプログラム」→「アクセサリ」→「Windows PowerShell」
から「Windows PowerShell」を選択し、PowerShellを起動します。
※PowerShellの実行・出力部分は青文字とします。

作業フォルダに移動します。
cd c:\work\oci

各種環境変数を設定します。
※上から
⑦(テナンシのOCID)、
⑥(ユーザーのOCID)、
⑤(フィンガープリント)、
①(秘密鍵ファイル)、
⑧(コンパートメントのOCID)、
④(サーバの公開鍵)、
③(サーバの秘密鍵)
を設定し、”us-ashburn-1″はリージョン名になります。


$env:TF_VAR_tenancy_ocid="ocid1.tenancy.oc1..aaaaaaaaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
$env:TF_VAR_user_ocid="ocid1.user.oc1..aaaaaaaaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
$env:TF_VAR_fingerprint="XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX"
$env:TF_VAR_private_key_path=".\keys\id_rsa"

$env:TF_VAR_compartment_ocid="ocid1.compartment.oc1..aaaaaaaaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

$env:TF_VAR_ssh_public_key = Get-Content .\keys\id_rsa_server.pub
$env:TF_VAR_ssh_private_key = Get-Content .\keys\id_rsa_server

$env:TF_VAR_region="us-ashburn-1"



Terraformの初期化処理を行うにあたり、
「terraform init」を実行します。


PS C:\work\oci>
PS C:\work\oci> terraform init

Initializing provider plugins...
- Checking for available provider plugins on https://releases.hashicorp.com...
- Downloading plugin for provider "oci" (3.21.0)...

The following providers do not have any version constraints in configuration,
so the latest version was installed.

To prevent automatic upgrades to new major versions that may contain breaking
changes, it is recommended to add version = "..." constraints to the
corresponding provider blocks in configuration, with the constraint strings
suggested below.

* provider.oci: version = "~> 3.21"

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
PS C:\work\oci>


.terraform フォルダが作成され、その中に
プラグイン等が格納されています。

Terraformをテスト的に実行するにあたり、
「terraform plan」を実行します。


PS C:\work\oci> terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.


------------------------------------------------------------------------

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create

Terraform will perform the following actions:

+ oci_core_instance.ComputeTest
id: <computed>
agent_config.#: <computed>
availability_domain: "EAbO:US-ASHBURN-AD-3"
boot_volume_id: <computed>
compartment_id: "ocid1.compartment.oc1..aaaaaaaaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
create_vnic_details.#: "1"
create_vnic_details.0.assign_public_ip: "true"
create_vnic_details.0.display_name: "ComputeTest1_primaryvnic"
create_vnic_details.0.freeform_tags.%: <computed>
create_vnic_details.0.hostname_label: "ComputeTest1"
create_vnic_details.0.private_ip: <computed>
create_vnic_details.0.skip_source_dest_check: <computed>
create_vnic_details.0.subnet_id: "ocid1.subnet.oc1.iad.aaaaaaaaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
display_name: "ComputeTest1"
freeform_tags.%: <computed>
image: <computed>
ipxe_script: <computed>
is_pv_encryption_in_transit_enabled: <computed>
launch_mode: <computed>
launch_options.#: <computed>
metadata.%: "1"
metadata.ssh_authorized_keys: "ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
private_ip: <computed>
public_ip: <computed>
region: <computed>
shape: "VM.Standard2.1"
source_details.#: "1"
source_details.0.boot_volume_size_in_gbs: <computed>
source_details.0.kms_key_id: <computed>
source_details.0.source_id: "ocid1.image.oc1.iad.aaaaaaaavzrrzlq2zvj5fd5c27jed7fwou5aqkezxbtmys4aolls54zg7f7q"
source_details.0.source_type: "image"
subnet_id: <computed>
time_created: <computed>
time_maintenance_reboot_due: <computed>


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

------------------------------------------------------------------------

Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.

PS C:\work\oci>



Terraformにて仮想サーバを作成するにあたり、
「terraform apply」を実行します。


PS C:\work\oci> terraform apply

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create

Terraform will perform the following actions:

+ oci_core_instance.ComputeTest
id: <computed>
agent_config.#: <computed>
availability_domain: "EAbO:US-ASHBURN-AD-3"
boot_volume_id: <computed>
compartment_id: "ocid1.compartment.oc1..aaaaaaaaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
create_vnic_details.#: "1"
create_vnic_details.0.assign_public_ip: "true"
create_vnic_details.0.display_name: "ComputeTest1_primaryvnic"
create_vnic_details.0.freeform_tags.%: <computed>
create_vnic_details.0.hostname_label: "ComputeTest1"
create_vnic_details.0.private_ip: <computed>
create_vnic_details.0.skip_source_dest_check: <computed>
create_vnic_details.0.subnet_id: "ocid1.subnet.oc1.iad.aaaaaaaaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
display_name: "ComputeTest1"
freeform_tags.%: <computed>
image: <computed>
ipxe_script: <computed>
is_pv_encryption_in_transit_enabled: <computed>
launch_mode: <computed>
launch_options.#: <computed>
metadata.%: "1"
metadata.ssh_authorized_keys: "ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
private_ip: <computed>
public_ip: <computed>
region: <computed>
shape: "VM.Standard2.1"
source_details.#: "1"
source_details.0.boot_volume_size_in_gbs: <computed>
source_details.0.kms_key_id: <computed>
source_details.0.source_id: "ocid1.image.oc1.iad.aaaaaaaavzrrzlq2zvj5fd5c27jed7fwou5aqkezxbtmys4aolls54zg7f7q"
source_details.0.source_type: "image"
subnet_id: <computed>
time_created: <computed>
time_maintenance_reboot_due: <computed>


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

Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.

Enter a value: yes
#↑yes と入力して Enter

oci_core_instance.ComputeTest: Creating...
agent_config.#: "" => "<computed>"
availability_domain: "" => "EAbO:US-ASHBURN-AD-3"
boot_volume_id: "" => "<computed>"
compartment_id: "" => "ocid1.compartment.oc1..aaaaaaaaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
create_vnic_details.#: "" => "1"
create_vnic_details.0.assign_public_ip: "" => "true"
create_vnic_details.0.display_name: "" => "ComputeTest1_primaryvnic"
create_vnic_details.0.freeform_tags.%: "" => "<computed>"
create_vnic_details.0.hostname_label: "" => "ComputeTest1"
create_vnic_details.0.private_ip: "" => "<computed>"
create_vnic_details.0.skip_source_dest_check: "" => "<computed>"
create_vnic_details.0.subnet_id: "" => "ocid1.subnet.oc1.iad.aaaaaaaaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
display_name: "" => "ComputeTest1"
freeform_tags.%: "" => "<computed>"
image: "" => "<computed>"
ipxe_script: "" => "<computed>"
is_pv_encryption_in_transit_enabled: "" => "<computed>"
launch_mode: "" => "<computed>"
launch_options.#: "" => "<computed>"
metadata.%: "" => "1"
metadata.ssh_authorized_keys: "" => "ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
private_ip: "" => "<computed>"
public_ip: "" => "<computed>"
region: "" => "<computed>"
shape: "" => "VM.Standard2.1"
source_details.#: "" => "1"
source_details.0.boot_volume_size_in_gbs: "" => "<computed>"
source_details.0.kms_key_id: "" => "<computed>"
source_details.0.source_id: "" => "ocid1.image.oc1.iad.aaaaaaaavzrrzlq2zvj5fd5c27jed7fwou5aqkezxbtmys4aolls54zg7f7q"
source_details.0.source_type: "" => "image"
subnet_id: "" => "<computed>"
time_created: "" => "<computed>"
time_maintenance_reboot_due: "" => "<computed>"
oci_core_instance.ComputeTest: Still creating... (10s elapsed)
oci_core_instance.ComputeTest: Still creating... (20s elapsed)
oci_core_instance.ComputeTest: Still creating... (30s elapsed)
oci_core_instance.ComputeTest: Still creating... (40s elapsed)
oci_core_instance.ComputeTest: Still creating... (50s elapsed)
oci_core_instance.ComputeTest: Still creating... (1m0s elapsed)
oci_core_instance.ComputeTest: Still creating... (1m10s elapsed)
oci_core_instance.ComputeTest: Still creating... (1m20s elapsed)
oci_core_instance.ComputeTest: Still creating... (1m30s elapsed)
oci_core_instance.ComputeTest: Still creating... (1m40s elapsed)
oci_core_instance.ComputeTest: Still creating... (1m50s elapsed)
oci_core_instance.ComputeTest: Creation complete after 1m53s (ID: ocid1.instance.oc1.iad.XXXXXXXXXXXXXXXX...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
PS C:\work\oci>


正常に終了したようなので作成されたインスタンスを確認してみます。
「パブリックIPアドレス」をメモしておきます。

TeraTermを起動し、メモしておいたIPアドレスを入力して
「OK」をクリックします。

「続行」をクリックします。

ユーザ名は「opc」と入力し、
パスフレーズがあれば入力して
「秘密鍵」には③のファイル名をフルパスで入力します。
「OK」ボタンをクリックします。

接続できました!

作成した仮想サーバを削除する場合は
「terraform destroy」を実行します。


PS C:\work\oci> terraform destroy
oci_core_instance.ComputeTest: Refreshing state... (ID: ocid1.instance.oc1.iad.XXXXXXXXXXXXXXXX...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
- destroy

Terraform will perform the following actions:

- oci_core_instance.ComputeTest


Plan: 0 to add, 0 to change, 1 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
#↑yes と入力して Enter

oci_core_instance.ComputeTest: Destroying... (ID: ocid1.instance.oc1.iad.XXXXXXXXXXXXXXXX...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)
oci_core_instance.ComputeTest: Still destroying... (ID: ocid1.instance.oc1.iad.XXXXXXXXXXXXXXXX...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, 10s elapsed)
oci_core_instance.ComputeTest: Still destroying... (ID: ocid1.instance.oc1.iad.XXXXXXXXXXXXXXXX...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, 20s elapsed)
oci_core_instance.ComputeTest: Still destroying... (ID: ocid1.instance.oc1.iad.XXXXXXXXXXXXXXXX...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, 30s elapsed)
oci_core_instance.ComputeTest: Still destroying... (ID: ocid1.instance.oc1.iad.XXXXXXXXXXXXXXXX...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, 40s elapsed)
oci_core_instance.ComputeTest: Still destroying... (ID: ocid1.instance.oc1.iad.XXXXXXXXXXXXXXXX...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, 50s elapsed)
oci_core_instance.ComputeTest: Still destroying... (ID: ocid1.instance.oc1.iad.XXXXXXXXXXXXXXXX...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, 1m0s elapsed)
oci_core_instance.ComputeTest: Still destroying... (ID: ocid1.instance.oc1.iad.XXXXXXXXXXXXXXXX...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, 1m10s elapsed)
oci_core_instance.ComputeTest: Still destroying... (ID: ocid1.instance.oc1.iad.XXXXXXXXXXXXXXXX...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, 1m20s elapsed)
oci_core_instance.ComputeTest: Destruction complete after 1m28s

Destroy complete! Resources: 1 destroyed.
PS C:\work\oci>


インスタンスの画面をみると「終了済」となっており、
削除されていることがわかります。


以上、今回はTerraformによる仮想サーバの作成を行ってみました。

今回は仮想サーバのみの構築ですが、VCN等のネットワークは勿論、
その他のサービスも Terraformで構築・管理を行うことが可能です。
使いこなしてインフラ管理をもっと楽にしたいですね!