forked from EngineerBetter/concourse-up
-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.go
90 lines (81 loc) · 3.66 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package config
import (
"encoding/json"
"fmt"
"strings"
"github.com/EngineerBetter/concourse-up/util"
)
// Config represents a concourse-up configuration file
type Config struct {
HostedZoneID string `json:"hosted_zone_id"`
HostedZoneRecordPrefix string `json:"hosted_zone_record_prefix"`
Domain string `json:"domain"`
ConcourseUsername string `json:"concourse_username"`
ConcoursePassword string `json:"concourse_password"`
ConcourseWorkerCount int `json:"concourse_worker_count"`
ConcourseWorkerSize string `json:"concourse_worker_size"`
ConcourseDBName string `json:"concourse_db_name"`
PublicKey string `json:"public_key"`
PrivateKey string `json:"private_key"`
Region string `json:"region"`
AvailabilityZone string `json:"availability_zone"`
Deployment string `json:"deployment"`
RDSDefaultDatabaseName string `json:"rds_default_database_name"`
SourceAccessIP string `json:"source_access_ip"`
TFStatePath string `json:"tf_state_path"`
Project string `json:"project"`
ConfigBucket string `json:"config_bucket"`
DirectorUsername string `json:"director_username"`
DirectorPassword string `json:"director_password"`
DirectorHMUserPassword string `json:"director_hm_user_password"`
DirectorMbusPassword string `json:"director_mbus_password"`
DirectorNATSPassword string `json:"director_nats_password"`
DirectorRegistryPassword string `json:"director_registry_password"`
DirectorCACert string `json:"director_ca_cert"`
DirectorCert string `json:"director_cert"`
DirectorKey string `json:"director_key"`
DirectorPublicIP string `json:"director_public_ip"`
ConcourseCert string `json:"concourse_cert"`
ConcourseKey string `json:"concourse_key"`
ConcourseCACert string `json:"concourse_ca_cert"`
ConcourseUserProvidedCert bool `json:"concourse_user_provided_cert"`
RDSInstanceClass string `json:"rds_instance_class"`
RDSUsername string `json:"rds_username"`
RDSPassword string `json:"rds_password"`
MultiAZRDS bool `json:"multi_az_rds"`
}
func generateDefaultConfig(project, deployment, region string) ([]byte, error) {
privateKey, publicKey, err := util.GenerateSSHKeyPair()
if err != nil {
return nil, err
}
configBucket := fmt.Sprintf("%s-config", deployment)
conf := Config{
ConcourseUsername: "admin",
ConcoursePassword: util.GeneratePassword(),
ConcourseWorkerCount: 1,
ConcourseWorkerSize: "xlarge",
ConcourseDBName: "concourse_atc",
PublicKey: strings.TrimSpace(string(publicKey)),
PrivateKey: strings.TrimSpace(string(privateKey)),
Deployment: deployment,
ConfigBucket: configBucket,
RDSDefaultDatabaseName: "bosh",
SourceAccessIP: "",
Project: project,
TFStatePath: terraformStateFileName,
Region: region,
AvailabilityZone: fmt.Sprintf("%sa", region),
DirectorUsername: "admin",
DirectorPassword: util.GeneratePassword(),
DirectorHMUserPassword: util.GeneratePassword(),
DirectorMbusPassword: util.GeneratePassword(),
DirectorNATSPassword: util.GeneratePassword(),
DirectorRegistryPassword: util.GeneratePassword(),
RDSInstanceClass: "db.t2.small",
RDSUsername: "admin" + util.GeneratePassword(),
RDSPassword: util.GeneratePassword(),
MultiAZRDS: false,
}
return json.MarshalIndent(&conf, "", " ")
}