This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
dagger/pkg/alpha.dagger.io/terraform/terraform.cue
Andrea Luzzardi 282759c0e5 cue modules: move stdlib to pkg/alpha.dagger.io
In preparation for Europa, we will vendor multiple CUE modules:

- `pkg/alpha.dagger.io`: legacy non-europa packages
- `pkg/dagger.io`: core Europa packages
- `pkg/universe.dagger.io`: Europa universe

Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
2022-01-11 13:16:37 -08:00

76 lines
1.1 KiB
CUE

// Terraform operations
package terraform
import (
"encoding/json"
"alpha.dagger.io/dagger"
"alpha.dagger.io/dagger/op"
)
// Terraform configuration
#Configuration: {
// Terraform version
version: string | *"latest" @dagger(input)
// Source configuration
source: dagger.#Artifact @dagger(input)
tfvars?: {
...
}
// Environment variables
env: {
[string]: string @dagger(input)
}
state: #up: [
op.#FetchContainer & {
ref: "hashicorp/terraform:\(version)"
},
op.#Copy & {
from: source
dest: "/src"
},
if tfvars != _|_ {
op.#WriteFile & {
dest: "/src/terraform.tfvars.json"
content: json.Marshal(tfvars)
}
},
op.#Exec & {
args: ["terraform", "init"]
dir: "/src"
"env": env
},
op.#Exec & {
args: ["terraform", "apply", "-auto-approve"]
always: true
dir: "/src"
"env": env
},
]
output: {
#up: [
op.#Load & {from: state},
op.#Exec & {
args: ["sh", "-c", "terraform output -json > /output.json"]
dir: "/src"
"env": env
},
op.#Export & {
source: "/output.json"
format: "json"
},
]
...
} @dagger(output)
}