60 lines
1.3 KiB
Go
60 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
|
|
"dagger.io/dagger"
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
func Plan(ctx context.Context) error {
|
|
terraform, err := bootstrap(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
_, err = terraform.WithExec([]string{
|
|
"plan",
|
|
}).
|
|
ExitCode(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func bootstrap(ctx context.Context) (*dagger.Container, error) {
|
|
_ = godotenv.Load()
|
|
|
|
client, err := dagger.Connect(ctx, dagger.WithLogOutput(os.Stdout))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
username := client.SetSecret("MINIO_USERNAME", os.Getenv("MINIO_USERNAME"))
|
|
password := client.SetSecret("MINIO_PASSWORD", os.Getenv("MINIO_PASSWORD"))
|
|
|
|
terraformDir := client.Host().Directory("infrastructure", dagger.HostDirectoryOpts{Exclude: []string{
|
|
".terraform/",
|
|
}})
|
|
|
|
terraform := client.
|
|
Container().
|
|
From("hashicorp/terraform").
|
|
WithSecretVariable("AWS_ACCESS_KEY_ID", username).
|
|
WithSecretVariable("AWS_SECRET_ACCESS_KEY", password).
|
|
WithSecretVariable("TF_VAR_minio_user", username).
|
|
WithSecretVariable("TF_VAR_minio_password", password).
|
|
WithEnvVariable("MINIO_ENABLE_HTTPS", "true").
|
|
WithMountedDirectory("/mnt/terraform", terraformDir).
|
|
WithWorkdir("/mnt/terraform").
|
|
WithExec([]string{
|
|
"init",
|
|
})
|
|
|
|
return terraform, nil
|
|
|
|
}
|