69 lines
2.2 KiB
HCL
69 lines
2.2 KiB
HCL
provider "aws" {
|
|
default_tags {
|
|
tags = {
|
|
Id = local.identifier
|
|
Owner = local.email
|
|
}
|
|
}
|
|
}
|
|
|
|
locals {
|
|
identifier = var.identifier # this is a random unique string that can be used to identify resources in the cloud provider
|
|
category = "basic"
|
|
example = "directnetworkdomain"
|
|
email = "terraform-ci@suse.com"
|
|
project_name = "tf-${substr(md5(join("-", [local.category, local.example, md5(local.identifier)])), 0, 5)}-${local.identifier}"
|
|
image = "sles-15"
|
|
port = 443 # application port
|
|
protocol = "tcp" # application protocol
|
|
ip = chomp(data.http.myip.response_body)
|
|
zone = var.zone # the zone must already exist in route53 and be globally available
|
|
}
|
|
|
|
data "http" "myip" {
|
|
url = "https://ipinfo.io/ip"
|
|
}
|
|
|
|
resource "random_pet" "server" {
|
|
keepers = {
|
|
# regenerate the pet name when the identifier changes
|
|
identifier = local.identifier
|
|
}
|
|
length = 1
|
|
}
|
|
|
|
module "access" {
|
|
source = "rancher/access/aws"
|
|
version = "v3.0.2"
|
|
vpc_name = "${local.project_name}-vpc"
|
|
vpc_public = true
|
|
security_group_name = "${local.project_name}-sg"
|
|
security_group_type = "project"
|
|
load_balancer_use_strategy = "skip"
|
|
}
|
|
|
|
module "this" {
|
|
depends_on = [
|
|
module.access,
|
|
]
|
|
source = "../../../" # change this to "rancher/server/aws" per https://registry.terraform.io/modules/rancher/server/aws/latest
|
|
# version = "v1.1.1" # when using this example you will need to set the version
|
|
image_type = local.image
|
|
server_name = "${local.project_name}-${random_pet.server.id}"
|
|
server_type = "small"
|
|
subnet_name = keys(module.access.subnets)[0]
|
|
security_group_name = module.access.security_group.tags_all.Name
|
|
direct_access_use_strategy = "network"
|
|
add_domain = true
|
|
domain_name = "${local.project_name}.${local.zone}"
|
|
domain_zone = local.zone
|
|
server_access_addresses = {
|
|
"runner" = {
|
|
port = local.port
|
|
protocol = local.protocol
|
|
ip_family = "ipv4"
|
|
cidrs = ["${local.ip}/32"]
|
|
}
|
|
}
|
|
}
|