116 lines
2.6 KiB
HCL
116 lines
2.6 KiB
HCL
### PROVIDERS
|
|
|
|
terraform {
|
|
required_providers {
|
|
cloudflare = {
|
|
source = "cloudflare/cloudflare"
|
|
version = "~> 4.0"
|
|
}
|
|
aws = {
|
|
source = "hashicorp/aws"
|
|
version = "5.17.0"
|
|
}
|
|
yoshik3s = {
|
|
source = "HideyoshiNakazone/yoshik3s"
|
|
version = "1.1.2"
|
|
}
|
|
github = {
|
|
source = "integrations/github"
|
|
version = "6.3.1"
|
|
}
|
|
}
|
|
}
|
|
|
|
provider "aws" {
|
|
region = var.aws_region
|
|
access_key = var.aws_access
|
|
secret_key = var.aws_secret
|
|
}
|
|
|
|
provider "cloudflare" {
|
|
api_token = var.cloudflare_api_token
|
|
}
|
|
|
|
provider "yoshik3s" {
|
|
# No configuration needed
|
|
}
|
|
|
|
provider "github" {
|
|
owner = var.github_owner
|
|
token = var.github_token
|
|
}
|
|
|
|
|
|
### MODULES
|
|
|
|
module "bucket" {
|
|
source = "./bucket"
|
|
providers = {
|
|
aws.main = aws
|
|
}
|
|
project_domain = var.project_domain
|
|
project_name = var.project_name
|
|
}
|
|
|
|
module "instances" {
|
|
source = "./instances"
|
|
providers = {
|
|
aws.main = aws
|
|
}
|
|
project_domain = var.project_domain
|
|
project_name = var.project_name
|
|
k3s_token = var.k3s_token
|
|
number_of_workers = var.number_of_workers
|
|
aws_region = var.aws_region
|
|
ssh_public_key_main = var.ssh_public_key_main
|
|
ssh_public_key_ci_cd = var.ssh_public_key_ci_cd
|
|
aws_main_instance_type = var.aws_main_instance_type
|
|
aws_worker_instance_type = var.aws_worker_instance_type
|
|
aws_ami = var.aws_ami
|
|
aws_spot_price = var.aws_spot_price
|
|
}
|
|
|
|
module "dns" {
|
|
source = "./dns"
|
|
providers = {
|
|
cloudflare = cloudflare
|
|
}
|
|
public_ip = module.instances.pool_master_public_ip
|
|
environment_name = var.environment_name
|
|
cloudflare_zone_id = var.cloudflare_zone_id
|
|
}
|
|
|
|
module "kubernetes" {
|
|
source = "./kubernetes"
|
|
providers = {
|
|
yoshik3s = yoshik3s
|
|
}
|
|
cluster_token = var.k3s_token
|
|
cluster_domain = var.project_domain
|
|
master_server_address = module.instances.pool_master_public_ip
|
|
cluster_main_node = module.instances.pool_master_instance
|
|
cluster_worker_node = module.instances.pool_worker_instances
|
|
}
|
|
|
|
module "github" {
|
|
source = "./github"
|
|
providers = {
|
|
github = github
|
|
}
|
|
environment_name = var.environment_name
|
|
github_owner = var.github_owner
|
|
github_repositories = var.github_repositories
|
|
cluster_kubeconfig = module.kubernetes.cluster_kubeconfig
|
|
gpg_private_key_encryption = var.gpg_private_key_encryption
|
|
}
|
|
|
|
|
|
output "cluster_kubeconfig" {
|
|
value = module.kubernetes.cluster_kubeconfig
|
|
sensitive = true
|
|
}
|
|
|
|
output "gpg_public_key_encryption" {
|
|
value = var.gpg_public_key_encryption
|
|
sensitive = true
|
|
} |