mirror of
https://github.com/storytold/terraform-aws-observability-accelerator.git
synced 2026-10-09 00:09:43 +00:00
Split core and workloads modules
This commit is contained in:
@@ -1,24 +0,0 @@
|
||||
#---------------------------------------------------------------
|
||||
# EKS Blueprints
|
||||
#---------------------------------------------------------------
|
||||
|
||||
module "eks_blueprints" {
|
||||
source = "../../.."
|
||||
|
||||
cluster_name = local.name
|
||||
cluster_version = "1.22"
|
||||
|
||||
vpc_id = module.vpc.vpc_id
|
||||
private_subnet_ids = module.vpc.private_subnets
|
||||
|
||||
managed_node_groups = {
|
||||
t3_l = {
|
||||
node_group_name = "managed-ondemand"
|
||||
instance_types = ["t3.large"]
|
||||
min_size = 2
|
||||
subnet_ids = module.vpc.private_subnets
|
||||
}
|
||||
}
|
||||
|
||||
tags = local.tags
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
provider "aws" {
|
||||
region = local.region
|
||||
}
|
||||
|
||||
data "aws_eks_cluster_auth" "this" {
|
||||
name = var.eks_cluster_id
|
||||
}
|
||||
|
||||
data "aws_eks_cluster" "this" {
|
||||
name = var.eks_cluster_id
|
||||
}
|
||||
|
||||
provider "kubernetes" {
|
||||
host = local.eks_cluster_endpoint
|
||||
cluster_ca_certificate = base64decode(data.aws_eks_cluster.this.certificate_authority[0].data)
|
||||
token = data.aws_eks_cluster_auth.this.token
|
||||
}
|
||||
|
||||
provider "helm" {
|
||||
kubernetes {
|
||||
host = local.eks_cluster_endpoint
|
||||
cluster_ca_certificate = base64decode(data.aws_eks_cluster.this.certificate_authority[0].data)
|
||||
token = data.aws_eks_cluster_auth.this.token
|
||||
}
|
||||
}
|
||||
|
||||
terraform {
|
||||
required_providers {
|
||||
grafana = {
|
||||
source = "grafana/grafana"
|
||||
version = "1.24.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
locals {
|
||||
name = basename(path.cwd)
|
||||
region = var.aws_region
|
||||
|
||||
eks_oidc_issuer_url = replace(data.aws_eks_cluster.this.identity[0].oidc[0].issuer, "https://", "")
|
||||
eks_cluster_endpoint = data.aws_eks_cluster.this.endpoint
|
||||
eks_cluster_version = data.aws_eks_cluster.this.version
|
||||
|
||||
tags = {
|
||||
Source = "github.com/aws-ia/terraform-aws-observability-accelerator"
|
||||
}
|
||||
}
|
||||
|
||||
# deploys the base module
|
||||
module "eks_observability_accelerator" {
|
||||
# source = "aws-ia/terrarom-aws-observability-accelerator?ref=dev"
|
||||
source = "../../"
|
||||
|
||||
aws_region = var.aws_region
|
||||
eks_cluster_id = var.eks_cluster_id
|
||||
|
||||
# deploys AWS Distro for OpenTelemetry operator into the cluster
|
||||
enable_amazon_eks_adot = true
|
||||
|
||||
# reusing existing certificate manager? defaults to true
|
||||
enable_cert_manager = true
|
||||
|
||||
# # -- or enable opentelemetry operator
|
||||
enable_opentelemetry_operator = false
|
||||
#open_telemetry_operator_config = map() // custom config
|
||||
|
||||
# creates a new AMP workspace, defaults to true
|
||||
enable_managed_prometheus = false
|
||||
|
||||
# reusing existing AMP -- needs data source for alerting rules
|
||||
managed_prometheus_id = var.managed_prometheus_workspace_id
|
||||
managed_prometheus_region = null # defaults to the current region, useful for cross region scenarios (same account)
|
||||
|
||||
# sets up the AMP alert manager at the workspace level
|
||||
enable_alertmanager = true
|
||||
|
||||
# create a new Grafana workspace - TODO review design
|
||||
enable_managed_grafana = false
|
||||
managed_grafana_workspace_id = var.managed_grafana_workspace_id
|
||||
grafana_api_key = var.grafana_api_key
|
||||
|
||||
tags = local.tags
|
||||
}
|
||||
|
||||
module "workloads_infra" {
|
||||
source = "../../workloads/infra"
|
||||
# source = "aws-ia/terrarom-aws-observability-accelerator/workloads/infra?ref=dev"
|
||||
|
||||
|
||||
enable_infra_metrics = true
|
||||
# infra_metrics_config = {}
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
provider "aws" {
|
||||
region = local.region
|
||||
}
|
||||
|
||||
data "aws_eks_cluster_auth" "this" {
|
||||
name = var.eks_cluster_id
|
||||
}
|
||||
|
||||
data "aws_eks_cluster" "this" {
|
||||
name = var.eks_cluster_id
|
||||
}
|
||||
|
||||
provider "kubernetes" {
|
||||
host = local.eks_cluster_endpoint
|
||||
cluster_ca_certificate = base64decode(data.aws_eks_cluster.this.certificate_authority[0].data)
|
||||
token = data.aws_eks_cluster_auth.this.token
|
||||
}
|
||||
|
||||
provider "helm" {
|
||||
kubernetes {
|
||||
host = local.eks_cluster_endpoint
|
||||
cluster_ca_certificate = base64decode(data.aws_eks_cluster.this.certificate_authority[0].data)
|
||||
token = data.aws_eks_cluster_auth.this.token
|
||||
}
|
||||
}
|
||||
|
||||
terraform {
|
||||
required_providers {
|
||||
grafana = {
|
||||
source = "grafana/grafana"
|
||||
version = "1.24.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
locals {
|
||||
name = basename(path.cwd)
|
||||
region = var.aws_region
|
||||
|
||||
eks_oidc_issuer_url = replace(data.aws_eks_cluster.this.identity[0].oidc[0].issuer, "https://", "")
|
||||
eks_cluster_endpoint = data.aws_eks_cluster.this.endpoint
|
||||
eks_cluster_version = data.aws_eks_cluster.this.version
|
||||
|
||||
tags = {
|
||||
Source = "github.com/aws-ia/terraform-aws-observability-accelerator"
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
module "vpc" {
|
||||
source = "terraform-aws-modules/vpc/aws"
|
||||
version = "~> 3.0"
|
||||
|
||||
name = local.name
|
||||
cidr = local.vpc_cidr
|
||||
|
||||
azs = local.azs
|
||||
public_subnets = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 8, k)]
|
||||
private_subnets = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 8, k + 10)]
|
||||
|
||||
enable_nat_gateway = true
|
||||
single_nat_gateway = true
|
||||
enable_dns_hostnames = true
|
||||
|
||||
# Manage so we can name
|
||||
manage_default_network_acl = true
|
||||
default_network_acl_tags = { Name = "${local.name}-default" }
|
||||
manage_default_route_table = true
|
||||
default_route_table_tags = { Name = "${local.name}-default" }
|
||||
manage_default_security_group = true
|
||||
default_security_group_tags = { Name = "${local.name}-default" }
|
||||
|
||||
public_subnet_tags = {
|
||||
"kubernetes.io/cluster/${local.name}" = "shared"
|
||||
"kubernetes.io/role/elb" = 1
|
||||
}
|
||||
|
||||
private_subnet_tags = {
|
||||
"kubernetes.io/cluster/${local.name}" = "shared"
|
||||
"kubernetes.io/role/internal-elb" = 1
|
||||
}
|
||||
|
||||
tags = local.tags
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
|
||||
|
||||
module "eks_observability_accelerator" {
|
||||
#source = "aws-ia/terrarom-aws-observability-accelerator"
|
||||
source = "../"
|
||||
|
||||
aws_region = var.aws_region
|
||||
eks_cluster_id = var.eks_cluster_id
|
||||
|
||||
# deploys AWS Distro for OpenTelemetry operator into the cluster
|
||||
enable_amazon_eks_adot = true
|
||||
|
||||
# reusing existing certificate manager? defaults to true
|
||||
enable_cert_manager = true
|
||||
|
||||
# # -- or enable opentelemetry operator
|
||||
enable_opentelemetry_operator = false
|
||||
#open_telemetry_operator_config = map() // custom config
|
||||
|
||||
# creates a new AMP workspace, defaults to true
|
||||
enable_managed_prometheus = false
|
||||
|
||||
# reusing existing AMP -- needs data source for alerting rules
|
||||
managed_prometheus_id = var.managed_prometheus_workspace_id
|
||||
managed_prometheus_region = null # defaults to the current region, useful for cross region scenarios (same account)
|
||||
|
||||
# sets up the AMP alert manager at the workspace level
|
||||
enable_alertmanager = true
|
||||
|
||||
# create a new Grafana workspace - TODO review design
|
||||
enable_managed_grafana = false
|
||||
managed_grafana_workspace_id = var.managed_grafana_workspace_id
|
||||
grafana_api_key = var.grafana_api_key
|
||||
|
||||
# enable workload-specific collector, metrics, alerts and dashboards
|
||||
enable_java = false
|
||||
enable_java_recording_rules = false
|
||||
|
||||
# enable_haproxy = true
|
||||
# haproxy_config = {
|
||||
# amp_endpoint = module / amp.endpoint
|
||||
# grafana_endpoint = module.grafana.endpoint
|
||||
# }
|
||||
|
||||
enable_infra_metrics = true
|
||||
# infra_metrics_config = {}
|
||||
|
||||
tags = local.tags
|
||||
}
|
||||
# module "amp" {
|
||||
|
||||
# }
|
||||
|
||||
# module "grafana" {
|
||||
|
||||
# }
|
||||
@@ -1,5 +1,5 @@
|
||||
module "operator" {
|
||||
source = "./modules/core/opentelemetry-operator"
|
||||
source = "./modules/opentelemetry-operator"
|
||||
|
||||
enable_cert_manager = var.enable_cert_manager
|
||||
|
||||
@@ -17,7 +17,6 @@ resource "aws_prometheus_workspace" "this" {
|
||||
tags = var.tags
|
||||
}
|
||||
|
||||
|
||||
resource "aws_prometheus_alert_manager_definition" "this" {
|
||||
count = var.enable_alertmanager ? 1 : 0
|
||||
|
||||
@@ -65,46 +64,45 @@ resource "grafana_data_source" "amp" {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# dashboards
|
||||
resource "grafana_folder" "this" {
|
||||
title = "Observability Accelerator Dashboards"
|
||||
}
|
||||
|
||||
module "java" {
|
||||
count = var.enable_java ? 1 : 0
|
||||
source = "./modules/workloads/java"
|
||||
# module "java" {
|
||||
# count = var.enable_java ? 1 : 0
|
||||
# source = "./modules/workloads/java"
|
||||
|
||||
addon_context = local.context
|
||||
# addon_context = local.context
|
||||
|
||||
amp_endpoint = local.amp_ws_endpoint
|
||||
amp_id = local.amp_ws_id
|
||||
amp_region = local.amp_ws_region
|
||||
# amp_endpoint = local.amp_ws_endpoint
|
||||
# amp_id = local.amp_ws_id
|
||||
# amp_region = local.amp_ws_region
|
||||
|
||||
enable_recording_rules = var.enable_java_recording_rules
|
||||
# enable_recording_rules = var.enable_java_recording_rules
|
||||
|
||||
dashboards_folder_id = grafana_folder.this.id
|
||||
# dashboards_folder_id = grafana_folder.this.id
|
||||
|
||||
depends_on = [
|
||||
module.operator
|
||||
]
|
||||
}
|
||||
# depends_on = [
|
||||
# module.operator
|
||||
# ]
|
||||
# }
|
||||
|
||||
module "infra" {
|
||||
count = var.enable_infra_metrics ? 1 : 0
|
||||
source = "./modules/workloads/kube-prometheus"
|
||||
# module "infra" {
|
||||
# count = var.enable_infra_metrics ? 1 : 0
|
||||
# source = "./modules/workloads/kube-prometheus"
|
||||
|
||||
addon_context = local.context
|
||||
# addon_context = local.context
|
||||
|
||||
amp_endpoint = local.amp_ws_endpoint
|
||||
amp_id = local.amp_ws_id
|
||||
amp_region = local.amp_ws_region
|
||||
config = var.infra_metrics_config
|
||||
# amp_endpoint = local.amp_ws_endpoint
|
||||
# amp_id = local.amp_ws_id
|
||||
# amp_region = local.amp_ws_region
|
||||
# config = var.infra_metrics_config
|
||||
|
||||
dashboards_folder_id = grafana_folder.this.id
|
||||
# dashboards_folder_id = grafana_folder.this.id
|
||||
|
||||
depends_on = [
|
||||
module.operator
|
||||
]
|
||||
# depends_on = [
|
||||
# module.operator
|
||||
# ]
|
||||
|
||||
}
|
||||
# }
|
||||
|
||||
Reference in New Issue
Block a user