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>
This commit is contained in:
Andrea Luzzardi
2022-01-11 12:40:02 -08:00
parent e5316f3a1e
commit 282759c0e5
277 changed files with 33 additions and 31 deletions

View File

@@ -0,0 +1,75 @@
// 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)
}

View File

@@ -0,0 +1,73 @@
package terraform
import (
"alpha.dagger.io/dagger"
"alpha.dagger.io/dagger/op"
"alpha.dagger.io/alpine"
)
TestData: dagger.#Artifact @dagger(input)
TestConfig: awsConfig: {
accessKey: dagger.#Secret @dagger(input)
secretKey: dagger.#Secret @dagger(input)
region: "us-east-2"
}
#TestGetConfig: {
accessKey: dagger.#Secret
secretKey: dagger.#Secret
visibleAccessKey: string
visibleSecretKey: string
#up: [
op.#Load & {from: alpine.#Image & {
package: {
bash: true
jq: true
}
}},
op.#Exec & {
always: true
args: ["/bin/bash", "-c", #"""
export ACCESS_KEY=$(cat /accessKey)
export SECRET_KEY=$(cat /secretKey)
jq --arg key0 'visibleAccessKey' --arg value0 "$ACCESS_KEY" \
--arg key1 'visibleSecretKey' --arg value1 "$SECRET_KEY" \
'. | .[$key0]=$value0 | .[$key1]=$value1' <<< '{}' > /out
"""#,
]
mount: {
"/accessKey": secret: accessKey
"/secretKey": secret: secretKey
}
},
op.#Export & {
source: "/out"
format: "json"
},
]
}
TestTerraform: {
config: #TestGetConfig & {
accessKey: TestConfig.awsConfig.accessKey
secretKey: TestConfig.awsConfig.secretKey
}
apply: #Configuration & {
source: TestData
env: {
AWS_ACCESS_KEY_ID: config.visibleAccessKey
AWS_SECRET_ACCESS_KEY: config.visibleSecretKey
AWS_DEFAULT_REGION: TestConfig.awsConfig.region
AWS_REGION: TestConfig.awsConfig.region
}
}
}

View File

@@ -0,0 +1,34 @@
terraform {
required_providers {
random = {
source = "hashicorp/random"
version = "3.1.0"
}
}
backend "s3" {
bucket = "dagger-ci"
key = "terraform/tfstate"
region = "us-east-2"
}
}
provider "random" {
}
variable "input" {
type = string
}
resource "random_integer" "test" {
min = 1
max = 50
}
output "random" {
value = random_integer.test.result
}
output "input" {
value = var.input
}