|
| 1 | +provider "random" {} |
| 2 | + |
| 3 | +resource "random_password" "password" { |
| 4 | + length = 10 |
| 5 | + special = true |
| 6 | + override_special = "_%@" |
| 7 | + min_upper = 1 |
| 8 | + min_lower = 1 |
| 9 | + min_numeric = 1 |
| 10 | + min_special = 1 |
| 11 | +} |
| 12 | + |
| 13 | +resource "volcengine_ecs_instance" "instance" { |
| 14 | + instance_name = "volcengine_bj_ecs" |
| 15 | + instance_type = "ecs.e-c1m1.large" |
| 16 | + image_id = data.volcengine_images.debian.images[0].image_id |
| 17 | + subnet_id = volcengine_subnet.subnet.id |
| 18 | + security_group_ids = [volcengine_security_group.group.id] |
| 19 | + system_volume_type = "ESSD_PL0" |
| 20 | + system_volume_size = 20 |
| 21 | + instance_charge_type = "PostPaid" |
| 22 | + password = random_password.password.result |
| 23 | + |
| 24 | + user_data = base64encode(<<EOF |
| 25 | +#!/bin/bash |
| 26 | +sudo apt-get update |
| 27 | +sudo apt-get install -y ca-certificates |
| 28 | +sudo apt-get install -y curl |
| 29 | +sudo apt-get -y install wget |
| 30 | +sudo apt-get install -y lrzsz |
| 31 | +sudo apt-get install -y tmux |
| 32 | +sudo apt-get install -y unzip |
| 33 | +sudo echo "set-option -g history-limit 20000" >> ~/.tmux.conf |
| 34 | +sudo echo "set -g mouse on" >> ~/.tmux.conf |
| 35 | +
|
| 36 | +sudo echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf |
| 37 | +sudo echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf |
| 38 | +sudo sysctl -p |
| 39 | +
|
| 40 | +sudo apt-get install -y python3-pip |
| 41 | +sudo pip3 install trzsz --break-system-packages |
| 42 | +
|
| 43 | +EOF |
| 44 | + ) |
| 45 | +} |
| 46 | + |
| 47 | +resource "volcengine_eip_address" "eip" { |
| 48 | + billing_type = "PostPaidByTraffic" |
| 49 | + bandwidth = 100 |
| 50 | + isp = "BGP" |
| 51 | + name = "volcengine_bj_eip" |
| 52 | + description = "EIP for ECS instance" |
| 53 | +} |
| 54 | + |
| 55 | +resource "volcengine_eip_associate" "eip_attach" { |
| 56 | + allocation_id = volcengine_eip_address.eip.id |
| 57 | + instance_id = volcengine_ecs_instance.instance.id |
| 58 | + instance_type = "EcsInstance" |
| 59 | +} |
| 60 | + |
| 61 | +resource "volcengine_security_group" "group" { |
| 62 | + security_group_name = "volcengine_security_group" |
| 63 | + vpc_id = volcengine_vpc.vpc.id |
| 64 | +} |
| 65 | + |
| 66 | +resource "volcengine_security_group_rule" "allow_all_tcp" { |
| 67 | + direction = "ingress" |
| 68 | + security_group_id = volcengine_security_group.group.id |
| 69 | + protocol = "tcp" |
| 70 | + port_start = 1 |
| 71 | + port_end = 65535 |
| 72 | + cidr_ip = "0.0.0.0/0" |
| 73 | + depends_on = [ |
| 74 | + volcengine_security_group.group |
| 75 | + ] |
| 76 | +} |
| 77 | + |
| 78 | +resource "volcengine_vpc" "vpc" { |
| 79 | + vpc_name = "volcengine_vpc" |
| 80 | + cidr_block = "172.16.0.0/16" |
| 81 | +} |
| 82 | + |
| 83 | +resource "volcengine_subnet" "subnet" { |
| 84 | + subnet_name = "volcengine_subnet" |
| 85 | + cidr_block = "172.16.0.0/24" |
| 86 | + zone_id = data.volcengine_zones.default.zones[0].id |
| 87 | + vpc_id = volcengine_vpc.vpc.id |
| 88 | +} |
| 89 | + |
| 90 | +data "volcengine_zones" "default" { |
| 91 | +} |
| 92 | + |
| 93 | +data "volcengine_images" "debian" { |
| 94 | + os_type = "Linux" |
| 95 | + visibility = "public" |
| 96 | + instance_type_id = "ecs.e-c1m1.large" |
| 97 | + name_regex = "Debian 12" |
| 98 | +} |
0 commit comments