stdlib: terraform support
Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
This commit is contained in:
65
stdlib/terraform/terraform.cue
Normal file
65
stdlib/terraform/terraform.cue
Normal file
@@ -0,0 +1,65 @@
|
||||
package terraform
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"dagger.io/dagger"
|
||||
"dagger.io/dagger/op"
|
||||
)
|
||||
|
||||
#Configuration: {
|
||||
version: string | *"latest"
|
||||
|
||||
source: dagger.#Artifact
|
||||
|
||||
tfvars?: [string]: _
|
||||
|
||||
env: [string]: string
|
||||
|
||||
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"
|
||||
},
|
||||
]
|
||||
...
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user