106 lines
2.8 KiB
HCL
106 lines
2.8 KiB
HCL
# 创建 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
|
||
}
|
||
]
|
||
}
|
||
}
|