Example Walkthroughs
These examples demonstrate real-world Vigo configurations using .vgo YAML configcrates, roles, and node assignments.
Each example is a complete walkthrough with ready-to-use config snippets. Adapt the variable values and paths for your environment.
Available Examples
- Nginx Configcrate -- Package, config file, and service with notify chain
- Multi-Environment Setup -- Production/staging with
environments.vgo - Docker Stack Management -- Container lifecycle with the
containerexecutor - Security Hardening -- Firewall, fail2ban, SSH, and sudo with
depends_on - Monitoring Stack -- Prometheus, node_exporter, and Grafana
- Database Cluster -- PostgreSQL with
secret:references - Kubernetes Nodes -- OS-level k8s node config with rolling drain-and-reboot workflow
- Brown Noise Generator -- locally-built Docker image run via the
container:resource, with PulseAudio passthrough - Disk Hygiene -- Prevent disk exhaustion with journal caps, tmp aging, package cache cleanup, and Docker pruning
- Multi-Cloud Configuration -- Cloud-aware configcrates using IMDS traits across AWS, GCP, and Azure
Migration Guides
- Migration Overview -- Comparison table and guide index
- From Puppet -- Pull-based, catalog, resources, Facter
- From Ansible -- Push-to-pull shift, handlers to notify
- From Chef -- Ruby DSL to YAML, cookbooks to configcrates
- From Salt -- Both YAML, Pillar to vars, Grains to Traits
- From CFEngine -- Promise theory, classes to when:
Conventions
All examples follow these patterns:
- Configcrates live in
stacks/configcrates/ - Roles live in
stacks/roles/ - Node assignments live in
stacks/envoys/envoys.vgo - Go templates (
{{ }}) are only used incontent:attributes - OS-conditional packages use separate resources with
when:expressions - Secrets use the
secret:prefix and are resolved by the secrets provider