[A-00203] Terraform入門(OCI)

oracle cloud infrastructure上にterraformで色々デプロイしたいと思います。

・vcn, subnet, compute構成で作ってみる

アーキテクチャは下記のようなイメージです。

TENANCY_OCID     = "<tenancy-id>"
USER_OCID        = "<user-id>"
PRIVATE_KEY_PATH = "<ssh-key-path>"
FINGERPRINT      = "<fingerprint>"
REGION           = "<region>"
AVAILABILITY_DOMAIN = "<availability-domain>"
variable "TENANCY_OCID" {
  type = string
}

variable "USER_OCID" {
  type = string
}

variable "PRIVATE_KEY_PATH" {
  type = string
}

variable "FINGERPRINT" {
  type = string
}

variable "REGION" {
  type = string
}

variable "AVAILABILITY_DOMAIN" {
  type = string
}
terraform {
  required_providers {
    oci = {
      source  = "oracle/oci"
      version = "5.46.0"
    }
  }
}

provider "oci" {
  tenancy_ocid     = var.TENANCY_OCID
  user_ocid        = var.USER_OCID
  private_key_path = var.PRIVATE_KEY_PATH
  fingerprint      = var.FINGERPRINT
  region           = var.REGION
}
data "oci_identity_availability_domains" "ads" {
  compartment_id = var.AVAILABILITY_DOMAIN
}
resource "oci_core_vcn" "vcn1" {
  cidr_block     = "10.0.0.0/16"
  dns_label      = "vcn1"
  compartment_id = data.oci_identity_availability_domains.ads.compartment_id
  display_name   = "vcn1"
}

resource "oci_core_subnet" "subnet1" {
  cidr_block     = "10.0.1.0/24"
  compartment_id = data.oci_identity_availability_domains.ads.compartment_id
  vcn_id         = oci_core_vcn.vcn1.id
  display_name   = "subnet1"
}
resource "oci_core_instance" "vm1" {
  compartment_id      = data.oci_identity_availability_domains.ads.compartment_id
  availability_domain = lookup(data.oci_identity_availability_domains.ads.availability_domains[0], "name")
  shape               = "VM.Standard.E2.1.Micro"
  display_name        = "vm1"
  shape_config {
    memory_in_gbs = 1
    ocpus         = 1
  }
  create_vnic_details {
    subnet_id = oci_core_subnet.subnet1.id
  }
  source_details {
    source_id   = "ocid1.image.oc1.ap-tokyo-1.aaaaaaaamiyhq6rfjlg3lajgtr4kq5x6wcrrvdkbnpe4vsmdqgomzu7mziva"
    source_type = "image"
  }
}

下記のコマンドにて実行します。

terraform init
terraform plan -var-file=oci.tfvars
terraform apply -var-file=oci.tfvars
terraform destroy -var-file=oci.tfvars

・Appendix

参考文献はこちら

https://docs.public.oneportal.content.oci.oraclecloud.com/ja-jp/iaas/Content/Compute/References/computeshapes.htm

https://zenn.dev/ymmmtym/scraps/683fbee5d4e579

https://zenn.dev/korosuke613/scraps/d88fecec74fdf9

https://docs.oracle.com/en-us/iaas/images/image/eadb47cb-09b2-4ded-9073-40f1f7f51051

https://qiita.com/dingtianhongjie/items/9204a675d2edb4c4e4d4

https://qiita.com/feifo/items/2ca1f8451fb7f74d77c5

https://docs.oracle.com/ja-jp/iaas/Content/API/SDKDocs/terraformbestpractices_topic-Availability_Domains.htm

https://qiita.com/Skogkatter112/items/98c6f815b4e0b6556b7e

https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/core_subnet

https://docs.oracle.com/ja-jp/iaas/developer-tutorials/tutorials/tf-vcn/01-summary.htm

https://solutions.system-exe.co.jp/oracle-cloud/blog/introdution-to-terraform

https://docs.oracle.com/ja-jp/iaas/Content/API/SDKDocs/terraformbestpractices_topic-vcndefaults.htm

https://github.com/oracle-terraform-modules/terraform-oci-vcn/blob/main/examples/module_composition/variables.tf

https://docs.oracle.com/ja-jp/iaas/Content/GSG/Tasks/gettingstartedwiththeCLI.htm

https://docs.oracle.com/en-us/iaas/Content/Compute/References/images.htm#OracleProvided_Images

https://oracle-japan.github.io/ocitutorials/intermediates/terraform

https://qiita.com/feifo/items/c989e2dab1d78d0b8162

https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/core_image

https://registry.terraform.io/providers/oracle/oci/latest/docs

https://docs.oracle.com/ja-jp/iaas/developer-tutorials/tutorials/tf-provider/01-summary.htm

https://developer.hashicorp.com/terraform/tutorials/oci-get-started/oci-build

https://qiita.com/dingtianhongjie/items/485c8abf7b3af9529f69

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*