Dagger
Search

configuration

This module provides functions for configuration management tasks including
templating, validation, and deployment of configuration artifacts. It integrates
with dependencies, git, and templating modules to enable automated configuration
workflows within Dagger pipelines.

Installation

dagger install github.com/stuttgart-things/blueprints/configuration@v1.79.0

Entrypoint

Return Type
Configuration
Example
dagger -m github.com/stuttgart-things/blueprints/configuration@825ff3bce9471586ff147e06b0b307454aa8058f call \
func (m *MyModule) Example() *dagger.Configuration  {
	return dag.
			Configuration()
}
@function
def example() -> dagger.Configuration:
	return (
		dag.configuration()
	)
@func()
example(): Configuration {
	return dag
		.configuration()
}

Types

Configuration 🔗

analyzeConfigString() 🔗

AnalyzeConfigString parses a key=value configuration string and validates mandatory keys Dagger-compatible wrapper that returns JSON string representation of the map

Return Type
String !
Arguments
NameTypeDefault ValueDescription
configStringString !-No description provided
mandatoryKeysString !-Comma-separated list of mandatory keys (e.g., "name,template,disk")
Example
dagger -m github.com/stuttgart-things/blueprints/configuration@825ff3bce9471586ff147e06b0b307454aa8058f call \
 analyze-config-string --config-string string --mandatory-keys string
func (m *MyModule) Example(ctx context.Context, configString string, mandatoryKeys string) string  {
	return dag.
			Configuration().
			AnalyzeConfigString(ctx, configString, mandatoryKeys)
}
@function
async def example(config_string: str, mandatory_keys: str) -> str:
	return await (
		dag.configuration()
		.analyze_config_string(config_string, mandatory_keys)
	)
@func()
async example(configString: string, mandatoryKeys: string): Promise<string> {
	return dag
		.configuration()
		.analyzeConfigString(configString, mandatoryKeys)
}

createAnsibleRequirementFiles() 🔗

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
srcDirectory -No description provided
templatePathsString "https://raw.githubusercontent.com/stuttgart-things/ansible/refs/heads/main/templates/requirements.yaml.tmpl"No description provided
dataFileString "https://raw.githubusercontent.com/stuttgart-things/ansible/refs/heads/main/templates/requirements-data.yaml"Path to YAML or JSON file containing template data (supports HTTPS URLs)
strictModeBoolean falseNo description provided
Example
dagger -m github.com/stuttgart-things/blueprints/configuration@825ff3bce9471586ff147e06b0b307454aa8058f call \
 create-ansible-requirement-files
func (m *MyModule) Example() *dagger.Directory  {
	return dag.
			Configuration().
			CreateAnsibleRequirementFiles()
}
@function
def example() -> dagger.Directory:
	return (
		dag.configuration()
		.create_ansible_requirement_files()
	)
@func()
example(): Directory {
	return dag
		.configuration()
		.createAnsibleRequirementFiles()
}

getVmSize() 🔗

GetVmSize returns a formatted string for VM configuration based on t-shirt size. This is a Dagger function that can be called via dagger call get-vm-size.

Example:

dagger call get-vm-size --config-file=vm_tshirt_sizes.yaml --size=small
Return Type
String !
Arguments
NameTypeDefault ValueDescription
configFileFile !-YAML file containing VM t-shirt sizes
sizeString !-T-shirt size: small, medium, large, or xlarge
Example
dagger -m github.com/stuttgart-things/blueprints/configuration@825ff3bce9471586ff147e06b0b307454aa8058f call \
 get-vm-size --config-file file:path --size string
func (m *MyModule) Example(ctx context.Context, configFile *dagger.File, size string) string  {
	return dag.
			Configuration().
			GetVmSize(ctx, configFile, size)
}
@function
async def example(config_file: dagger.File, size: str) -> str:
	return await (
		dag.configuration()
		.get_vm_size(config_file, size)
	)
@func()
async example(configFile: File, size: string): Promise<string> {
	return dag
		.configuration()
		.getVmSize(configFile, size)
}

renderFluxKustomization() 🔗

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
srcDirectory -No description provided
ociSourceString -OCI source path (e.g., oci://ghcr.io/stuttgart-things/kcl-flux-instance)
configParametersString -KCL parameters as comma-separated key=value pairs
entrypointString "main.k"Entry point file name
fileNameString "kustomization"Output file name for rendered Kustomization
fileExtensionString "yaml"Output file name for rendered Kustomization
repositoryString -Repository in format "owner/repo"
baseBranchString "main"No description provided
branchNameString -Name of the new branch to create
destinationPathString "flux/"Destination path within the repository (e.g., "flux/" or "clusters/prod/")
createBranchBoolean "false"No description provided
commitChangesBoolean "false"No description provided
applyToClusterBoolean "false"No description provided
kubeConfigSecret -Kubeconfig secret for authentication
namespaceString "flux-system"Namespace for the operation
tokenSecret -GitHub token for authentication
Example
dagger -m github.com/stuttgart-things/blueprints/configuration@825ff3bce9471586ff147e06b0b307454aa8058f call \
 render-flux-kustomization
func (m *MyModule) Example() *dagger.Directory  {
	return dag.
			Configuration().
			RenderFluxKustomization()
}
@function
def example() -> dagger.Directory:
	return (
		dag.configuration()
		.render_flux_kustomization()
	)
@func()
example(): Directory {
	return dag
		.configuration()
		.renderFluxKustomization()
}

renderMetadata() 🔗

RenderMetadata renders a README template with variables from multiple YAML files Multiple variables files are merged before rendering (comma-separated) Example usage:

dagger call render-readme \
  --src ./tests/configuration \
  --template-path README.md.tmpl \
  --data-files vm-ansible.yaml,additional-vars.yaml
Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
srcDirectory -Source directory containing template and variables files
configParametersString -Configuration parameters as key=value pairs (comma-separated)
templatePathString "README.md.tmpl"Path to template file
dataFilesString "data.yaml"Path(s) to YAML or JSON file(s) containing template data Multiple files can be comma-separated and will be merged in order
strictModeBoolean falseNo description provided
Example
dagger -m github.com/stuttgart-things/blueprints/configuration@825ff3bce9471586ff147e06b0b307454aa8058f call \
 render-metadata
func (m *MyModule) Example() *dagger.Directory  {
	return dag.
			Configuration().
			RenderMetadata()
}
@function
def example() -> dagger.Directory:
	return (
		dag.configuration()
		.render_metadata()
	)
@func()
example(): Directory {
	return dag
		.configuration()
		.renderMetadata()
}

terraformApply() 🔗

TerraformApply decrypts SOPS-encrypted files, optionally retrieves a Kubernetes secret (e.g. VAULT_TOKEN), and runs terraform initReturns the terraform working directory after execution.

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
terraformDirDirectory !-Directory containing terraform configurations
sopsAgeKeySecret -AGE key for SOPS decryption
encryptedFilesString -Comma-separated list of SOPS-encrypted file paths to decrypt (e.g. "terraform.tfvars.sops.json,secrets.sops.yaml")
operationString "apply"Terraform operation to execute
variablesString -Comma-separated terraform variables (e.g. "name=patrick,food=schnitzel")
kubeConfigSecret -Kubeconfig secret for Kubernetes state backend access (plaintext)
kubeConfigPathString "/root/.kube/config"Path to mount the kubeconfig inside the container (must match backend config_path in backend.tf)
encryptedKubeConfigFile -SOPS-encrypted kubeconfig file (e.g. secrets/kubeconfigs/infra-sthings.yaml); decrypted with sopsAgeKey and used for kubectl
kubeSecretNameString -Kubernetes secret name to read (e.g. "vault-root-token")
kubeSecretNamespaceString -Kubernetes namespace for the secret
kubeSecretJsonpathString -JSONPath expression to extract from the Kubernetes secret (e.g. ".data.root_token")
kubeSecretTfVarString -Terraform variable name to set from the Kubernetes secret value (e.g. "vault_token" becomes -var vault_token=<value>)
envVarsString -Additional environment variables as comma-separated key=value pairs (e.g. "VAULT_ADDR=https://vault.example.com,VAULT_SKIP_VERIFY=true")
awsAccessKeyIdSecret -AWS access key ID for S3/MinIO backend
awsSecretAccessKeySecret -AWS secret access key for S3/MinIO backend
vaultRoleIdSecret -Vault role ID secret
vaultSecretIdSecret -Vault secret ID secret
vaultTokenSecret -Vault token secret
exportTfOutputBoolean -Run terraform output --json after apply and write result to output.json in the returned directory
Example
dagger -m github.com/stuttgart-things/blueprints/configuration@825ff3bce9471586ff147e06b0b307454aa8058f call \
 terraform-apply --terraform-dir DIR_PATH
func (m *MyModule) Example(terraformDir *dagger.Directory) *dagger.Directory  {
	return dag.
			Configuration().
			TerraformApply(terraformDir)
}
@function
def example(terraform_dir: dagger.Directory) -> dagger.Directory:
	return (
		dag.configuration()
		.terraform_apply(terraform_dir)
	)
@func()
example(terraformDir: Directory): Directory {
	return dag
		.configuration()
		.terraformApply(terraformDir)
}

terraformOutput() 🔗

TerraformOutput retrieves terraform outputs as JSON from an already-applied terraform directory (returned by TerraformApply).

Return Type
String !
Arguments
NameTypeDefault ValueDescription
terraformDirDirectory !-Directory containing terraform state (output of TerraformApply)
awsAccessKeyIdSecret -AWS access key ID for S3/MinIO backend
awsSecretAccessKeySecret -AWS secret access key for S3/MinIO backend
kubeConfigSecret -Kubeconfig secret for Kubernetes backend access
kubeConfigPathString "/root/.kube/config"Path to mount the kubeconfig inside the container (must match backend config_path in backend.tf)
Example
dagger -m github.com/stuttgart-things/blueprints/configuration@825ff3bce9471586ff147e06b0b307454aa8058f call \
 terraform-output --terraform-dir DIR_PATH
func (m *MyModule) Example(ctx context.Context, terraformDir *dagger.Directory) string  {
	return dag.
			Configuration().
			TerraformOutput(ctx, terraformDir)
}
@function
async def example(terraform_dir: dagger.Directory) -> str:
	return await (
		dag.configuration()
		.terraform_output(terraform_dir)
	)
@func()
async example(terraformDir: Directory): Promise<string> {
	return dag
		.configuration()
		.terraformOutput(terraformDir)
}

vsphereVm() 🔗

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
srcDirectory !-No description provided
configParametersString -No description provided
variablesFileString -No description provided
templatePathsString "https://raw.githubusercontent.com/stuttgart-things/vsphere-vm/refs/heads/main/templates/vm.tf.tmpl,https://raw.githubusercontent.com/stuttgart-things/vsphere-vm/refs/heads/main/templates/README.md.tmpl"No description provided
repositoryString -Repository in format "owner/repo"
branchNameString -Name of the new branch to create
baseBranchString "main"Base ref/branch to create from (e.g., "main", "develop")
tokenSecret -GitHub token for authentication
createBranchBoolean "false"No description provided
renderAnsibleRequirementsBoolean "true"No description provided
ansibleRequirementsTemplateString "https://raw.githubusercontent.com/stuttgart-things/ansible/refs/heads/main/templates/requirements.yaml.tmpl"No description provided
ansibleRequirementsDataString "https://raw.githubusercontent.com/stuttgart-things/ansible/refs/heads/main/templates/requirements-data.yaml"No description provided
renderExecutionfileBoolean "true"No description provided
executionfileDataString "https://raw.githubusercontent.com/stuttgart-things/blueprints/refs/heads/main/tests/vm/execution-vars.yaml"No description provided
executionfileTemplateString "https://raw.githubusercontent.com/stuttgart-things/blueprints/refs/heads/main/tests/vm/execution.yaml.tmpl"No description provided
commitConfigBoolean "false"No description provided
createPullRequestBoolean "false"No description provided
commitMessageString ""No description provided
destinationFolderString ""No description provided
destinationBasePathString "./"No description provided
authorNameString ""No description provided
authorEmailString ""No description provided
pullRequestTitleString ""No description provided
pullRequestBodyString ""No description provided
Example
dagger -m github.com/stuttgart-things/blueprints/configuration@825ff3bce9471586ff147e06b0b307454aa8058f call \
 vsphere-vm --src DIR_PATH
func (m *MyModule) Example(src *dagger.Directory) *dagger.Directory  {
	return dag.
			Configuration().
			VsphereVm(src)
}
@function
def example(src: dagger.Directory) -> dagger.Directory:
	return (
		dag.configuration()
		.vsphere_vm(src)
	)
@func()
example(src: Directory): Directory {
	return dag
		.configuration()
		.vsphereVm(src)
}