Save time by setting default values for variables you use frequently. This page explains how to manage your default variable configuration.
Default variables are user-defined values that override module and template defaults. They allow you to:
Variables are resolved in this order (lowest to highest priority):
--var flags)Your defaults override module and template values but can be overridden by CLI arguments.
All default management commands follow this pattern:
boilerplates <module> defaults <command> [args]
List all saved defaults for a module:
boilerplates compose defaults list
Output:
Default Variables (Compose):
container_timezone: America/New_York
restart_policy: unless-stopped
traefik_network: traefik
network_external: true
Save a default value:
boilerplates compose defaults set container_timezone="America/New_York"
Response:
Set default: container_timezone = America/New_York
Tips:
true or falseExamples:
# String
boilerplates compose defaults set restart_policy="unless-stopped"
# Integer
boilerplates compose defaults set user_uid=1000
# Boolean
boilerplates compose defaults set traefik_enabled=true
# String with spaces
boilerplates compose defaults set container_hostname="my app server"
View a single default value:
boilerplates compose defaults get container_timezone
Output:
container_timezone: America/New_York
Delete a saved default:
boilerplates compose defaults rm container_timezone
Response:
Removed default: container_timezone
The variable will now use module/template defaults again.
Remove all saved defaults for a module:
boilerplates compose defaults clear
Response:
Cleared all defaults for compose
Warning: This cannot be undone. Consider backing up your config first.
Defaults are stored in:
~/.config/boilerplates/config.yaml
Example content:
libraries:
- name: default
type: git
url: https://github.com/christianlempa/boilerplates
branch: main
directory: library
defaults:
compose:
container_timezone: America/New_York
restart_policy: unless-stopped
traefik_network: traefik
network_external: true
terraform:
region: us-east-1
instance_type: t3.micro
You can manually edit the config file:
# Edit configuration
nano ~/.config/boilerplates/config.yaml
# Verify defaults
boilerplates compose defaults list
Set your local timezone once:
boilerplates compose defaults set container_timezone="Europe/Berlin"
Now all Docker containers use your timezone by default.
Standardize network settings:
boilerplates compose defaults set network_external=true
boilerplates compose defaults set network_name="docker-network"
Set common Traefik values:
boilerplates compose defaults set traefik_network="traefik"
boilerplates compose defaults set traefik_domain="example.com"
boilerplates compose defaults set traefik_tls_certresolver="cloudflare"
Match your host user:
boilerplates compose defaults set user_uid=$(id -u)
boilerplates compose defaults set user_gid=$(id -g)
Standardize container behavior:
boilerplates compose defaults set restart_policy="unless-stopped"
Even with defaults set, you can override them:
During interactive generation, defaults appear as pre-filled values. Press Enter to accept or type a new value:
Container timezone [America/New_York]: Europe/London
Override with --var:
boilerplates compose generate nginx \
--var container_timezone="UTC" \
--no-interactive
The CLI argument takes precedence over your saved default.
Each module has its own defaults:
# Compose defaults
boilerplates compose defaults set restart_policy="unless-stopped"
# Terraform defaults (separate)
boilerplates terraform defaults set region="us-east-1"
# Ansible defaults (separate)
boilerplates ansible defaults set become=true
Defaults don't transfer between modules—they're module-specific.
Save your configuration:
cp ~/.config/boilerplates/config.yaml ~/boilerplates-config-backup.yaml
Restore from backup:
cp ~/boilerplates-config-backup.yaml ~/.config/boilerplates/config.yaml
Share defaults with your team:
# Export defaults
cat ~/.config/boilerplates/config.yaml | grep -A 100 "defaults:" > team-defaults.yaml
# Share file with team
# Team members can merge into their config.yaml
Maintain multiple configurations:
# Production defaults
cp ~/.config/boilerplates/config.yaml ~/.config/boilerplates/config-prod.yaml
# Development defaults
cp ~/.config/boilerplates/config.yaml ~/.config/boilerplates/config-dev.yaml
# Switch between them
cp ~/.config/boilerplates/config-prod.yaml ~/.config/boilerplates/config.yaml
Set defaults programmatically:
#!/bin/bash
# Set common defaults
boilerplates compose defaults set container_timezone="$(cat /etc/timezone)"
boilerplates compose defaults set user_uid="$(id -u)"
boilerplates compose defaults set user_gid="$(id -g)"
boilerplates compose defaults set restart_policy="unless-stopped"
If defaults aren't being used:
# Verify defaults are set
boilerplates compose defaults list
# Check config file
cat ~/.config/boilerplates/config.yaml
# Ensure module name matches
# "compose" not "docker-compose"
If config file is corrupted:
# Validate YAML syntax
python3 -c "import yaml; yaml.safe_load(open('~/.config/boilerplates/config.yaml'))"
# Or remove and recreate
mv ~/.config/boilerplates/config.yaml ~/.config/boilerplates/config.yaml.bak
boilerplates repo update # Recreates config
If wrong values appear:
# Check precedence
# 1. Module spec
# 2. Template spec
# 3. User defaults ← Check here
# 4. CLI --var
# Verify your defaults
boilerplates compose defaults list
# Check template spec
boilerplates compose show <template-name>
Set these common defaults:
# System
boilerplates compose defaults set container_timezone="$(cat /etc/timezone)"
boilerplates compose defaults set user_uid=$(id -u)
boilerplates compose defaults set user_gid=$(id -g)
# Containers
boilerplates compose defaults set restart_policy="unless-stopped"
# Networking (if using external networks)
boilerplates compose defaults set network_external=true
boilerplates compose defaults set network_name="docker-network"
Only set defaults for values you use consistently:
Good:
Bad:
Keep a list of your defaults for reference:
# Save to file
boilerplates compose defaults list > ~/my-defaults.txt
Check your defaults occasionally:
boilerplates compose defaults list
Remove obsolete or unused values.