|
@ -19,13 +19,14 @@ var ( |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
type terraform struct { |
|
|
type terraform struct { |
|
|
Remote remote `json:"remote"` |
|
|
Remote remote `json:"remote"` |
|
|
Plan bool `json:"plan"` |
|
|
Plan bool `json:"plan"` |
|
|
Vars map[string]string `json:"vars"` |
|
|
Vars map[string]string `json:"vars"` |
|
|
Cacert string `json:"ca_cert"` |
|
|
Cacert string `json:"ca_cert"` |
|
|
Sensitive bool `json:"sensitive"` |
|
|
Sensitive bool `json:"sensitive"` |
|
|
RoleARN string `json:"role_arn_to_assume"` |
|
|
RoleARN string `json:"role_arn_to_assume"` |
|
|
RootDir string `json:"root_dir"` |
|
|
RootDir string `json:"root_dir"` |
|
|
|
|
|
Parallelism int `json:"parallelism"` |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
type remote struct { |
|
|
type remote struct { |
|
@ -57,9 +58,9 @@ func main() { |
|
|
commands = append(commands, remoteConfigCommand(remote)) |
|
|
commands = append(commands, remoteConfigCommand(remote)) |
|
|
} |
|
|
} |
|
|
commands = append(commands, getModules()) |
|
|
commands = append(commands, getModules()) |
|
|
commands = append(commands, planCommand(vargs.Vars)) |
|
|
commands = append(commands, planCommand(vargs.Vars, vargs.Parallelism)) |
|
|
if !vargs.Plan { |
|
|
if !vargs.Plan { |
|
|
commands = append(commands, applyCommand()) |
|
|
commands = append(commands, applyCommand(vargs.Parallelism)) |
|
|
} |
|
|
} |
|
|
commands = append(commands, deleteCache()) |
|
|
commands = append(commands, deleteCache()) |
|
|
|
|
|
|
|
@ -129,7 +130,7 @@ func getModules() *exec.Cmd { |
|
|
) |
|
|
) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func planCommand(variables map[string]string) *exec.Cmd { |
|
|
func planCommand(variables map[string]string, parallelism int) *exec.Cmd { |
|
|
args := []string{ |
|
|
args := []string{ |
|
|
"plan", |
|
|
"plan", |
|
|
"-out=plan.tfout", |
|
|
"-out=plan.tfout", |
|
@ -138,17 +139,26 @@ func planCommand(variables map[string]string) *exec.Cmd { |
|
|
args = append(args, "-var") |
|
|
args = append(args, "-var") |
|
|
args = append(args, fmt.Sprintf("%s=%s", k, v)) |
|
|
args = append(args, fmt.Sprintf("%s=%s", k, v)) |
|
|
} |
|
|
} |
|
|
|
|
|
if parallelism > 0 { |
|
|
|
|
|
args = append(args, fmt.Sprintf("-parallelism=%d", parallelism)) |
|
|
|
|
|
} |
|
|
return exec.Command( |
|
|
return exec.Command( |
|
|
"terraform", |
|
|
"terraform", |
|
|
args..., |
|
|
args..., |
|
|
) |
|
|
) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func applyCommand() *exec.Cmd { |
|
|
func applyCommand(parallelism int) *exec.Cmd { |
|
|
|
|
|
args := []string{ |
|
|
|
|
|
"apply", |
|
|
|
|
|
} |
|
|
|
|
|
if parallelism > 0 { |
|
|
|
|
|
args = append(args, fmt.Sprintf("-parallelism=%d", parallelism)) |
|
|
|
|
|
} |
|
|
|
|
|
args = append(args, "plan.tfout") |
|
|
return exec.Command( |
|
|
return exec.Command( |
|
|
"terraform", |
|
|
"terraform", |
|
|
"apply", |
|
|
args..., |
|
|
"plan.tfout", |
|
|
|
|
|
) |
|
|
) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|