mirror of
https://github.com/empayre/fleet.git
synced 2024-11-06 17:05:18 +00:00
96 lines
3.0 KiB
HCL
96 lines
3.0 KiB
HCL
terraform {
|
|
required_providers {
|
|
aws = {
|
|
source = "hashicorp/aws"
|
|
version = "~> 4.0"
|
|
}
|
|
}
|
|
}
|
|
|
|
provider "aws" {
|
|
default_tags {
|
|
tags = {
|
|
Example = "This is a demo of the Fleet terraform module"
|
|
}
|
|
}
|
|
}
|
|
|
|
resource "random_pet" "main" {}
|
|
|
|
module "main" {
|
|
source = "github.com/fleetdm/fleet//terraform?ref=tf-mod-root-v1.3.0"
|
|
certificate_arn = module.acm.acm_certificate_arn
|
|
vpc = {
|
|
name = random_pet.main.id
|
|
enable_dns_hostnames = module.vulnprocessing.enable_dns_hostnames
|
|
}
|
|
fleet_config = {
|
|
extra_environment_variables = concat(module.firehose-logging.fleet_extra_environment_variables, module.vulnprocessing.fleet_extra_environment_variables)
|
|
extra_iam_policies = module.firehose-logging.fleet_extra_iam_policies
|
|
}
|
|
}
|
|
|
|
module "acm" {
|
|
source = "terraform-aws-modules/acm/aws"
|
|
version = "4.3.1"
|
|
|
|
domain_name = "${random_pet.main.id}.example.com"
|
|
zone_id = data.aws_route53_zone.main.id
|
|
|
|
wait_for_validation = true
|
|
}
|
|
|
|
resource "aws_route53_record" "main" {
|
|
zone_id = data.aws_route53_zone.main.id
|
|
name = "${random_pet.main.id}.example.com"
|
|
type = "A"
|
|
|
|
alias {
|
|
name = module.main.byo-vpc.byo-db.alb.lb_dns_name
|
|
zone_id = module.main.byo-vpc.byo-db.alb.lb_zone_id
|
|
evaluate_target_health = true
|
|
}
|
|
}
|
|
|
|
data "aws_route53_zone" "main" {
|
|
name = "example.com."
|
|
private_zone = false
|
|
}
|
|
|
|
module "firehose-logging" {
|
|
source = "github.com/fleetdm/fleet//terraform/addons/logging-destination-firehose?ref=tf-mod-addon-logging-destination-firehose-v1.0.0"
|
|
osquery_results_s3_bucket = {
|
|
name = "${random_pet.main.id}-results"
|
|
}
|
|
osquery_status_s3_bucket = {
|
|
name = "${random_pet.main.id}-status"
|
|
}
|
|
}
|
|
|
|
module "vulnprocessing" {
|
|
source = "github.com/fleetdm/fleet//terraform/addons/vuln-processing?ref=tf-mod-addon-vuln-processing-v1.0.0"
|
|
customer_prefix = "fleet"
|
|
ecs_cluster = module.main.byo-vpc.byo-db.byo-ecs.cluster.cluster_arn
|
|
vpc_id = module.main.vpc.vpc_id
|
|
fleet_config = {
|
|
image = "fleetdm/fleet:v4.38.0"
|
|
database = {
|
|
password_secret_arn = module.main.byo-vpc.secrets.secret_arns["${var.rds_config.name}-database-password"]
|
|
user = module.main.byo-vpc.rds.db_instance_username
|
|
address = "${module.main.byo-vpc.rds.db_instance_endpoint}:${module.main.byo-vpc.rds.db_instance_port}"
|
|
database = module.main.byo-vpc.rds.db_instance_name
|
|
}
|
|
extra_environment_variables = {
|
|
FLEET_LOGGING_DEBUG = "true"
|
|
FLEET_LOGGING_JSON = "true"
|
|
}
|
|
extra_secrets = {
|
|
// FLEET_LICENSE_KEY: "secret_manager_license_key_arn" // note needed for some feature of vuln processing
|
|
}
|
|
networking = {
|
|
subnets = module.main.byo-vpc.byo-db.byo-ecs.service.network_configuration[0].subnets
|
|
security_groups = module.main.byo-vpc.byo-db.byo-ecs.service.network_configuration[0].security_groups
|
|
}
|
|
}
|
|
}
|