OCI インスタンスにエフェメラルIPアドレスをTerraformで付与してみた

数か月前にOCIのインスタンスエフェメラIPアドレスを付与してみたけど改めて備忘録として残そうと思います。

Terraformコンフィグ

/* サーバ */
resource "oci_core_instance" "instance9" {
    availability_domain = "${data.oci_identity_availability_domain.ad1.name}"
    compartment_id      = "${var.compartment}"
    display_name        = "TESTSERVER"
    shape               = "${var.instance-shape1}"
    create_vnic_details {
        assign_public_ip = false
        subnet_id      = "${oci_core_subnet.subnet1.id}"
        nsg_ids = ["${oci_core_network_security_group.sg_web1.id}"]
    }
    source_details {
        source_type = "image"
        source_id   = "${var.instance-image-win2019-ocid[var.EC-region]}"
    }
    shape_config {
        ocpus = "1"
    }
}
/* サーバ の Private IP を指定して予約済 Public IP を割り当てる */
resource "oci_core_public_ip" "ephemeral_public_ip_assigned3" {
    compartment_id = "${var.compartment}"
    lifetime = "RESERVED"
    display_name   = "testserver_assined"
    private_ip_id  = "${lookup(data.oci_core_private_ips.instance_private_ips2.private_ips[0], "id")}"
}
/* サーバ の VNIC 一覧を取得する */
data "oci_core_vnic_attachments" "instance_vnics2" {
  compartment_id      =  "${var.compartment}"
  instance_id         = "${oci_core_instance.instance9.id}"
}
/* サーバ の VNIC 一覧からプライマリ VNIC を取得する */
data "oci_core_vnic" "instance_primary_vnic2" {
  vnic_id = "${lookup(data.oci_core_vnic_attachments.instance_vnics2.vnic_attachments[0], "vnic_id")}"
}
/* サーバ のプライマリ VNIC に割り当てられている Private IP を取得する */
data "oci_core_private_ips" "instance_private_ips2" {
  vnic_id = "${data.oci_core_vnic.instance_primary_vnic2.id}"
}