mgmt/create-ash2e.tf

106 lines
2.8 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.

# 创建 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
}
]
}
}