Files
terraform/oracle/optimized_config.tf

142 lines
3.3 KiB
HCL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
terraform {
required_providers {
oci = {
source = "oracle/oci"
version = ">= 4.0.0"
}
}
}
provider "oci" {
config_file_profile = "DEFAULT"
}
# VCN (Virtual Cloud Network)
resource "oci_core_vcn" "main_vcn" {
compartment_id = var.compartment_id
cidr_block = "10.0.0.0/16"
display_name = "main-vcn"
dns_label = "mainvcn"
}
# Internet Gateway
resource "oci_core_internet_gateway" "main_ig" {
compartment_id = var.compartment_id
display_name = "main-internet-gateway"
vcn_id = oci_core_vcn.main_vcn.id
}
# Route Table
resource "oci_core_route_table" "main_rt" {
compartment_id = var.compartment_id
vcn_id = oci_core_vcn.main_vcn.id
display_name = "main-route-table"
route_rules {
destination = "0.0.0.0/0"
destination_type = "CIDR_BLOCK"
network_entity_id = oci_core_internet_gateway.main_ig.id
}
}
# Security List
resource "oci_core_security_list" "main_sl" {
compartment_id = var.compartment_id
display_name = "main-security-list"
vcn_id = oci_core_vcn.main_vcn.id
egress_security_rules {
protocol = "6"
destination = "0.0.0.0/0"
}
ingress_security_rules {
protocol = "6"
source = "0.0.0.0/0"
tcp_options {
min = 22
max = 22
}
}
ingress_security_rules {
protocol = "6"
source = "0.0.0.0/0"
tcp_options {
min = 80
max = 80
}
}
ingress_security_rules {
protocol = "6"
source = "0.0.0.0/0"
tcp_options {
min = 443
max = 443
}
}
ingress_security_rules {
protocol = "1"
source = "0.0.0.0/0"
}
}
# Subnet
resource "oci_core_subnet" "main_subnet" {
availability_domain = var.availability_domain
cidr_block = "10.0.1.0/24"
compartment_id = var.compartment_id
display_name = "main-subnet"
vcn_id = oci_core_vcn.main_vcn.id
route_table_id = oci_core_route_table.main_rt.id
security_list_ids = [oci_core_security_list.main_sl.id]
dhcp_options_id = oci_core_vcn.main_vcn.default_dhcp_options_id
dns_label = "mainsub"
}
# 实例 A1 (高规格实例)
resource "oci_core_instance" "instance_a1" {
availability_domain = var.availability_domain
compartment_id = var.compartment_id
display_name = "instance-A1"
shape = var.a1_shape
create_vnic_details {
subnet_id = oci_core_subnet.main_subnet.id
assign_public_ip = true
hostname_label = "instancea1"
}
source_details {
source_type = "image"
source_id = var.image_id
}
metadata = {
ssh_authorized_keys = var.ssh_public_key
}
timeouts {
create = "60m"
}
}
# 附加块存储卷给 A1 实例
resource "oci_core_volume" "a1_data_volume" {
availability_domain = var.availability_domain
compartment_id = var.compartment_id
display_name = "a1-data-volume"
size_in_gbs = var.a1_storage_size_gb # 可配置的存储大小
}
# 将数据卷附加到 A1 实例
resource "oci_core_volume_attachment" "a1_volume_attachment" {
attachment_type = "paravirtualized"
instance_id = oci_core_instance.instance_a1.id
volume_id = oci_core_volume.a1_data_volume.id
}
# 可选:第二个较小的实例 (如果需要,但现在我们将配置为删除)
# 对于你的需求我们会专注于 A1 实例移除其他小实例