init do setup

This commit is contained in:
Serge Logvinov
2022-10-11 17:46:12 +03:00
parent a3fb1c90a5
commit 5e28e009f0
10 changed files with 196 additions and 12 deletions

4
digitalocean/auth.tf Normal file
View File

@@ -0,0 +1,4 @@
provider "digitalocean" {
token = var.digitalocean_token
}

15
digitalocean/common.tf Normal file
View File

@@ -0,0 +1,15 @@
# resource "digitalocean_ssh_key" "default" {
# name = "Terraform"
# public_key = file("~/.ssh/terraform.pub")
# }
resource "digitalocean_custom_image" "talos" {
# for_each = { for idx, name in var.regions : name => idx }
for_each = { "ams3" : 0 }
name = "talos"
regions = [each.key]
description = "Talos version ${var.talos_version}"
url = "https://github.com/siderolabs/talos/releases/download/${var.talos_version}/digital-ocean-amd64.raw.gz"
tags = var.tags
}

View File

@@ -0,0 +1,24 @@
# resource "digitalocean_droplet" "controlplane" {
# count = lookup(var.controlplane, "count", 0)
# location = element(var.regions, count.index)
# name = "controlplane-${count.index + 1}"
# ssh_keys = [digitalocean_ssh_key.default.fingerprint]
# image = var.image
# region = element(var.regions, count.index)
# size = lookup(var.controlplane, "type", "cpx11")
# resize_disk = false
# private_networking = false
# backups = false
# ipv6 = true
# user_data = ""
# lifecycle {
# ignore_changes = [
# resize_disk,
# image,
# user_data,
# ssh_keys,
# ]
# }
# }

7
digitalocean/network.tf Normal file
View File

@@ -0,0 +1,7 @@
resource "digitalocean_vpc" "main" {
for_each = { for idx, name in var.regions : name => idx }
name = "main-${each.key}"
region = each.key
ip_range = cidrsubnet(var.vpc_main_cidr, 8, each.value)
}

107
digitalocean/variables.tf Normal file
View File

@@ -0,0 +1,107 @@
variable "digitalocean_token" {
description = "The DigitalOcean cloud token (export TF_VAR_hcloud_token=$TOKEN)"
type = string
sensitive = true
}
variable "regions" {
description = "The id of the hezner region (oreder is important)"
type = list(string)
default = ["lon1", "ams3", "fra1"]
}
variable "kubernetes" {
type = map(string)
default = {
podSubnets = "10.32.0.0/12,fd40:10:32::/102"
serviceSubnets = "10.200.0.0/22,fd40:10:200::/112"
nodeSubnets = "192.168.0.0/16"
domain = "cluster.local"
apiDomain = "api.cluster.local"
clusterName = "talos-k8s-digitalocean"
tokenMachine = ""
caMachine = ""
token = ""
ca = ""
}
}
variable "vpc_main_cidr" {
description = "Local subnet rfc1918"
type = string
default = "172.16.0.0/16"
}
variable "controlplane" {
description = "Property of controlplane"
type = map(any)
default = {
count = 0,
type = "cpx11"
type_lb = "" # lb11, if "" use floating-ip
}
}
variable "instances" {
description = "Map of region's properties"
type = map(any)
default = {
"nbg1" = {
web_count = 0,
web_type = "cx11",
worker_count = 0,
worker_type = "cx11",
},
"fsn1" = {
web_count = 0,
web_type = "cx11",
worker_count = 0,
worker_type = "cx11",
}
"hel1" = {
web_count = 0,
web_type = "cx11",
worker_count = 0,
worker_type = "cx11",
}
}
}
variable "talos_version" {
description = "Tags version"
type = string
default = "v1.2.4"
}
variable "tags" {
description = "Tags of resources"
type = list(string)
default = ["Develop"]
}
variable "whitelist_admins" {
description = "Whitelist for administrators"
default = ["0.0.0.0/0", "::/0"]
}
variable "whitelist_web" {
description = "Whitelist for web (default Cloudflare network)"
default = [
"173.245.48.0/20",
"103.21.244.0/22",
"103.22.200.0/22",
"103.31.4.0/22",
"141.101.64.0/18",
"108.162.192.0/18",
"190.93.240.0/20",
"188.114.96.0/20",
"197.234.240.0/22",
"198.41.128.0/17",
"162.158.0.0/15",
"172.64.0.0/13",
"131.0.72.0/22",
"104.16.0.0/13",
"104.24.0.0/14",
]
}

8
digitalocean/versions.tf Normal file
View File

@@ -0,0 +1,8 @@
terraform {
required_providers {
digitalocean = {
source = "digitalocean/digitalocean"
version = "2.23.0"
}
}
}