🙌

OracleCloudの新しいArmインスタンスをTerraformで作ってみる

2021/05/27に公開

4コア/24GBまで無料で永続利用できる「Always Free Arm」など複数のプログラム提供
https://ascii.jp/elem/000/004/056/4056339/

ということで、既存のTerraformコードにARMインスタンスを追加してみた。

完成形

Instance

これまでの書き方と違うのはshape_configの指定が必要な所。
その他はこれまでのインスタンス作成コードと同じで作れる。

resource "oci_core_instance" "free_instance1" {
  availability_domain = lookup(data.oci_identity_availability_domains.availability_domains.availability_domains[0], "name")

  compartment_id = var.compartment_ocid
  display_name   = "freeInstance1"
  shape          = "VM.Standard.A1.Flex" # ARMのShapeを指定
  shape_config {
    memory_in_gbs = 24 # shape_configで無料上限の4コア/24GB を指定
    ocpus         = 4
  }
  create_vnic_details {
    subnet_id        = oci_core_subnet.nomad_subnet.id
    display_name     = "primaryvnic"
    assign_public_ip = false
    hostname_label   = "freeinstance1"
  }

  source_details {
    source_type = "image"
    source_id   = var.images_arm[var.region] # ARM対応のイメージを指定。詳細は次項
  }

  metadata = {
    ssh_authorized_keys = file(var.ssh_public_key_path)
  }
}

Image

今の所ARM向けのイメージはOracleLinuxしか存在しないようなので素直に下記を利用する。

variable "images_arm" {
  type = map(string)

  default = {
    # See https://docs.us-phoenix-1.oraclecloud.com/images/
    # Oracle-provided image "Oracle-Linux-7.5-2018.10.16-0"
    us-ashburn-1 = "ocid1.image.oc1.iad.aaaaaaaadnc5jeyeslhvkvitrsqsx65z3x6vk4trycpaaeyl5fultqbjobdq"
  }
}

感想

ARMでいう4コア/24GBがx86のどれくらいに相当するかは知らないけど、太っ腹な感じがする。

free

めっちゃメモリある。

VM.Standard.E2.1.Micro

$ free -h
              total        used        free      shared  buff/cache   available
Mem:          974Mi       663Mi        66Mi        24Mi       245Mi       142Mi

VM.Standard.A1.Flex

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           22Gi       505Mi        21Gi        23Mi       451Mi        19Gi

Discussion