4aeb11754d
Signed-off-by: Sam Alba <sam.alba@gmail.com>
94 lines
1.7 KiB
CUE
94 lines
1.7 KiB
CUE
package cloudformation
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"dagger.io/dagger/op"
|
|
"dagger.io/aws"
|
|
)
|
|
|
|
// AWS CloudFormation Stack
|
|
#Stack: {
|
|
|
|
// AWS Config
|
|
config: aws.#Config
|
|
|
|
// Source is the Cloudformation template (JSON/YAML string)
|
|
source: string @dagger(input)
|
|
|
|
// Stackname is the cloudformation stack
|
|
stackName: string @dagger(input)
|
|
|
|
// Stack parameters
|
|
parameters: {
|
|
...
|
|
}
|
|
|
|
// Behavior when failure to create/update the Stack
|
|
onFailure: *"DO_NOTHING" | "ROLLBACK" | "DELETE" @dagger(input)
|
|
|
|
// Timeout for waiting for the stack to be created/updated (in minutes)
|
|
timeout: *10 | uint @dagger(input)
|
|
|
|
// Never update the stack if already exists
|
|
neverUpdate: *false | bool @dagger(input)
|
|
|
|
#files: {
|
|
"/entrypoint.sh": #Code
|
|
"/src/template.json": source
|
|
if len(parameters) > 0 {
|
|
"/src/parameters.json": json.Marshal(
|
|
[ for key, val in parameters {
|
|
ParameterKey: "\(key)"
|
|
ParameterValue: "\(val)"
|
|
}])
|
|
"/src/parameters_overrides.json": json.Marshal([ for key, val in parameters {"\(key)=\(val)"}])
|
|
}
|
|
}
|
|
|
|
outputs: {
|
|
[string]: string @dagger(output)
|
|
}
|
|
|
|
outputs: #up: [
|
|
op.#Load & {
|
|
from: aws.#CLI & {
|
|
"config": config
|
|
}
|
|
},
|
|
op.#Mkdir & {
|
|
path: "/src"
|
|
},
|
|
for dest, content in #files {
|
|
op.#WriteFile & {
|
|
"dest": dest
|
|
"content": content
|
|
}
|
|
},
|
|
op.#Exec & {
|
|
always: true
|
|
args: [
|
|
"/bin/bash",
|
|
"--noprofile",
|
|
"--norc",
|
|
"-eo",
|
|
"pipefail",
|
|
"/entrypoint.sh",
|
|
]
|
|
env: {
|
|
if neverUpdate {
|
|
NEVER_UPDATE: "true"
|
|
}
|
|
STACK_NAME: stackName
|
|
TIMEOUT: "\(timeout)"
|
|
ON_FAILURE: onFailure
|
|
}
|
|
dir: "/src"
|
|
},
|
|
op.#Export & {
|
|
source: "/outputs.json"
|
|
format: "json"
|
|
},
|
|
]
|
|
}
|