Skip to content

Instantly share code, notes, and snippets.

@guitarrapc
Last active March 5, 2020 03:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guitarrapc/7a84ce76b054a8f9bb8f31f65867f293 to your computer and use it in GitHub Desktop.
Save guitarrapc/7a84ce76b054a8f9bb8f31f65867f293 to your computer and use it in GitHub Desktop.
generate terraform guardduty for all region via C# template. (member account is not scoped)
void Main()
{
var awsProviderVersion = "2.51.0";
GenProviders().Dump();
GenModules().Dump();
static string[] GenModules()
{
return Amazon.RegionEndpoint.EnumerableAllRegions
.Where(x => !IsSpetialRegion(x.SystemName))
.Where(x => !IsNotSupportedRegion(x.SystemName))
.Select(x => GetRegionName(x.DisplayName))
.Select(x => $@"module ""{x}"" {{
source = ""./modules/guardduty""
providers = {{ aws = aws.{x} }}
}}")
.ToArray();
}
string[] GenProviders()
{
return Amazon.RegionEndpoint.EnumerableAllRegions
.Where(x => !IsSpetialRegion(x.SystemName))
.Where(x => !IsNotSupportedRegion(x.SystemName))
.Select(x => (alias: GetRegionName(x.DisplayName), region: x.SystemName))
.Select(x => $@"provider ""aws"" {{
version = ""{awsProviderVersion}""
region = ""{x.region}""
alias = ""{x.alias}""
access_key = var.ACCESS_KEY
secret_key = var.SECRET_KEY
}}")
.ToArray();
}
static bool IsSpetialRegion(string region)
=> region.Contains("gov-") || region.Contains("cn-") || region.Contains("iso-") || region.Contains("isob-");
static bool IsNotSupportedRegion(string region)
// HongKong
// Bahrain
=> region == "ap-east-1" || region == "me-south-1";
static string GetRegionName(string fullName)
{
var begin = fullName.IndexOf('(');
var end = fullName.IndexOf(')');
if (begin == -1 || end == -1)
return fullName.Replace(" ", "");
return fullName.Substring(begin + 1, end - begin - 1).Replace(" ", "").Replace(".", "_");
}
}
resource "aws_guardduty_detector" "main" {
enable = true
}
@guitarrapc
Copy link
Author

guitarrapc commented Feb 28, 2020

output

provider "aws" {
  version    = "2.51.0"
  region     = "ap-northeast-1"
  alias      = "Tokyo"
  access_key = var.ACCESS_KEY
  secret_key = var.SECRET_KEY
}
provider "aws" {
  version    = "2.51.0"
  region     = "ap-northeast-2"
  alias      = "Seoul"
  access_key = var.ACCESS_KEY
  secret_key = var.SECRET_KEY
}
provider "aws" {
  version    = "2.51.0"
  region     = "ap-south-1"
  alias      = "Mumbai"
  access_key = var.ACCESS_KEY
  secret_key = var.SECRET_KEY
}
provider "aws" {
  version    = "2.51.0"
  region     = "ap-southeast-1"
  alias      = "Singapore"
  access_key = var.ACCESS_KEY
  secret_key = var.SECRET_KEY
}
provider "aws" {
  version    = "2.51.0"
  region     = "ap-southeast-2"
  alias      = "Sydney"
  access_key = var.ACCESS_KEY
  secret_key = var.SECRET_KEY
}
provider "aws" {
  version    = "2.51.0"
  region     = "ca-central-1"
  alias      = "Central"
  access_key = var.ACCESS_KEY
  secret_key = var.SECRET_KEY
}
provider "aws" {
  version    = "2.51.0"
  region     = "eu-central-1"
  alias      = "Frankfurt"
  access_key = var.ACCESS_KEY
  secret_key = var.SECRET_KEY
}
provider "aws" {
  version    = "2.51.0"
  region     = "eu-north-1"
  alias      = "Stockholm"
  access_key = var.ACCESS_KEY
  secret_key = var.SECRET_KEY
}
provider "aws" {
  version    = "2.51.0"
  region     = "eu-west-1"
  alias      = "Ireland"
  access_key = var.ACCESS_KEY
  secret_key = var.SECRET_KEY
}
provider "aws" {
  version    = "2.51.0"
  region     = "eu-west-2"
  alias      = "London"
  access_key = var.ACCESS_KEY
  secret_key = var.SECRET_KEY
}
provider "aws" {
  version    = "2.51.0"
  region     = "eu-west-3"
  alias      = "Paris"
  access_key = var.ACCESS_KEY
  secret_key = var.SECRET_KEY
}
provider "aws" {
  version    = "2.51.0"
  region     = "sa-east-1"
  alias      = "SaoPaulo"
  access_key = var.ACCESS_KEY
  secret_key = var.SECRET_KEY
}
provider "aws" {
  version    = "2.51.0"
  region     = "us-east-1"
  alias      = "Virginia"
  access_key = var.ACCESS_KEY
  secret_key = var.SECRET_KEY
}
provider "aws" {
  version    = "2.51.0"
  region     = "us-east-2"
  alias      = "Ohio"
  access_key = var.ACCESS_KEY
  secret_key = var.SECRET_KEY
}
provider "aws" {
  version    = "2.51.0"
  region     = "us-west-1"
  alias      = "N_California"
  access_key = var.ACCESS_KEY
  secret_key = var.SECRET_KEY
}
provider "aws" {
  version    = "2.51.0"
  region     = "us-west-2"
  alias      = "Oregon"
  access_key = var.ACCESS_KEY
  secret_key = var.SECRET_KEY
}
module "Tokyo" {
  source    = "./modules/guardduty"
  providers = { aws = aws.Tokyo }
}
module "Seoul" {
  source    = "./modules/guardduty"
  providers = { aws = aws.Seoul }
}
module "Mumbai" {
  source    = "./modules/guardduty"
  providers = { aws = aws.Mumbai }
}
module "Singapore" {
  source    = "./modules/guardduty"
  providers = { aws = aws.Singapore }
}
module "Sydney" {
  source    = "./modules/guardduty"
  providers = { aws = aws.Sydney }
}
module "Central" {
  source    = "./modules/guardduty"
  providers = { aws = aws.Central }
}
module "Frankfurt" {
  source    = "./modules/guardduty"
  providers = { aws = aws.Frankfurt }
}
module "Stockholm" {
  source    = "./modules/guardduty"
  providers = { aws = aws.Stockholm }
}
module "Ireland" {
  source    = "./modules/guardduty"
  providers = { aws = aws.Ireland }
}
module "London" {
  source    = "./modules/guardduty"
  providers = { aws = aws.London }
}
module "Paris" {
  source    = "./modules/guardduty"
  providers = { aws = aws.Paris }
}
module "SaoPaulo" {
  source    = "./modules/guardduty"
  providers = { aws = aws.SaoPaulo }
}
module "Virginia" {
  source    = "./modules/guardduty"
  providers = { aws = aws.Virginia }
}
module "Ohio" {
  source    = "./modules/guardduty"
  providers = { aws = aws.Ohio }
}
module "N_California" {
  source    = "./modules/guardduty"
  providers = { aws = aws.N_California }
}
module "Oregon" {
  source    = "./modules/guardduty"
  providers = { aws = aws.Oregon }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment