module "network" {
source = "../modules/network"
}
resource "opentelekomcloud_dns_zone_v2" "public_example_com" {
name = "public.examplecheck.com."
email = "public@examplecheck.com"
description = "An example for public zone"
ttl = 3000
type = "public"
}
resource "opentelekomcloud_dns_zone_v2" "private_example_com" {
name = "private.examplecheck.com."
email = "private@examplecheck.com"
description = "An example for private zone"
ttl = 3000
type = "private"
router {
router_id = module.network.shared_subnet.vpc_id
router_region = var.region
}
}
resource "opentelekomcloud_dns_recordset_v2" "rs_example_com" {
zone_id = opentelekomcloud_dns_zone_v2.private_example_com.id
name = "test.private.examplecheck.com."
description = "An example record set"
ttl = 3000
type = "A"
records = ["10.0.0.1"]
}
module "network" {
source = "../modules/network"
}
resource "opentelekomcloud_compute_keypair_v2" "terraform" {
name = "terraform"
public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAjpC1hwiOCCmKEWxJ4qzTTsJbKzndLotBCz5PcwtUnflmU+gHJtWMZKpuEGVi29h0A/+ydKek1O18k10Ff+4tyFjiHDQAnOfgWf7+b1yK+qDip3X1C0UPMbwHlTfSGWLGZqd9LvEFx9k3h/M+VtMvwR1lJ9LUyTAImnNjWG7TaIPmui30HvM2UiFEmqkr4ijq45MyX2+fLIePLRIF61p4whjHAQYufqyno3BS48icQb4p6iVEZPo4AE2o9oIyQvj2mx4dk5Y8CgSETOZTYDOR3rU2fZTRDRgPJDH9FWvQjF5tA0p3d9CoWWd2s6GKKbfoUIi8R/Db1BSPJwkqB"
}
resource "opentelekomcloud_networking_secgroup_rule_v2" "secgroup_rule_1" {
direction = "ingress"
ethertype = "IPv4"
protocol = "tcp"
port_range_min = 22
port_range_max = 22
remote_ip_prefix = "0.0.0.0/0"
security_group_id = module.network.default_security_group_id
}
resource "opentelekomcloud_networking_secgroup_rule_v2" "secgroup_rule_2" {
direction = "ingress"
ethertype = "IPv4"
protocol = "tcp"
port_range_min = 80
port_range_max = 80
remote_ip_prefix = "0.0.0.0/0"
security_group_id = module.network.default_security_group_id
}
resource "opentelekomcloud_networking_secgroup_rule_v2" "secgroup_rule_3" {
direction = "ingress"
ethertype = "IPv4"
protocol = "icmp"
remote_ip_prefix = "0.0.0.0/0"
security_group_id = module.network.default_security_group_id
}
resource "opentelekomcloud_networking_floatingip_v2" "fip_1" {
pool = "admin_external_net"
}
resource "opentelekomcloud_networking_floatingip_associate_v2" "fip_associated_1" {
floating_ip = opentelekomcloud_networking_floatingip_v2.fip_1.address
port_id = opentelekomcloud_networking_port_v2.port_1.id
}
resource "opentelekomcloud_networking_port_v2" "port_1" {
admin_state_up = true
fixed_ip {
subnet_id = module.network.shared_subnet.network_id
ip_address = "10.0.0.5"
}
network_id = module.network.shared_subnet.vpc_id
}
resource "opentelekomcloud_compute_instance_v2" "instance_1" {
name = "terraform"
image_name = var.image
flavor_id = "s3.large.1"
key_pair = opentelekomcloud_compute_keypair_v2.terraform.name
security_groups = [module.network.default_security_group_id]
depends_on = [ opentelekomcloud_networking_floatingip_associate_v2.fip_associated_1 ]
network {
port = opentelekomcloud_networking_port_v2.port_1.id
}
connection {
user = "linux"
host = opentelekomcloud_networking_floatingip_v2.fip_1.address
private_key = <
module "network" {
source = "../modules/network"
}
resource "opentelekomcloud_networking_secgroup_rule_v2" "secgroup_rule_1" {
direction = "ingress"
ethertype = "IPv4"
protocol = "tcp"
port_range_min = 22
port_range_max = 22
remote_ip_prefix = "0.0.0.0/0"
security_group_id = module.network.default_security_group_id
}
resource "opentelekomcloud_networking_secgroup_rule_v2" "secgroup_rule_2" {
direction = "ingress"
ethertype = "IPv4"
protocol = "tcp"
port_range_min = 80
port_range_max = 80
remote_ip_prefix = "0.0.0.0/0"
security_group_id = module.network.default_security_group_id
}
resource "opentelekomcloud_as_group_v1" "as_group" {
scaling_group_name = "terraform"
scaling_configuration_id = opentelekomcloud_as_configuration_v1.as_configuration.id
desire_instance_number = 2
min_instance_number = 0
max_instance_number = 3
networks {
id = module.network.shared_subnet.network_id
}
security_groups {
id = module.network.default_security_group_id
}
vpc_id = module.network.shared_subnet.vpc_id
delete_publicip = true
delete_instances = "yes"
}
resource "opentelekomcloud_as_policy_v1" "as_policy" {
scaling_policy_name = "terraform"
scaling_group_id = opentelekomcloud_as_group_v1.as_group.id
scaling_policy_type = "ALARM"
scaling_policy_action {
operation = "ADD"
instance_number = 1
}
alarm_id = opentelekomcloud_ces_alarmrule.alarm_rule.id
}
data "opentelekomcloud_images_image_v2" "latest_image" {
name = var.image_name
most_recent = true
}
resource "opentelekomcloud_as_configuration_v1" "as_configuration" {
scaling_configuration_name = "terraform"
instance_config {
flavor = var.flavor
image = data.opentelekomcloud_images_image_v2.latest_image.id
disk {
size = 40
volume_type = "SATA"
disk_type = "SYS"
}
key_name = var.keyname
user_data = <> /home/user.txt
EOF
}
}
resource "opentelekomcloud_ces_alarmrule" "alarm_rule" {
alarm_action_enabled = "false"
alarm_name = "terraform"
metric {
namespace = "SYS.AS"
metric_name = "cpu_util"
dimensions {
name = "AutoScalingGroup"
value = opentelekomcloud_as_group_v1.as_group.id
}
}
condition {
period = 300
filter = "average"
comparison_operator = ">"
value = 80
unit = "%"
count = 2
}
}
module "network" {
source = "../modules/network"
}
resource "opentelekomcloud_lb_pool_v3" "pool_1" {
name = "pool_1"
loadbalancer_id = opentelekomcloud_lb_loadbalancer_v3.lb_1.id
lb_algorithm = "ROUND_ROBIN"
protocol = "TCP"
session_persistence {
type = "SOURCE_IP"
persistence_timeout = "30"
}
}
resource "opentelekomcloud_lb_loadbalancer_v3" "lb_1" {
subnet_id = module.network.shared_subnet.subnet_id
network_ids = [module.network.shared_subnet.network_id]
availability_zones = [var.az]
}
resource "opentelekomcloud_lb_listener_v3" "listener_1" {
name = "listener_1"
description = "some interesting description"
loadbalancer_id = opentelekomcloud_lb_loadbalancer_v3.lb_1.id
protocol = "HTTP"
protocol_port = 8080
advanced_forwarding = true
sni_match_algo = "wildcard"
insert_headers {
forwarded_host = true
}
ip_group {
id = opentelekomcloud_lb_ipgroup_v3.group_1.id
enable = true
}
}
resource "opentelekomcloud_lb_ipgroup_v3" "group_1" {
name = "group_1"
description = "group description"
ip_list {
ip = "192.168.0.10"
description = "one"
}
}
resource "opentelekomcloud_as_group_v1" "as_group_1" {
scaling_group_name = "as_group_example"
scaling_configuration_id = opentelekomcloud_as_configuration_v1.as_config_1.id
desire_instance_number = 2
min_instance_number = 0
max_instance_number = 3
networks {
id = module.network.shared_subnet.network_id
}
security_groups {
id = module.network.default_security_group_id
}
vpc_id = module.network.shared_subnet.vpc_id
lbaas_listeners {
pool_id = opentelekomcloud_lb_pool_v3.pool_1.id
protocol_port = opentelekomcloud_lb_listener_v3.listener_1.protocol_port
}
delete_publicip = true
delete_instances = "yes"
}
resource "opentelekomcloud_as_policy_v1" "policy_example" {
scaling_policy_name = "policy_example"
scaling_group_id = opentelekomcloud_as_group_v1.as_group_1.id
scaling_policy_type = "RECURRENCE"
scaling_policy_action {
operation = "ADD"
}
scheduled_policy {
launch_time = "07:00"
recurrence_type = "Daily"
end_time = "2024-12-30T12:00Z"
}
}
resource "opentelekomcloud_as_configuration_v1" "as_config_1" {
scaling_configuration_name = "config_example"
instance_config {
flavor = var.flavor
image = var.image_id
disk {
size = 40
volume_type = "SATA"
disk_type = "SYS"
}
key_name = var.keyname
user_data = < /tmp/four
# ...
EOF
}
}
module "network" {
source = "../modules/network"
}
resource "opentelekomcloud_lb_loadbalancer_v3" "loadbalancer" {
router_id = module.network.shared_subnet.vpc_id
network_ids = [module.network.shared_subnet.network_id]
availability_zones = ["eu-de-01"]
}
resource "opentelekomcloud_lb_ipgroup_v3" "group_1" {
name = "group_1"
description = "some interesting description 1"
ip_list {
ip = "192.168.10.10"
description = "first"
}
depends_on = [opentelekomcloud_lb_loadbalancer_v3.loadbalancer]
}
resource "opentelekomcloud_lb_listener_v3" "listener" {
loadbalancer_id = opentelekomcloud_lb_loadbalancer_v3.loadbalancer.id
protocol = "HTTP"
protocol_port = 8080
advanced_forwarding = true
sni_match_algo = "wildcard"
insert_headers {
forwarded_host = true
}
ip_group {
id = opentelekomcloud_lb_ipgroup_v3.group_1.id
enable = true
}
depends_on = [
opentelekomcloud_lb_loadbalancer_v3.loadbalancer,
opentelekomcloud_lb_ipgroup_v3.group_1
]
}
resource "opentelekomcloud_lb_pool_v3" "pool" {
loadbalancer_id = opentelekomcloud_lb_loadbalancer_v3.loadbalancer.id
lb_algorithm = "ROUND_ROBIN"
protocol = "HTTP"
depends_on = [opentelekomcloud_lb_listener_v3.listener]
}
resource "opentelekomcloud_lb_policy_v3" "policy" {
name = "policy_updated"
description = "some interesting description"
action = "REDIRECT_TO_POOL"
listener_id = opentelekomcloud_lb_listener_v3.listener.id
redirect_pool_id = opentelekomcloud_lb_pool_v3.pool.id
position = 37
depends_on = [opentelekomcloud_lb_listener_v3.listener]
}
resource "opentelekomcloud_lb_rule_v3" "rule" {
type = "PATH"
compare_type = "EQUAL_TO"
value = "/test"
policy_id = opentelekomcloud_lb_policy_v3.policy.id
conditions {
value = "/home"
}
depends_on = [opentelekomcloud_lb_listener_v3.listener]
}
module "network" {
source = "../modules/network"
}
resource "opentelekomcloud_rds_instance_v3" "instance" {
name = "tf_rds_instance_1"
availability_zone = [var.az]
db {
password = "Postgres!120521"
type = "PostgreSQL"
version = "10"
port = "8635"
}
security_group_id = module.network.default_security_group_id
subnet_id = module.network.shared_subnet.network_id
vpc_id = module.network.shared_subnet.vpc_id
volume {
type = "COMMON"
size = 40
}
flavor = "rds.pg.c2.large"
backup_strategy {
start_time = "08:00-09:00"
keep_days = 0
}
tags = {
muh = "value-create"
kuh = "value-create"
}
lower_case_table_names = "0"
}