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でOCI Computeをデプロイしてみた

Posted at

OCIのComputeをTerraformで構築する際につまづいたポイントをメモ代わりに残しておこうと思います。

TerraformはローカルのWindowsにインストールしています。

手順はこちらのOCIチュートリアルを参照。
この記事は下記リンク先とほとんど同じではあるものの、最新のシェイプのVM.Standard.E5.Flexをデプロイする時だとこの通りに行かないので、その辺りを中心に書きます。

前提条件

  • OCIのアカウントを持っていること
  • VCNの作成が完了していること
  • Terraformのインストールなどの設定が完了していること
  • Terraformのバージョンは1.13.1です

必要な情報の収集

スクリプトを記述する際に、以下の情報が必要となるので、事前にメモ帳にまとめておきます。

  • テナンシOCID
  • コンパートメントOCID
  • APIキーのフィンガープリント
  • リージョン名(東京リージョンならap-tokyo-1)
  • API署名用のRSAキーのディレクトリパス
  • SSH公開鍵のディレクトリパス
  • インスタンスシェイプ
  • インスタンスイメージOCID
  • サブネットのOCID

RSAキー、SSH公開鍵のディレクトリパスについて

ローカルのファイルに鍵を置いていたので、普通にコピーすると以下のようにコピーされます。

C:\xxx\xxx\.oci\oci_api_key.pem

しかし、\だとError: Invalid escape sequenceとなるので、/に修正しておく必要があります。

Github Copilotが事前にエラーを表示してくれていたのを無視して強行突破したらエラー出ました...

インスタンスシェイプの情報について

シェイプの一覧は下記のリンク先にあるので、作成したいシェイプを選択します。

インスタンスイメージのOCIDについて

今回は、Oracle-Autonomous-Linux-9.6-2025.09.18-0を東京リージョンに作りたいので、以下のOCIDになります。

ocid1.image.oc1.ap-tokyo-1.aaaaaaaaumo2uzlz4yxl77p5lmjearkcwkvg25konr7ttyztfk2nddt5qrxa

リージョンごとにOCIDが異なるので、下記リンクから使いたいリージョンのOCIDを探します。

スクリプトの作成

スクリプトは、provider-tfavailability-domains.tfoutput.tfに関してはOCIチュートリアルに記載の内容で問題ありませんでした。

compute.tfの作成

compute.tfに関しては、OCIチュートリアルではVM.Standard2.1という古いシェイプを使っているのと、子のシェイプはOCPUとメモリが固定値でした。
しかし、今回使うVM.Standard.E5.Flexはフレキシブルシェイプなので、スクリプトの中でOCPUとメモリを指定してあげる必要があります。

それを考慮すると下記のようなスクリプトになります。
今回は小さめの1OCPU、16GBのインスタンスを作成します。

resource "oci_core_instance" "test-terraform" {
    # Required
    availability_domain = data.oci_identity_availability_domains.ads.availability_domains[0].name
    compartment_id = "ocid1.compartment.oc1..xxx"
    shape = "VM.Standard.E5.Flex"
    source_details {
        source_id = "ocid1.image.oc1.ap-tokyo-1.aaaaaaaaumo2uzlz4yxl77p5lmjearkcwkvg25konr7ttyztfk2nddt5qrxa"
        source_type = "image"
    }

    # Optional
    display_name = "test-terraform"
    create_vnic_details {
        assign_public_ip = true
        subnet_id = "ocid1.subnet.oc1.ap-tokyo-1.xxx"
    }
    metadata = {
        ssh_authorized_keys = file("C:/xxx/xxx/ssh-key-xxx.key.pub")
    } 
    preserve_boot_volume = false

    # インスタンスのシェイプ構成
    shape_config {
    # CPU数を設定
    ocpus         = 1
    # メモリサイズを設定
    memory_in_gbs = 16
    }
}

その他のOptionなどについてはTerraformのドキュメントについて詳しく書いてありました。

一応、OCIのドキュメントにも書いてありましたが、Terraformのドキュメントの方が細かく記載されています。

インスタンスのプロビジョニング

# 初期化
terraform init

# 計画
terraform plan

# 適用
terraform apply

プロビジョニングの確認

# プロビジョニングの確認
terraform apply

一応コンソールからも確認しておきます。
きちんと指定したシェイプで作成されていました。

image.png

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?