# 创建 ash2e 实例配置 resource "oci_core_instance" "ash2e" { provider = oci.us # 基本配置 compartment_id = data.consul_keys.oracle_config_us.var.tenancy_ocid availability_domain = "TZXJ:US-ASHBURN-AD-1" shape = "VM.Standard.E2.1.Micro" display_name = "ash2e" # 使用 Ubuntu 24.04 LTS source_details { source_type = "image" source_id = "ocid1.image.oc1.iad.aaaaaaaahmozwney6aptbe6dgdh3iledjxr2v6q74fjpatgnwiekedftmm2q" # Ubuntu 24.04 LTS boot_volume_size_in_gbs = 50 boot_volume_vpus_per_gb = 10 } # 网络配置 - 启用 IPv6,自动分配 create_vnic_details { assign_public_ip = true assign_ipv6ip = true # 启用 IPv6,让 Oracle 自动分配 hostname_label = "ash2e" subnet_id = "ocid1.subnet.oc1.iad.aaaaaaaapkx25eckkl3dps67o35iprz2gkqjd5bo3rc4rxf4si5hyj2ocara" # 使用 ash1d 的子网 } # SSH 密钥 - 使用本机的公钥 metadata = { ssh_authorized_keys = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSUUfma8FKEFvH8Nq65XM2PZ9kitfgv1q727cKV9y5Z houzhongxu@seekkey.tech" user_data = base64encode(<<-EOF #!/bin/bash # 创建 ben 用户 useradd -m -s /bin/bash ben usermod -aG sudo ben # 为 ben 用户添加 SSH 密钥 mkdir -p /home/ben/.ssh echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSUUfma8FKEFvH8Nq65XM2PZ9kitfgv1q727cKV9y5Z houzhongxu@seekkey.tech" >> /home/ben/.ssh/authorized_keys chown -R ben:ben /home/ben/.ssh chmod 700 /home/ben/.ssh chmod 600 /home/ben/.ssh/authorized_keys # 更新系统 apt update && apt upgrade -y # 安装常用工具 apt install -y curl wget git vim htop # 配置主机名 hostnamectl set-hostname ash2e # 重启网络服务以获取 IPv6 systemctl restart networking EOF ) } # 临时禁用保护以便重新创建 lifecycle { prevent_destroy = false ignore_changes = [ source_details, metadata, create_vnic_details, time_created ] } } # 获取子网信息 data "oci_core_subnets" "us_subnets" { provider = oci.us compartment_id = data.consul_keys.oracle_config_us.var.tenancy_ocid vcn_id = data.oci_core_vcns.us_vcns.virtual_networks[0].id } # 获取 VCN 信息 data "oci_core_vcns" "us_vcns" { provider = oci.us compartment_id = data.consul_keys.oracle_config_us.var.tenancy_ocid } output "ash2e_instance_info" { value = { id = oci_core_instance.ash2e.id public_ip = oci_core_instance.ash2e.public_ip private_ip = oci_core_instance.ash2e.private_ip state = oci_core_instance.ash2e.state display_name = oci_core_instance.ash2e.display_name } } output "us_subnets_info" { value = { subnets = [ for subnet in data.oci_core_subnets.us_subnets.subnets : { id = subnet.id display_name = subnet.display_name cidr_block = subnet.cidr_block availability_domain = subnet.availability_domain } ] } }