in pkg/infrastructure/authorizationCheckers/terraform/terraformAuthorizationChecker.go [113:176]
func (a *terraformDeploymentConfig) setTFConfig(mpfConfig domain.MPFConfig) (*tfexec.Terraform, error) {
log.Infof("workingDir: %s", a.workingDir)
log.Infof("varfilePath: %s", a.varFilePath)
log.Infof("execPath: %s", a.execPath)
tf, err := tfexec.NewTerraform(a.workingDir, a.execPath)
if err != nil {
log.Fatalf("error running NewTerraform: %s", err)
}
pathEnvVal := os.Getenv("PATH")
var tfLogLevel string
tfLogPathEnvVal := os.Getenv("TF_LOG_PATH")
if tfLogPathEnvVal == "" {
tfLogPathEnvVal = a.workingDir + "/terraform.log"
}
tfReattachProviders := os.Getenv("TF_REATTACH_PROVIDERS")
switch log.GetLevel() {
case log.InfoLevel:
tfLogLevel = "INFO"
case log.WarnLevel:
tfLogLevel = "WARN"
case log.DebugLevel:
tfLogLevel = "DEBUG"
case log.TraceLevel:
tfLogLevel = "TRACE"
default:
tfLogLevel = "ERROR"
}
if tfLogLevel != "ERROR" {
err := tf.SetLog(tfLogLevel)
if err != nil {
log.Warnf("error setting Terraform log level: %s", err)
}
err = tf.SetLogPath(tfLogPathEnvVal)
if err != nil {
log.Warnf("error setting Terraform log path: %s", err)
}
tf.SetStderr(os.Stderr)
tf.SetStdout(os.Stdout)
}
envVars := map[string]string{
"ARM_CLIENT_ID": mpfConfig.SP.SPClientID,
"ARM_CLIENT_SECRET": mpfConfig.SP.SPClientSecret,
"ARM_SUBSCRIPTION_ID": mpfConfig.SubscriptionID,
"ARM_TENANT_ID": mpfConfig.TenantID,
"PATH": pathEnvVal,
}
if tfReattachProviders != "" {
envVars["TF_REATTACH_PROVIDERS"] = tfReattachProviders
}
err = tf.SetEnv(envVars)
if err != nil {
log.Warnf("error setting Terraform env vars: %s", err)
}
return tf, nil
}