Skip to content

Commit d84311d

Browse files
author
Abdullah Garcia
authored
Merge pull request #135 from kubernetes-simulator/s3vars
S3vars
2 parents 6ddeefb + 1219b9c commit d84311d

File tree

5 files changed

+49
-5
lines changed

5 files changed

+49
-5
lines changed

cmd/infra.go

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,37 @@ import (
77
"github.com/spf13/cobra"
88
"github.com/spf13/viper"
99
"go.uber.org/zap"
10+
"io/ioutil"
11+
"path/filepath"
12+
"fmt"
13+
"strings"
1014
)
1115

16+
func writeS3VarsFile(logger *zap.SugaredLogger, tfDir, bucket string) error {
17+
logger.Infof("Writing s3 bucket %s to tfvars\n", bucket)
18+
bucketvarspath := filepath.Join(tfDir, "terraform.tfvars")
19+
input, err := ioutil.ReadFile(bucketvarspath)
20+
if err != nil {
21+
return errors.Wrapf(err, "Error reading bucket vars file %s", bucketvarspath)
22+
}
23+
24+
lines := strings.Split(string(input), "\n")
25+
for i, line := range lines {
26+
if strings.Contains(line, "s3_bucket_name = ") {
27+
lines[i] = fmt.Sprintf("s3_bucket_name = \"%s\"", bucket)
28+
}
29+
}
30+
output := strings.Join(lines, "\n")
31+
32+
err = ioutil.WriteFile(bucketvarspath, []byte(output), 0644)
33+
if err != nil {
34+
return errors.Wrapf(err, "Error writing providers file %s", bucketvarspath)
35+
}
36+
37+
logger.Infof("Wrote s3 bucket %s to tfvars\n", bucket)
38+
return nil
39+
}
40+
1241
func newCreateCommand(logger *zap.SugaredLogger) *cobra.Command {
1342
cmd := &cobra.Command{
1443
Use: `create`,
@@ -24,7 +53,17 @@ func newCreateCommand(logger *zap.SugaredLogger) *cobra.Command {
2453
scenariosDir := viper.GetString("scenarios-dir")
2554
attackTag := viper.GetString("attack-container-tag")
2655
tfDir := viper.GetString("tf-dir")
27-
err := simulator.Create(logger, tfDir, bucket, attackTag)
56+
57+
//bucket var
58+
logger.Infof("Creating variable %s for terraform s3 bucket\n", bucket)
59+
err := writeS3VarsFile(logger, tfDir, bucket)
60+
if err != nil {
61+
return errors.Wrap(err, "Error saving bucket name")
62+
}
63+
logger.Infof("Created s3 bucket %s for terraform remote state\n", bucket)
64+
//bucket var
65+
66+
err = simulator.Create(logger, tfDir, bucket, attackTag)
2867
if err != nil {
2968
logger.Errorw("Error creating infrastructure", zap.Error(err))
3069
}

cmd/init.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ func newInitCommand() *cobra.Command {
2424
Short: "Creates and configures a bucket for remote state",
2525
RunE: func(cmd *cobra.Command, args []string) error {
2626
bucket := viper.GetString("state-bucket")
27+
2728
logger, err := newLogger(viper.GetString("loglevel"), "console")
2829
if err != nil {
2930
logger.Fatalf("Can't re-initialize zap logger: %v", err)
@@ -43,6 +44,7 @@ func newInitCommand() *cobra.Command {
4344

4445
bucket = strings.TrimSpace(bucket)
4546

47+
4648
logger.Infof("Creating s3 bucket %s for terraform remote state\n", bucket)
4749
if err = simulator.CreateRemoteStateBucket(logger, bucket); err != nil {
4850
if strings.HasPrefix(errors.Cause(err).Error(), "BucketAlreadyOwnedByYou") {
@@ -53,8 +55,6 @@ func newInitCommand() *cobra.Command {
5355

5456
return errors.Wrapf(err, "Error creating s3 bucket %s", bucket)
5557
}
56-
57-
logger.Infof("Created s3 bucket %s for terraform remote state\n", bucket)
5858
saveBucketConfig(logger, bucket)
5959

6060
return nil

terraform/deployments/AWS/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
locals {
3-
aws_tags = "${var.default_tags}"
3+
aws_tags = "${merge(var.default_tags, map("Simulator Bucket", "${var.s3_bucket_name}"))}"
44
}
55

66
// Setup networking
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
s3_bucket_name = "###replaced by infra.go###"

terraform/deployments/AWS/variables.tf

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,15 @@ variable "attack_container_tag" {
6666
default = "latest"
6767
}
6868

69+
variable "s3_bucket_name" {
70+
description = "name of the s3 state bucket"
71+
}
72+
73+
6974
variable "default_tags" {
7075
description = "Default tags for all resources"
7176
type = "map"
7277
default = {
7378
Product = "simulator"
7479
}
7580
}
76-

0 commit comments

Comments
 (0)