From bb21fe94eaf7c509c3b273310db665d3bc629f99 Mon Sep 17 00:00:00 2001 From: Bill Monkman Date: Mon, 11 Nov 2019 15:54:43 -0800 Subject: [PATCH 1/4] Various fixes to applying kube tf and added flags Added --init and --apply flags to generate command, removed "Deploy" config Added dependencies to kubernetes terraform to prevent errors when creating namespaces Merged fluentd and cloudwatch agent modules into monitoring, otherwise dependencies wouldn't work --- cmd/generate.go | 7 ++-- internal/api/create_project.go | 2 +- internal/config/config.go | 5 ++- internal/generate/generate_helper.go | 22 +++++------- internal/generate/kubernetes/generate.go | 14 ++++---- internal/generate/terraform/generate.go | 36 +++++++++++++------ templates/commit0/commit0.tmpl | 3 ++ .../modules/kubernetes/ingress/main.tf | 11 +++++- .../main.tf => cloudwatch_agent.tf} | 8 ++--- .../monitoring/cloudwatch_agent/variables.tf | 11 ------ .../{fluentd => }/files/containers.conf | 0 .../files/cwagentconfig.json.tpl | 0 .../{fluentd => }/files/fluent.conf | 0 .../monitoring/{fluentd => }/files/host.conf | 0 .../{fluentd => }/files/systemd.conf | 0 .../{fluentd/main.tf => fluentd.tf} | 6 +++- .../monitoring/fluentd/variables.tf | 11 ------ .../modules/kubernetes/monitoring/main.tf | 14 -------- .../terraform/modules/environment/main.tf | 4 +-- 19 files changed, 71 insertions(+), 83 deletions(-) mode change 100755 => 100644 templates/kubernetes/terraform/modules/kubernetes/ingress/main.tf rename templates/kubernetes/terraform/modules/kubernetes/monitoring/{cloudwatch_agent/main.tf => cloudwatch_agent.tf} (97%) delete mode 100644 templates/kubernetes/terraform/modules/kubernetes/monitoring/cloudwatch_agent/variables.tf rename templates/kubernetes/terraform/modules/kubernetes/monitoring/{fluentd => }/files/containers.conf (100%) rename templates/kubernetes/terraform/modules/kubernetes/monitoring/{cloudwatch_agent => }/files/cwagentconfig.json.tpl (100%) rename templates/kubernetes/terraform/modules/kubernetes/monitoring/{fluentd => }/files/fluent.conf (100%) rename templates/kubernetes/terraform/modules/kubernetes/monitoring/{fluentd => }/files/host.conf (100%) rename templates/kubernetes/terraform/modules/kubernetes/monitoring/{fluentd => }/files/systemd.conf (100%) rename templates/kubernetes/terraform/modules/kubernetes/monitoring/{fluentd/main.tf => fluentd.tf} (96%) delete mode 100644 templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd/variables.tf diff --git a/cmd/generate.go b/cmd/generate.go index 26c8baeb2..8729d96d4 100644 --- a/cmd/generate.go +++ b/cmd/generate.go @@ -10,10 +10,13 @@ import ( ) var configPath string +var runInit bool +var runApply bool func init() { - generateCmd.PersistentFlags().StringVarP(&configPath, "config", "c", util.CommitYml, "config path") + generateCmd.PersistentFlags().BoolVarP(&runInit, "init", "", false, "Initialize config after generating") + generateCmd.PersistentFlags().BoolVarP(&runApply, "apply", "", false, "Apply config after generating") rootCmd.AddCommand(generateCmd) } @@ -29,7 +32,7 @@ var generateCmd = &cobra.Command{ cfg := config.LoadConfig(configPath) cfg.Print() - generate.GenerateArtifactsHelper(t, cfg, "") + generate.GenerateArtifactsHelper(t, cfg, "", runInit, runApply) }, } diff --git a/internal/api/create_project.go b/internal/api/create_project.go index 2071a0c15..5fa3017c1 100644 --- a/internal/api/create_project.go +++ b/internal/api/create_project.go @@ -49,5 +49,5 @@ func GenerateArtifacts(projectConfig util.ProjectConfiguration) { cfg := config.LoadConfig(generatedYml) cfg.Print() - generate.GenerateArtifactsHelper(t, cfg, projectConfig.ProjectName) + generate.GenerateArtifactsHelper(t, cfg, projectConfig.ProjectName, false, false) } diff --git a/internal/config/config.go b/internal/config/config.go index d99843727..b8dfcbb11 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -87,17 +87,16 @@ type terraform struct { } type cognito struct { - Deploy bool + Enabled bool } type s3Hosting struct { - Deploy bool + Enabled bool // @TODO Remove this option? If they have frontend and AWS enabled we should set up S3, etc. } type eks struct { ClusterName string `yaml:"clusterName"` WorkerAMI string `yaml:"workerAMI"` - Deploy bool } func LoadConfig(filePath string) *Commit0Config { diff --git a/internal/generate/generate_helper.go b/internal/generate/generate_helper.go index 8aa9d3a96..ce56a8bb1 100644 --- a/internal/generate/generate_helper.go +++ b/internal/generate/generate_helper.go @@ -16,7 +16,7 @@ import ( "github.com/logrusorgru/aurora" ) -func GenerateArtifactsHelper(t *templator.Templator, cfg *config.Commit0Config, pathPrefix string) { +func GenerateArtifactsHelper(t *templator.Templator, cfg *config.Commit0Config, pathPrefix string, runInit bool, runApply bool) { var wg sync.WaitGroup if !util.ValidateLanguage(cfg.Frontend.Framework) { log.Fatalln(aurora.Red(emoji.Sprintf(":exclamation: '%s' is not a supported framework.", cfg.Frontend.Framework))) @@ -50,21 +50,15 @@ func GenerateArtifactsHelper(t *templator.Templator, cfg *config.Commit0Config, // Wait for all the templates to be generated wg.Wait() - log.Println("Executing commands") - // @TODO : Move this stuff to another command? Or genericize it a bit. - if cfg.Infrastructure.AWS.EKS.Deploy { - terraform.Execute(cfg, pathPrefix) - kubernetes.Execute(cfg, pathPrefix) + log.Println(aurora.Cyan(emoji.Sprintf("Initializing Infrastructure"))) + if cfg.Infrastructure.AWS.EKS.ClusterName != "" && runInit { + terraform.Init(cfg, pathPrefix) } - if cfg.Infrastructure.AWS.Cognito.Deploy { - outputs := []string{ - "cognito_pool_id", - "cognito_client_id", - } - outputValues := terraform.GetOutputs(cfg, pathPrefix, outputs) - cfg.Frontend.Env.CognitoPoolID = outputValues["cognito_pool_id"] - cfg.Frontend.Env.CognitoClientID = outputValues["cognito_client_id"] + log.Println(aurora.Cyan(emoji.Sprintf("Creating Infrastructure"))) + if cfg.Infrastructure.AWS.EKS.ClusterName != "" && runApply { + terraform.Execute(cfg, pathPrefix) + kubernetes.Execute(cfg, pathPrefix) } // @TODO : This strucuture probably needs to be adjusted. Probably too generic. diff --git a/internal/generate/kubernetes/generate.go b/internal/generate/kubernetes/generate.go index 569905bc8..16448605e 100644 --- a/internal/generate/kubernetes/generate.go +++ b/internal/generate/kubernetes/generate.go @@ -19,14 +19,12 @@ func Generate(t *templator.Templator, cfg *config.Commit0Config, wg *sync.WaitGr } // Execute terrafrom init & plan -func Execute(config *config.Commit0Config, pathPrefix string) { - if config.Infrastructure.AWS.EKS.Deploy { - envars := util.MakeAwsEnvars(util.GetSecrets()) +func Execute(cfg *config.Commit0Config, pathPrefix string) { + envars := util.MakeAwsEnvars(util.GetSecrets()) - pathPrefix = filepath.Join(pathPrefix, "kubernetes/terraform") + pathPrefix = filepath.Join(pathPrefix, "kubernetes/terraform") - log.Println(aurora.Cyan(":alarm_clock: Applying kubernetes configuration...")) - util.ExecuteCommand(exec.Command("terraform", "init"), filepath.Join(pathPrefix, "environments/staging/kubernetes"), envars) - util.ExecuteCommand(exec.Command("terraform", "plan"), filepath.Join(pathPrefix, "environments/staging/kubernetes"), envars) - } + log.Println(aurora.Cyan(":alarm_clock: Applying kubernetes configuration...")) + util.ExecuteCommand(exec.Command("terraform", "init"), filepath.Join(pathPrefix, "environments/staging"), envars) + util.ExecuteCommand(exec.Command("terraform", "apply", "-auto-approve"), filepath.Join(pathPrefix, "environments/staging"), envars) } diff --git a/internal/generate/terraform/generate.go b/internal/generate/terraform/generate.go index 72d46c212..5c8595f25 100644 --- a/internal/generate/terraform/generate.go +++ b/internal/generate/terraform/generate.go @@ -37,6 +37,7 @@ func Generate(t *templator.Templator, cfg *config.Commit0Config, wg *sync.WaitGr t.Terraform.TemplateFiles(data, false, wg, pathPrefix) } +// GetOutputs captures the terraform output for the specific variables func GetOutputs(config *config.Commit0Config, pathPrefix string, outputs []string) map[string]string { outputsMap := make(map[string]string) @@ -54,8 +55,8 @@ func GetOutputs(config *config.Commit0Config, pathPrefix string, outputs []strin return outputsMap } -// Execute terrafrom init & plan -func Execute(config *config.Commit0Config, pathPrefix string) { +// Init sets up anything required by Execute +func Init(config *config.Commit0Config, pathPrefix string) { // @TODO : Change this check. Most likely we should discover the accountid if config.Infrastructure.AWS.AccountId != "" { log.Println("Preparing aws environment...") @@ -68,16 +69,31 @@ func Execute(config *config.Commit0Config, pathPrefix string) { log.Println(aurora.Cyan(emoji.Sprintf(":alarm_clock: Initializing remote backend..."))) util.ExecuteCommand(exec.Command("terraform", "init"), filepath.Join(pathPrefix, "bootstrap/remote-state"), envars) util.ExecuteCommand(exec.Command("terraform", "apply", "-auto-approve"), filepath.Join(pathPrefix, "bootstrap/remote-state"), envars) + } +} - log.Println(aurora.Cyan(":alarm_clock: Planning infrastructure...")) - util.ExecuteCommand(exec.Command("terraform", "init"), filepath.Join(pathPrefix, "environments/staging"), envars) - util.ExecuteCommand(exec.Command("terraform", "plan"), filepath.Join(pathPrefix, "environments/staging"), envars) +// Execute terrafrom init & plan. May modify the config passed in +func Execute(cfg *config.Commit0Config, pathPrefix string) { + // @TODO : Change this check. Most likely we should discover the accountid + if cfg.Infrastructure.AWS.AccountId != "" { + log.Println("Preparing aws environment...") - log.Println(aurora.Cyan(":alarm_clock: Applying infrastructure configuration...")) - util.ExecuteCommand(exec.Command("terraform", "apply"), filepath.Join(pathPrefix, "environments/staging"), envars) + envars := util.MakeAwsEnvars(util.GetSecrets()) + + pathPrefix = filepath.Join(pathPrefix, "terraform") - log.Println(aurora.Cyan(":alarm_clock: Applying kubernetes configuration...")) - util.ExecuteCommand(exec.Command("terraform", "init"), filepath.Join(pathPrefix, "environments/staging/kubernetes"), envars) - util.ExecuteCommand(exec.Command("terraform", "plan"), filepath.Join(pathPrefix, "environments/staging/kubernetes"), envars) + log.Println(aurora.Cyan(":alarm_clock: Applying infrastructure configuration...")) + util.ExecuteCommand(exec.Command("terraform", "init"), filepath.Join(pathPrefix, "environments/staging"), envars) + util.ExecuteCommand(exec.Command("terraform", "apply", "-auto-approve"), filepath.Join(pathPrefix, "environments/staging"), envars) + + if cfg.Infrastructure.AWS.Cognito.Enabled { + outputs := []string{ + "cognito_pool_id", + "cognito_client_id", + } + outputValues := GetOutputs(cfg, pathPrefix, outputs) + cfg.Frontend.Env.CognitoPoolID = outputValues["cognito_pool_id"] + cfg.Frontend.Env.CognitoClientID = outputValues["cognito_client_id"] + } } } diff --git a/templates/commit0/commit0.tmpl b/templates/commit0/commit0.tmpl index 4700355fb..394b16ccb 100644 --- a/templates/commit0/commit0.tmpl +++ b/templates/commit0/commit0.tmpl @@ -13,11 +13,14 @@ infrastructure: region: us-east-1 eks: clusterName: staging +<<<<<<< HEAD deploy: true cognito: deploy: true s3_hosting: deploy: true +======= +>>>>>>> Various fixes to applying kube tf and added flags frontend: framework: {{.FrontendFramework}} diff --git a/templates/kubernetes/terraform/modules/kubernetes/ingress/main.tf b/templates/kubernetes/terraform/modules/kubernetes/ingress/main.tf old mode 100755 new mode 100644 index 7e64f0204..b2baee84e --- a/templates/kubernetes/terraform/modules/kubernetes/ingress/main.tf +++ b/templates/kubernetes/terraform/modules/kubernetes/ingress/main.tf @@ -22,6 +22,7 @@ resource "kubernetes_config_map" "nginx_configuration" { use-forwarded-headers = "true", use-proxy-protocol = "false" } + depends_on = [kubernetes_namespace.ingress_nginx] } # resource "kubernetes_config_map" "nginx_configuration" { @@ -33,6 +34,7 @@ resource "kubernetes_config_map" "nginx_configuration" { # "app.kubernetes.io/part-of" = "ingress-nginx" # } # } +# depends_on = [kubernetes_namespace.ingress_nginx] # } resource "kubernetes_config_map" "tcp_services" { @@ -44,6 +46,7 @@ resource "kubernetes_config_map" "tcp_services" { "app.kubernetes.io/part-of" = "ingress-nginx" } } + depends_on = [kubernetes_namespace.ingress_nginx] } resource "kubernetes_config_map" "udp_services" { @@ -55,6 +58,7 @@ resource "kubernetes_config_map" "udp_services" { "app.kubernetes.io/part-of" = "ingress-nginx" } } + depends_on = [kubernetes_namespace.ingress_nginx] } resource "kubernetes_service_account" "nginx_ingress_serviceaccount" { @@ -66,6 +70,7 @@ resource "kubernetes_service_account" "nginx_ingress_serviceaccount" { "app.kubernetes.io/part-of" = "ingress-nginx" } } + depends_on = [kubernetes_namespace.ingress_nginx] } resource "kubernetes_cluster_role" "nginx_ingress_clusterrole" { @@ -138,6 +143,7 @@ resource "kubernetes_role" "nginx_ingress_role" { api_groups = [""] resources = ["endpoints"] } + depends_on = [kubernetes_namespace.ingress_nginx] } resource "kubernetes_role_binding" "nginx_ingress_role_nisa_binding" { @@ -159,6 +165,7 @@ resource "kubernetes_role_binding" "nginx_ingress_role_nisa_binding" { kind = "Role" name = "nginx-ingress-role" } + depends_on = [kubernetes_namespace.ingress_nginx] } resource "kubernetes_cluster_role_binding" "nginx_ingress_clusterrole_nisa_binding" { @@ -324,6 +331,7 @@ resource "kubernetes_service" "ingress_nginx" { type = "LoadBalancer" external_traffic_policy = "Local" } + depends_on = [kubernetes_namespace.ingress_nginx] } # HTTPS Load balancer @@ -359,4 +367,5 @@ resource "kubernetes_service" "ingress_nginx" { # } # type = "LoadBalancer" # } -# } \ No newline at end of file +# depends_on = [kubernetes_namespace.ingress_nginx] +# } diff --git a/templates/kubernetes/terraform/modules/kubernetes/monitoring/cloudwatch_agent/main.tf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/cloudwatch_agent.tf similarity index 97% rename from templates/kubernetes/terraform/modules/kubernetes/monitoring/cloudwatch_agent/main.tf rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/cloudwatch_agent.tf index 8c6c4d498..a58c7911b 100644 --- a/templates/kubernetes/terraform/modules/kubernetes/monitoring/cloudwatch_agent/main.tf +++ b/templates/kubernetes/terraform/modules/kubernetes/monitoring/cloudwatch_agent.tf @@ -1,12 +1,9 @@ -data "aws_iam_policy" "CloudWatchAgentServerPolicy" { - arn = "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy" -} - resource "kubernetes_service_account" "cloudwatch_agent" { metadata { name = "cloudwatch-agent" namespace = "amazon-cloudwatch" } + depends_on = [kubernetes_namespace.amazon_cloudwatch] } resource "kubernetes_cluster_role" "cloudwatch_agent_role" { @@ -76,6 +73,7 @@ resource "kubernetes_config_map" "cwagentconfig" { } ) } + depends_on = [kubernetes_namespace.amazon_cloudwatch] } resource "kubernetes_daemonset" "cloudwatch_agent" { @@ -217,4 +215,4 @@ resource "kubernetes_daemonset" "cloudwatch_agent" { } } } -} \ No newline at end of file +} diff --git a/templates/kubernetes/terraform/modules/kubernetes/monitoring/cloudwatch_agent/variables.tf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/cloudwatch_agent/variables.tf deleted file mode 100644 index 858e14e0d..000000000 --- a/templates/kubernetes/terraform/modules/kubernetes/monitoring/cloudwatch_agent/variables.tf +++ /dev/null @@ -1,11 +0,0 @@ -variable "region" { - description = "AWS Region" -} - -variable "environment" { - description = "Environment" -} - -variable "cluster_name" { - description = "Cluster name" -} \ No newline at end of file diff --git a/templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd/files/containers.conf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/files/containers.conf similarity index 100% rename from templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd/files/containers.conf rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/files/containers.conf diff --git a/templates/kubernetes/terraform/modules/kubernetes/monitoring/cloudwatch_agent/files/cwagentconfig.json.tpl b/templates/kubernetes/terraform/modules/kubernetes/monitoring/files/cwagentconfig.json.tpl similarity index 100% rename from templates/kubernetes/terraform/modules/kubernetes/monitoring/cloudwatch_agent/files/cwagentconfig.json.tpl rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/files/cwagentconfig.json.tpl diff --git a/templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd/files/fluent.conf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/files/fluent.conf similarity index 100% rename from templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd/files/fluent.conf rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/files/fluent.conf diff --git a/templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd/files/host.conf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/files/host.conf similarity index 100% rename from templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd/files/host.conf rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/files/host.conf diff --git a/templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd/files/systemd.conf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/files/systemd.conf similarity index 100% rename from templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd/files/systemd.conf rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/files/systemd.conf diff --git a/templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd/main.tf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd.tf similarity index 96% rename from templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd/main.tf rename to templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd.tf index de51422a0..24ceca0dd 100644 --- a/templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd/main.tf +++ b/templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd.tf @@ -23,6 +23,7 @@ resource "kubernetes_config_map" "cluster_info" { "cluster.name" = var.cluster_name "logs.region" = var.region } + depends_on = [kubernetes_namespace.amazon_cloudwatch] } resource "kubernetes_service_account" "fluentd" { @@ -30,6 +31,7 @@ resource "kubernetes_service_account" "fluentd" { name = "fluentd" namespace = "amazon-cloudwatch" } + depends_on = [kubernetes_namespace.amazon_cloudwatch] } resource "kubernetes_cluster_role" "fluentd_role" { @@ -57,6 +59,7 @@ resource "kubernetes_cluster_role_binding" "fluentd_role_binding" { kind = "ClusterRole" name = "fluentd-role" } + depends_on = [kubernetes_service_account.fluentd] } resource "kubernetes_config_map" "fluentd_config" { @@ -71,6 +74,7 @@ resource "kubernetes_config_map" "fluentd_config" { "host.conf" = data.local_file.host.content "systemd.conf" = data.local_file.systemd.content } + depends_on = [kubernetes_namespace.amazon_cloudwatch] } resource "kubernetes_daemonset" "fluentd_cloudwatch" { @@ -217,4 +221,4 @@ resource "kubernetes_daemonset" "fluentd_cloudwatch" { } } } -} \ No newline at end of file +} diff --git a/templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd/variables.tf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd/variables.tf deleted file mode 100644 index 2fac8d3e3..000000000 --- a/templates/kubernetes/terraform/modules/kubernetes/monitoring/fluentd/variables.tf +++ /dev/null @@ -1,11 +0,0 @@ -variable "environment" { - description = "Environment (production/staging/development)" -} - -variable "region" { - description = "AWS Region" -} - -variable "cluster_name" { - description = "Cluster name to monitor" -} \ No newline at end of file diff --git a/templates/kubernetes/terraform/modules/kubernetes/monitoring/main.tf b/templates/kubernetes/terraform/modules/kubernetes/monitoring/main.tf index eced9055f..9a7d64316 100644 --- a/templates/kubernetes/terraform/modules/kubernetes/monitoring/main.tf +++ b/templates/kubernetes/terraform/modules/kubernetes/monitoring/main.tf @@ -22,17 +22,3 @@ resource "aws_iam_role_policy_attachment" "k8s_monitoring_role_policy" { role = "${aws_iam_role.k8s_monitoring.id}" policy_arn = "${data.aws_iam_policy.CloudWatchAgentServerPolicy.arn}" } - -module "fluentd" { - source = "./fluentd" - environment = var.environment - region = var.region - cluster_name = var.cluster_name -} - -module "cloudwatch_agent" { - source = "./cloudwatch_agent" - environment = var.environment - region = var.region - cluster_name = var.cluster_name -} diff --git a/templates/terraform/modules/environment/main.tf b/templates/terraform/modules/environment/main.tf index eb2d0a12b..606be5cc8 100644 --- a/templates/terraform/modules/environment/main.tf +++ b/templates/terraform/modules/environment/main.tf @@ -43,14 +43,14 @@ module "kube2iam" { iam_account_id = data.aws_caller_identity.current.account_id } -# {{ if .Config.Infrastructure.AWS.Cognito.Deploy }} +# {{ if .Config.Infrastructure.AWS.Cognito.Enabled }} resource "cognito" "auth" { user_pool = var.user_pool hostname = var.hostname } # {{- end}} -# {{ if .Config.Infrastructure.AWS.S3Hosting.Deploy }} +# {{ if .Config.Infrastructure.AWS.S3Hosting.Enabled }} resource "s3_hosting" "assets" { bucket_name = var.s3_hosting_bucket_name } From e3e040921a126d8094943b2d2bad16845f98c3f2 Mon Sep 17 00:00:00 2001 From: Bill Monkman Date: Tue, 12 Nov 2019 12:55:58 -0800 Subject: [PATCH 2/4] Forgot to save one file --- templates/commit0/commit0.tmpl | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/templates/commit0/commit0.tmpl b/templates/commit0/commit0.tmpl index 394b16ccb..fd13fd71f 100644 --- a/templates/commit0/commit0.tmpl +++ b/templates/commit0/commit0.tmpl @@ -13,14 +13,10 @@ infrastructure: region: us-east-1 eks: clusterName: staging -<<<<<<< HEAD - deploy: true cognito: - deploy: true + enabled: true s3_hosting: - deploy: true -======= ->>>>>>> Various fixes to applying kube tf and added flags + enabled: true frontend: framework: {{.FrontendFramework}} From 61c839326b51d3e49ff7d44fe43ab94663259b7f Mon Sep 17 00:00:00 2001 From: Bill Monkman Date: Tue, 12 Nov 2019 13:35:06 -0800 Subject: [PATCH 3/4] A few small fixes --- internal/config/config.go | 2 +- internal/generate/kubernetes/generate.go | 3 ++- internal/generate/terraform/generate.go | 2 +- templates/commit0/commit0.tmpl | 2 +- templates/terraform/modules/environment/main.tf | 6 ++++-- templates/terraform/modules/vpc/main.tf | 2 +- 6 files changed, 10 insertions(+), 7 deletions(-) diff --git a/internal/config/config.go b/internal/config/config.go index b8dfcbb11..3c91c62e0 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -78,7 +78,7 @@ type aws struct { Region string EKS eks Cognito cognito - S3Hosting s3Hosting `yaml:"s3_hosting"` + S3Hosting s3Hosting `yaml:"s3Hosting"` Terraform terraform } diff --git a/internal/generate/kubernetes/generate.go b/internal/generate/kubernetes/generate.go index 16448605e..c4a0e978a 100644 --- a/internal/generate/kubernetes/generate.go +++ b/internal/generate/kubernetes/generate.go @@ -9,6 +9,7 @@ import ( "github.com/commitdev/commit0/internal/config" "github.com/commitdev/commit0/internal/templator" "github.com/commitdev/commit0/internal/util" + "github.com/kyokomi/emoji" "github.com/logrusorgru/aurora" ) @@ -24,7 +25,7 @@ func Execute(cfg *config.Commit0Config, pathPrefix string) { pathPrefix = filepath.Join(pathPrefix, "kubernetes/terraform") - log.Println(aurora.Cyan(":alarm_clock: Applying kubernetes configuration...")) + log.Println(aurora.Cyan(emoji.Sprintf(":alarm_clock: Applying kubernetes configuration..."))) util.ExecuteCommand(exec.Command("terraform", "init"), filepath.Join(pathPrefix, "environments/staging"), envars) util.ExecuteCommand(exec.Command("terraform", "apply", "-auto-approve"), filepath.Join(pathPrefix, "environments/staging"), envars) } diff --git a/internal/generate/terraform/generate.go b/internal/generate/terraform/generate.go index 5c8595f25..e43829a39 100644 --- a/internal/generate/terraform/generate.go +++ b/internal/generate/terraform/generate.go @@ -82,7 +82,7 @@ func Execute(cfg *config.Commit0Config, pathPrefix string) { pathPrefix = filepath.Join(pathPrefix, "terraform") - log.Println(aurora.Cyan(":alarm_clock: Applying infrastructure configuration...")) + log.Println(aurora.Cyan(emoji.Sprintf(":alarm_clock: Applying infrastructure configuration..."))) util.ExecuteCommand(exec.Command("terraform", "init"), filepath.Join(pathPrefix, "environments/staging"), envars) util.ExecuteCommand(exec.Command("terraform", "apply", "-auto-approve"), filepath.Join(pathPrefix, "environments/staging"), envars) diff --git a/templates/commit0/commit0.tmpl b/templates/commit0/commit0.tmpl index fd13fd71f..25e2a86e4 100644 --- a/templates/commit0/commit0.tmpl +++ b/templates/commit0/commit0.tmpl @@ -15,7 +15,7 @@ infrastructure: clusterName: staging cognito: enabled: true - s3_hosting: + s3Hosting: enabled: true frontend: diff --git a/templates/terraform/modules/environment/main.tf b/templates/terraform/modules/environment/main.tf index 606be5cc8..dff920c7a 100644 --- a/templates/terraform/modules/environment/main.tf +++ b/templates/terraform/modules/environment/main.tf @@ -44,14 +44,16 @@ module "kube2iam" { } # {{ if .Config.Infrastructure.AWS.Cognito.Enabled }} -resource "cognito" "auth" { +module "cognito" { + source = "../../modules/cognito" user_pool = var.user_pool hostname = var.hostname } # {{- end}} # {{ if .Config.Infrastructure.AWS.S3Hosting.Enabled }} -resource "s3_hosting" "assets" { +module "s3_hosting" { + source = "../../modules/s3_hosting" bucket_name = var.s3_hosting_bucket_name } # {{- end}} diff --git a/templates/terraform/modules/vpc/main.tf b/templates/terraform/modules/vpc/main.tf index 7dc683a02..15fabebf7 100644 --- a/templates/terraform/modules/vpc/main.tf +++ b/templates/terraform/modules/vpc/main.tf @@ -5,7 +5,7 @@ module "vpc" { cidr = "10.20.0.0/16" azs = ["${var.region}a", "${var.region}b", "${var.region}c"] # Most regions have 3+ azs - private_subnets = ["10.20.10.0/22", "10.20.14.0/22", "10.20.18.0/22"] + private_subnets = ["10.20.8.0/22", "10.20.12.0/22", "10.20.16.0/22"] public_subnets = ["10.20.41.0/24", "10.20.43.0/24", "10.20.45.0/24"] database_subnets = ["10.20.60.0/24", "10.20.62.0/24", "10.20.64.0/24"] From a274e8d6fd4d0667d8ac6f0671706ee2e0c92aa5 Mon Sep 17 00:00:00 2001 From: Bill Monkman Date: Tue, 12 Nov 2019 14:26:52 -0800 Subject: [PATCH 4/4] Fixes for cognito output handling --- internal/generate/terraform/generate.go | 4 ++-- internal/util/util.go | 2 +- templates/terraform/environments/development/main.tf | 8 ++++++++ templates/terraform/environments/production/main.tf | 8 ++++++++ templates/terraform/environments/staging/main.tf | 8 ++++++++ templates/terraform/modules/cognito/main.tf | 4 ++-- templates/terraform/modules/environment/main.tf | 4 ++++ 7 files changed, 33 insertions(+), 5 deletions(-) diff --git a/internal/generate/terraform/generate.go b/internal/generate/terraform/generate.go index e43829a39..3bd7fb0f5 100644 --- a/internal/generate/terraform/generate.go +++ b/internal/generate/terraform/generate.go @@ -45,10 +45,10 @@ func GetOutputs(config *config.Commit0Config, pathPrefix string, outputs []strin envars := util.MakeAwsEnvars(util.GetSecrets()) - path := filepath.Join(pathPrefix, "terraform") + pathPrefix = filepath.Join(pathPrefix, "environments/staging") for _, output := range outputs { - outputValue := util.ExecuteCommandOutput(exec.Command("terraform", "output", output), path, envars) + outputValue := util.ExecuteCommandOutput(exec.Command("terraform", "output", output), pathPrefix, envars) outputsMap[output] = outputValue } diff --git a/internal/util/util.go b/internal/util/util.go index a283c174e..855b5e48a 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -136,7 +136,7 @@ func ExecuteCommandOutput(cmd *exec.Cmd, pathPrefix string, envars []string) str out, err := cmd.CombinedOutput() if err != nil { - log.Fatalf("Executing terraform output failed: %v\n", err) + log.Fatalf("Executing command failed: (%v) %s\n", err, out) } return string(out) } diff --git a/templates/terraform/environments/development/main.tf b/templates/terraform/environments/development/main.tf index 305629c84..ce8c94f13 100644 --- a/templates/terraform/environments/development/main.tf +++ b/templates/terraform/environments/development/main.tf @@ -38,3 +38,11 @@ module "development" { s3_hosting_bucket_name = "{{ .Config.Name }}-development" } + +output "cognito_client_id" { + value = module.staging.cognito.cognito_client_id +} + +output "cognito_pool_id" { + value = module.staging.cognito.cognito_pool_id +} diff --git a/templates/terraform/environments/production/main.tf b/templates/terraform/environments/production/main.tf index 49b329359..87c2c1368 100644 --- a/templates/terraform/environments/production/main.tf +++ b/templates/terraform/environments/production/main.tf @@ -38,3 +38,11 @@ module "production" { s3_hosting_bucket_name = "{{ .Config.Name }}-production" } + +output "cognito_client_id" { + value = module.staging.cognito.cognito_client_id +} + +output "cognito_pool_id" { + value = module.staging.cognito.cognito_pool_id +} diff --git a/templates/terraform/environments/staging/main.tf b/templates/terraform/environments/staging/main.tf index 96a61d57f..ace31c046 100644 --- a/templates/terraform/environments/staging/main.tf +++ b/templates/terraform/environments/staging/main.tf @@ -37,3 +37,11 @@ module "staging" { hostname = "{{ .Config.Frontend.Hostname }}" s3_hosting_bucket_name = "{{ .Config.Name }}-staging" } + +output "cognito_client_id" { + value = module.staging.cognito.cognito_client_id +} + +output "cognito_pool_id" { + value = module.staging.cognito.cognito_pool_id +} diff --git a/templates/terraform/modules/cognito/main.tf b/templates/terraform/modules/cognito/main.tf index fabe01ae1..dbca7db3e 100644 --- a/templates/terraform/modules/cognito/main.tf +++ b/templates/terraform/modules/cognito/main.tf @@ -33,8 +33,8 @@ resource "aws_cognito_user_pool_client" "client" { } output "cognito_pool_id" { - value = "${aws_cognito_user_pool.users.id}" + value = aws_cognito_user_pool.users.id } output "cognito_client_id" { - value = "${aws_cognito_user_pool_client.client.id}" + value = aws_cognito_user_pool_client.client.id } diff --git a/templates/terraform/modules/environment/main.tf b/templates/terraform/modules/environment/main.tf index dff920c7a..5bc06463a 100644 --- a/templates/terraform/modules/environment/main.tf +++ b/templates/terraform/modules/environment/main.tf @@ -49,6 +49,10 @@ module "cognito" { user_pool = var.user_pool hostname = var.hostname } + +output "cognito" { + value = module.cognito +} # {{- end}} # {{ if .Config.Infrastructure.AWS.S3Hosting.Enabled }}