Skip to content

Commit 016a4b5

Browse files
committed
Some fixes to k8s generation and tf execution
1 parent c721d7c commit 016a4b5

File tree

5 files changed

+48
-51
lines changed

5 files changed

+48
-51
lines changed

cmd/generate.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package cmd
22

33
import (
4+
"log"
5+
"sync"
6+
47
"github.com/commitdev/commit0/internal/config"
58
"github.com/commitdev/commit0/internal/generate/docker"
69
"github.com/commitdev/commit0/internal/generate/golang"
@@ -12,8 +15,6 @@ import (
1215
"github.com/commitdev/commit0/internal/util"
1316
"github.com/gobuffalo/packr/v2"
1417
"github.com/spf13/cobra"
15-
"log"
16-
"sync"
1718
)
1819

1920
var configPath string
@@ -71,7 +72,14 @@ var generateCmd = &cobra.Command{
7172
docker.GenerateGoHTTPGWDockerFile(t, cfg, &wg)
7273
}
7374

75+
// Wait for all the templates to be generated
7476
wg.Wait()
77+
78+
switch language {
79+
case Kubernetes:
80+
kubernetes.Execute(cfg)
81+
}
82+
7583
},
7684
}
7785

internal/config/config.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ type Commit0Config struct {
6060
}
6161

6262
type Kubernetes struct {
63-
ClusterName string
64-
Deploy bool
65-
AWSAccountId string
66-
AWSRegion string
63+
ClusterName string `yaml:"clusterName"`
64+
Deploy bool `yaml:"deploy"`
65+
AWSAccountId string `yaml:"awsAccountId"`
66+
AWSRegion string `yaml:"awsRegion"`
6767
}
6868

6969
func LoadConfig(filePath string) *Commit0Config {
Lines changed: 26 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
package kubernetes
22

33
import (
4-
"bytes"
54
"fmt"
65
"io"
76
"log"
87
"os"
98
"os/exec"
10-
"path/filepath"
119
"sync"
1210

1311
"github.com/commitdev/commit0/internal/config"
@@ -17,65 +15,50 @@ import (
1715
func Generate(templator *templator.Templator, config *config.Commit0Config, wg *sync.WaitGroup) {
1816
templator.Kubernetes.TemplateFiles(config, false, wg)
1917

20-
if config.Kubernetes.Deploy {
21-
_tf_init := tf_init()
22-
_tf_plan := tf_plan()
23-
execute(_tf_init)
24-
execute(_tf_plan)
25-
}
26-
2718
}
2819

29-
// Terraform init cmd
30-
func tf_init() *exec.Cmd {
31-
32-
return exec.Command("terraform", "init")
33-
}
34-
35-
// Terraform plan cmd
36-
func tf_plan() *exec.Cmd {
37-
38-
return exec.Command("terraform", "plan")
20+
func Execute(config *config.Commit0Config) {
21+
if config.Kubernetes.Deploy {
22+
log.Println("Planning infrastructure...")
23+
execute(exec.Command("terraform", "init"))
24+
execute(exec.Command("terraform", "plan"))
25+
}
3926
}
4027

4128
func execute(cmd *exec.Cmd) {
42-
dir, err1 := filepath.Abs(filepath.Dir(os.Args[0]))
43-
if err1 != nil {
44-
log.Fatal(err1)
29+
dir, err := os.Getwd()
30+
if err != nil {
31+
log.Fatalf("Getting working directory failed: %v\n", err)
4532
}
4633

47-
cmd.Dir = dir + "/kubernetes/terraform/environments/staging"
34+
cmd.Dir = fmt.Sprintf("%s/kubernetes/terraform/environments/staging", dir)
4835

49-
var stdoutBuf, stderrBuf bytes.Buffer
50-
stdoutIn, _ := cmd.StdoutPipe()
51-
stderrIn, _ := cmd.StderrPipe()
36+
stdoutPipe, _ := cmd.StdoutPipe()
37+
stderrPipe, _ := cmd.StderrPipe()
5238

5339
var errStdout, errStderr error
54-
stdout := io.MultiWriter(os.Stdout, &stdoutBuf)
55-
stderr := io.MultiWriter(os.Stderr, &stderrBuf)
56-
err := cmd.Start()
40+
err = cmd.Start()
5741
if err != nil {
58-
log.Fatalf("cmd.Start() failed with '%s'\n", err)
42+
log.Fatalf("Starting terraform command failed: %v\n", err)
5943
}
6044

61-
var wg sync.WaitGroup
62-
wg.Add(1)
63-
6445
go func() {
65-
_, errStdout = io.Copy(stdout, stdoutIn)
66-
wg.Done()
46+
_, errStdout = io.Copy(os.Stdout, stdoutPipe)
47+
}()
48+
go func() {
49+
_, errStderr = io.Copy(os.Stderr, stderrPipe)
6750
}()
68-
69-
_, errStderr = io.Copy(stderr, stderrIn)
70-
wg.Wait()
7151

7252
err = cmd.Wait()
7353
if err != nil {
74-
log.Fatalf("cmd.Run() failed with %s\n", err)
54+
log.Fatalf("Executing terraform command failed: %v\n", err)
55+
}
56+
57+
if errStdout != nil {
58+
log.Printf("Failed to capture stdout: %v\n", errStdout)
7559
}
76-
if errStdout != nil || errStderr != nil {
77-
log.Fatal("failed to capture stdout or stderr\n")
60+
61+
if errStderr != nil {
62+
log.Printf("Failed to capture stderr: %v\n", errStderr)
7863
}
79-
outStr, errStr := string(stdoutBuf.Bytes()), string(stderrBuf.Bytes())
80-
fmt.Printf("\nout:\n%s\nerr:\n%s\n", outStr, errStr)
8164
}

templates/commit0/commit0.tmpl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ maintainers:
77
# - name: bob
88
# email: bob@test.com
99

10+
kubernetes:
11+
clusterName: staging
12+
deploy: true
13+
awsAccountId: 1234
14+
awsRegion: us-east-1
15+
1016
network:
1117
grpc:
1218
host: 0.0.0.0

templates/kubernetes/terraform/modules/eks/main.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module "eks" {
99
source = "terraform-aws-modules/eks/aws"
1010
version = "6.0.2"
1111

12-
cluster_name = "${var.project}"
12+
cluster_name = var.project
1313
cluster_version = "1.14"
1414
subnets = var.private_subnets
1515
vpc_id = var.vpc_id
@@ -44,4 +44,4 @@ module "eks" {
4444
tags = {
4545
environment = var.environment
4646
}
47-
}
47+
}

0 commit comments

Comments
 (0)