前回に引き続き OCI 上にリソースを作成します。今回はすでに作成した VCN に VM を 1 台配置します。簡単に VM だけ作成します。NSG やルート ルールなどを効率的に作る方法は後ほど考えてききたいですね。。。

VM リソース
前回と同じディレクトリに vm-ubuntu.tf
というファイルを作成し、次のような内容を記述します。
resource "oci_core_instance" "vm_ubuntu" {
display_name = var.vm_ubuntu_display_name
compartment_id = var.compartment_id
shape = var.vm_ubuntu_shape
availability_domain = "${lookup(data.oci_identity_availability_domains.ADs.availability_domains[0],"name")}"
freeform_tags = {"${var.defined_tag_name}"= "${var.defined_tag_value}"}
create_vnic_details {
display_name = var.vm_ubuntu_create_vnic_details_display_name
freeform_tags = {"${var.defined_tag_name}"= "${var.defined_tag_value}"}
#hostname_label = var.vm_ubuntu_hostname_label
assign_public_ip = true
subnet_id = oci_core_subnet.subnet_public.id
}
source_details {
source_id = var.vm_ubuntu_image_id
source_type = "image"
}
metadata = {
ssh_authorized_keys = file("~/.ssh/****.pem")
}
preserve_boot_volume = false
}
VM を作成する際のプロパティは非常に多かったのですが、最低限動くところだけピックアップするとこの辺りになるかと思います。
- VM 表示名
- コンパートメント ID
- 可用性ドメイン
- シェイプ
- ソース イメージ ID
- SSH キー公開鍵情報
- 配置先サブネット ID
ソース イメージの ID は次のようなコマンドを実行して利用するイメージの ID を確認しておきます。
# ソース イメージの一覧取得
$ oci compute image list --compartment-id <Compartment OCID>
# OS および OS バージョンを指定した一覧取得
$ oci compute image list --compartment-id <Compartment OCID> --operating-system "Canonical Ubuntu" --operating-system-version 20.04
また、SSH キー公開鍵ファイルを事前に用意しておき、ファイルを読み込んでいます。接続する際には対応する秘密鍵の情報を使用します。
変数用に vm-ubuntu-var.tf
というファイルを作成して次のように記載します。
variable "vm_ubuntu_display_name" {
default = "snyoci-jpe-lab-ubnt20"
}
variable "vm_ubuntu_shape" {
default = "VM.Standard.E2.1.Micro"
}
variable "vm_ubuntu_create_vnic_details_display_name" {
default = "nic-snyoci-jpe-lab-ubnt20"
}
variable "vm_ubuntu_hostname_label" {
default = "snyocijpelabubnt20"
}
variable "vm_ubuntu_fault_domain" {
default = "FAULT-DOMAIN-1"
}
variable "vm_ubuntu_image_id" {
default = "ocid1.image.oc1.ap-tokyo-1.aaaaaaaadeswedg2atub26mnfyu2wbqrjigremlvcf4neoluz4jumq3wawaq"
}
プロビジョニング
作成したら terraform plan
と terraform apply
コマンドでプロビジョニングします。無事作成できました。

コメント