[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://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://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://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
コメントを残す