vaulter 0.2.1 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +353 -8
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +80 -11
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/integrations/kubernetes.d.ts +14 -0
- package/dist/cli/commands/integrations/kubernetes.d.ts.map +1 -1
- package/dist/cli/commands/integrations/kubernetes.js +166 -56
- package/dist/cli/commands/integrations/kubernetes.js.map +1 -1
- package/dist/cli/commands/pull.d.ts.map +1 -1
- package/dist/cli/commands/pull.js +6 -4
- package/dist/cli/commands/pull.js.map +1 -1
- package/dist/cli/commands/push.d.ts.map +1 -1
- package/dist/cli/commands/push.js +6 -4
- package/dist/cli/commands/push.js.map +1 -1
- package/dist/cli/commands/set.d.ts +13 -1
- package/dist/cli/commands/set.d.ts.map +1 -1
- package/dist/cli/commands/set.js +294 -48
- package/dist/cli/commands/set.js.map +1 -1
- package/dist/cli/commands/sync.d.ts +3 -2
- package/dist/cli/commands/sync.d.ts.map +1 -1
- package/dist/cli/commands/sync.js +19 -16
- package/dist/cli/commands/sync.js.map +1 -1
- package/dist/cli/index.js +304 -135
- package/dist/cli/index.js.map +1 -1
- package/dist/client.d.ts +6 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +21 -3
- package/dist/client.js.map +1 -1
- package/dist/lib/batch-runner.d.ts +0 -1
- package/dist/lib/batch-runner.d.ts.map +1 -1
- package/dist/lib/batch-runner.js +1 -1
- package/dist/lib/batch-runner.js.map +1 -1
- package/dist/lib/config-loader.d.ts +39 -1
- package/dist/lib/config-loader.d.ts.map +1 -1
- package/dist/lib/config-loader.js +106 -6
- package/dist/lib/config-loader.js.map +1 -1
- package/dist/mcp/resources.d.ts.map +1 -1
- package/dist/mcp/resources.js +3 -2
- package/dist/mcp/resources.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +12 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +8 -13
- package/dist/mcp/tools.js.map +1 -1
- package/dist/types.d.ts +25 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -18,9 +18,11 @@ npm install -g vaulter
|
|
|
18
18
|
# Initialize project
|
|
19
19
|
vaulter init
|
|
20
20
|
|
|
21
|
-
# Set
|
|
22
|
-
vaulter set DATABASE_URL
|
|
23
|
-
|
|
21
|
+
# Set secrets (encrypted, synced to backend)
|
|
22
|
+
vaulter set DATABASE_URL="postgres://localhost/mydb" API_KEY="sk-secret-key" -e dev
|
|
23
|
+
|
|
24
|
+
# Set configs (plain text, file only in split mode)
|
|
25
|
+
vaulter set PORT:3000 LOG_LEVEL:debug -e dev
|
|
24
26
|
|
|
25
27
|
# Export to shell
|
|
26
28
|
eval $(vaulter export -e dev)
|
|
@@ -50,13 +52,41 @@ MCP server for Claude AI. Zero config for dev, production-ready.
|
|
|
50
52
|
|
|
51
53
|
---
|
|
52
54
|
|
|
55
|
+
## Table of Contents
|
|
56
|
+
|
|
57
|
+
- [Quick Start](#quick-start)
|
|
58
|
+
- [What's Inside](#whats-inside)
|
|
59
|
+
- [Highlights](#highlights)
|
|
60
|
+
- [Commands](#commands)
|
|
61
|
+
- [Configuration](#configuration)
|
|
62
|
+
- [Directory Modes](#directory-modes)
|
|
63
|
+
- [Backend URLs](#backend-urls)
|
|
64
|
+
- [Encryption](#encryption)
|
|
65
|
+
- [Running Commands](#running-commands)
|
|
66
|
+
- [Shell Scripts](#shell-scripts)
|
|
67
|
+
- [Interactive Tools](#interactive-tools)
|
|
68
|
+
- [Integrations](#integrations)
|
|
69
|
+
- [kubectl](#kubectl)
|
|
70
|
+
- [Helm & Helmfile](#helm--helmfile)
|
|
71
|
+
- [Terraform & Terragrunt](#terraform--terragrunt)
|
|
72
|
+
- [Monorepo Support](#monorepo-support)
|
|
73
|
+
- [NX Monorepo](#nx-monorepo)
|
|
74
|
+
- [Turborepo](#turborepo)
|
|
75
|
+
- [MCP Tools](#mcp-tools)
|
|
76
|
+
- [CI/CD](#cicd)
|
|
77
|
+
- [Security Best Practices](#security-best-practices)
|
|
78
|
+
- [API Usage](#api-usage)
|
|
79
|
+
- [Pre-built Binaries](#pre-built-binaries)
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
53
83
|
## What's Inside
|
|
54
84
|
|
|
55
85
|
| Category | Features |
|
|
56
86
|
|:---------|:---------|
|
|
57
87
|
| **Backends** | AWS S3, MinIO, Cloudflare R2, DigitalOcean Spaces, Backblaze B2, FileSystem, Memory |
|
|
58
|
-
| **Encryption** | AES-256-GCM via s3db.js, field-level encryption
|
|
59
|
-
| **Environments** | dev, stg, prd, sbx, dr (
|
|
88
|
+
| **Encryption** | AES-256-GCM via s3db.js, field-level encryption |
|
|
89
|
+
| **Environments** | dev, stg, prd, sbx, dr (configurable subset) |
|
|
60
90
|
| **Integrations** | Kubernetes Secret/ConfigMap, Helm values.yaml, Terraform tfvars |
|
|
61
91
|
| **Monorepo** | Service discovery, batch operations, config inheritance |
|
|
62
92
|
| **MCP Server** | Claude AI integration via Model Context Protocol |
|
|
@@ -141,7 +171,8 @@ loader({ path: '.env.local', override: true })
|
|
|
141
171
|
|:--------|:------------|:--------|
|
|
142
172
|
| `init` | Initialize project | `vaulter init` |
|
|
143
173
|
| `get <key>` | Get a variable | `vaulter get DATABASE_URL -e prd` |
|
|
144
|
-
| `set
|
|
174
|
+
| `set KEY=val ...` | Set secrets (batch) | `vaulter set KEY1=v1 KEY2=v2 -e prd` |
|
|
175
|
+
| `set KEY:val ...` | Set configs (plain) | `vaulter set PORT:3000 HOST:0.0.0.0 -e dev` |
|
|
145
176
|
| `delete <key>` | Delete a variable | `vaulter delete OLD_KEY -e dev` |
|
|
146
177
|
| `list` | List all variables | `vaulter list -e prd` |
|
|
147
178
|
| `export` | Export for shell | `eval $(vaulter export -e dev)` |
|
|
@@ -172,6 +203,33 @@ loader({ path: '.env.local', override: true })
|
|
|
172
203
|
| `services` | List monorepo services | `vaulter services` |
|
|
173
204
|
| `mcp` | Start MCP server | `vaulter mcp` |
|
|
174
205
|
|
|
206
|
+
### Set Command Syntax
|
|
207
|
+
|
|
208
|
+
HTTPie-style separators for differentiating secrets from configs:
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
# Secrets (encrypted, synced to backend)
|
|
212
|
+
vaulter set KEY=value # Single secret
|
|
213
|
+
vaulter set A=1 B=2 C=3 -e dev # Batch secrets
|
|
214
|
+
vaulter set KEY:=123 # Typed secret (number/boolean)
|
|
215
|
+
|
|
216
|
+
# Configs (plain text, file only in split mode, synced in unified mode)
|
|
217
|
+
vaulter set PORT::3000 HOST::localhost # Configs
|
|
218
|
+
|
|
219
|
+
# With metadata
|
|
220
|
+
vaulter set DB_URL=postgres://... @tag:database,sensitive @owner:backend -e prd
|
|
221
|
+
|
|
222
|
+
# Legacy syntax (still works)
|
|
223
|
+
vaulter set KEY "value" -e dev # Treated as secret
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
| Separator | Type | Backend Sync | Encryption |
|
|
227
|
+
|:----------|:-----|:-------------|:-----------|
|
|
228
|
+
| `=` | Secret | ✓ | ✓ |
|
|
229
|
+
| `:=` | Secret (typed) | ✓ | ✓ |
|
|
230
|
+
| `::` | Config | Split: ✗ / Unified: ✓ | ✗ |
|
|
231
|
+
| `@key:value` | Metadata | — | — |
|
|
232
|
+
|
|
175
233
|
## Global Options
|
|
176
234
|
|
|
177
235
|
```
|
|
@@ -227,7 +285,7 @@ Sync merges local and remote variables. Conflicts are resolved by `sync.conflict
|
|
|
227
285
|
|
|
228
286
|
```yaml
|
|
229
287
|
sync:
|
|
230
|
-
conflict: local # local | remote |
|
|
288
|
+
conflict: local # local | remote | error
|
|
231
289
|
ignore:
|
|
232
290
|
- "PUBLIC_*"
|
|
233
291
|
required:
|
|
@@ -236,9 +294,70 @@ sync:
|
|
|
236
294
|
```
|
|
237
295
|
|
|
238
296
|
Notes:
|
|
239
|
-
- `
|
|
297
|
+
- `local` (default): Local values win on conflict, remote-only keys are pulled to local
|
|
298
|
+
- `remote`: Remote values win on conflict
|
|
299
|
+
- `error`: Stop sync if any conflicts are detected
|
|
240
300
|
- When reading from stdin, sync only updates the backend (local file is not changed).
|
|
241
301
|
|
|
302
|
+
### Directory Modes
|
|
303
|
+
|
|
304
|
+
Vaulter supports two directory structures for organizing environment files:
|
|
305
|
+
|
|
306
|
+
#### Unified Mode (Default)
|
|
307
|
+
|
|
308
|
+
All environment files in a single directory:
|
|
309
|
+
|
|
310
|
+
```
|
|
311
|
+
my-project/
|
|
312
|
+
├── .vaulter/
|
|
313
|
+
│ ├── config.yaml
|
|
314
|
+
│ └── environments/
|
|
315
|
+
│ ├── dev.env # All vars (secrets + configs)
|
|
316
|
+
│ ├── stg.env
|
|
317
|
+
│ └── prd.env
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
#### Split Mode
|
|
321
|
+
|
|
322
|
+
Separate directories for configs (committable) and secrets (gitignored):
|
|
323
|
+
|
|
324
|
+
```
|
|
325
|
+
my-project/
|
|
326
|
+
├── .vaulter/
|
|
327
|
+
│ └── config.yaml
|
|
328
|
+
└── deploy/
|
|
329
|
+
├── configs/ # ✅ Committable (non-sensitive)
|
|
330
|
+
│ ├── dev.env # NODE_ENV, PORT, LOG_LEVEL
|
|
331
|
+
│ ├── stg.env
|
|
332
|
+
│ └── prd.env
|
|
333
|
+
└── secrets/ # ❌ Gitignored (sensitive)
|
|
334
|
+
├── dev.env # DATABASE_URL, JWT_SECRET
|
|
335
|
+
├── stg.env
|
|
336
|
+
└── prd.env
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
Configure split mode in `config.yaml`:
|
|
340
|
+
|
|
341
|
+
```yaml
|
|
342
|
+
directories:
|
|
343
|
+
mode: split # "unified" (default) or "split"
|
|
344
|
+
configs: deploy/configs # Non-sensitive vars (committable)
|
|
345
|
+
secrets: deploy/secrets # Sensitive vars (gitignored)
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
Tip: scaffold split mode with `vaulter init --split`.
|
|
349
|
+
|
|
350
|
+
**Behavior in split mode:**
|
|
351
|
+
- `sync`, `pull`, `push` operate on the **secrets** directory
|
|
352
|
+
- `k8s:secret` reads from local **secrets** file (no backend fetch)
|
|
353
|
+
- `k8s:configmap` reads from local **configs** file (no backend fetch)
|
|
354
|
+
- Configs are managed via git, secrets via vaulter
|
|
355
|
+
|
|
356
|
+
**When to use split mode:**
|
|
357
|
+
- Monorepos with deploy directories per service
|
|
358
|
+
- Teams that want configs reviewed in PRs
|
|
359
|
+
- Environments where non-sensitive configs should be in git
|
|
360
|
+
|
|
242
361
|
### Hooks
|
|
243
362
|
|
|
244
363
|
```yaml
|
|
@@ -322,6 +441,231 @@ security:
|
|
|
322
441
|
|
|
323
442
|
`auto_encrypt.patterns` is used to classify secrets for integrations (K8s/Helm).
|
|
324
443
|
|
|
444
|
+
## Running Commands
|
|
445
|
+
|
|
446
|
+
Load environment variables into any command using `eval $(vaulter export)`.
|
|
447
|
+
|
|
448
|
+
### Shell Scripts
|
|
449
|
+
|
|
450
|
+
```bash
|
|
451
|
+
# Run a script with environment variables
|
|
452
|
+
eval $(vaulter export -e dev) ./myscript.sh
|
|
453
|
+
|
|
454
|
+
# Or in two steps
|
|
455
|
+
eval $(vaulter export -e dev)
|
|
456
|
+
./myscript.sh
|
|
457
|
+
|
|
458
|
+
# One-liner with subshell (vars don't persist after)
|
|
459
|
+
(eval $(vaulter export -e prd) && ./deploy.sh)
|
|
460
|
+
|
|
461
|
+
# Using env command (cleaner syntax)
|
|
462
|
+
env $(vaulter export -e dev --format=shell) ./myscript.sh
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
### Interactive Tools
|
|
466
|
+
|
|
467
|
+
```bash
|
|
468
|
+
# k9s with production credentials
|
|
469
|
+
eval $(vaulter export -e prd) k9s
|
|
470
|
+
|
|
471
|
+
# psql with database URL
|
|
472
|
+
eval $(vaulter export -e dev) psql $DATABASE_URL
|
|
473
|
+
|
|
474
|
+
# redis-cli
|
|
475
|
+
eval $(vaulter export -e dev) redis-cli -u $REDIS_URL
|
|
476
|
+
|
|
477
|
+
# AWS CLI with credentials
|
|
478
|
+
eval $(vaulter export -e prd) aws s3 ls
|
|
479
|
+
|
|
480
|
+
# Docker run with env vars
|
|
481
|
+
eval $(vaulter export -e dev) docker run --env-file <(vaulter export -e dev --format=env) myapp
|
|
482
|
+
|
|
483
|
+
# Any Node.js app
|
|
484
|
+
eval $(vaulter export -e dev) node server.js
|
|
485
|
+
|
|
486
|
+
# Python app
|
|
487
|
+
eval $(vaulter export -e dev) python app.py
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
### Shell Alias (Recommended)
|
|
491
|
+
|
|
492
|
+
Add to your `~/.bashrc` or `~/.zshrc`:
|
|
493
|
+
|
|
494
|
+
```bash
|
|
495
|
+
# Quick alias for common environments
|
|
496
|
+
alias vdev='eval $(vaulter export -e dev)'
|
|
497
|
+
alias vstg='eval $(vaulter export -e stg)'
|
|
498
|
+
alias vprd='eval $(vaulter export -e prd)'
|
|
499
|
+
|
|
500
|
+
# Usage
|
|
501
|
+
vdev ./myscript.sh
|
|
502
|
+
vprd k9s
|
|
503
|
+
vstg psql $DATABASE_URL
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
### One-liner Pattern
|
|
507
|
+
|
|
508
|
+
```bash
|
|
509
|
+
# Pattern: eval $(vaulter export -e ENV) COMMAND
|
|
510
|
+
eval $(vaulter export -e dev) npm run dev
|
|
511
|
+
eval $(vaulter export -e prd) kubectl get pods
|
|
512
|
+
eval $(vaulter export -e stg) terraform plan
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
## Integrations
|
|
516
|
+
|
|
517
|
+
### kubectl
|
|
518
|
+
|
|
519
|
+
```bash
|
|
520
|
+
# Create Secret from vaulter
|
|
521
|
+
vaulter k8s:secret -e prd | kubectl apply -f -
|
|
522
|
+
|
|
523
|
+
# Create ConfigMap (non-secret vars)
|
|
524
|
+
vaulter k8s:configmap -e prd | kubectl apply -f -
|
|
525
|
+
|
|
526
|
+
# With custom name and namespace
|
|
527
|
+
vaulter k8s:secret -e prd -n my-namespace --name my-app-secrets | kubectl apply -f -
|
|
528
|
+
|
|
529
|
+
# Dry-run to see YAML
|
|
530
|
+
vaulter k8s:secret -e prd --dry-run
|
|
531
|
+
|
|
532
|
+
# Create secret from export (alternative)
|
|
533
|
+
vaulter export -e prd --format=env | \
|
|
534
|
+
kubectl create secret generic myapp --from-env-file=/dev/stdin --dry-run=client -o yaml | \
|
|
535
|
+
kubectl apply -f -
|
|
536
|
+
|
|
537
|
+
# Run kubectl with vaulter vars
|
|
538
|
+
eval $(vaulter export -e prd) kubectl exec -it deploy/myapp -- env | grep DATABASE
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
### Helm & Helmfile
|
|
542
|
+
|
|
543
|
+
#### Helm
|
|
544
|
+
|
|
545
|
+
```bash
|
|
546
|
+
# Generate values.yaml and pipe to helm
|
|
547
|
+
vaulter helm:values -e prd | helm upgrade myapp ./chart -f -
|
|
548
|
+
|
|
549
|
+
# Save values to file
|
|
550
|
+
vaulter helm:values -e prd > values.prd.yaml
|
|
551
|
+
helm upgrade myapp ./chart -f values.prd.yaml
|
|
552
|
+
|
|
553
|
+
# With secrets separated (uses auto_encrypt.patterns)
|
|
554
|
+
vaulter helm:values -e prd --secrets # Only secret vars
|
|
555
|
+
vaulter helm:values -e prd --config # Only non-secret vars
|
|
556
|
+
|
|
557
|
+
# Install with inline values
|
|
558
|
+
helm install myapp ./chart \
|
|
559
|
+
--set-string DATABASE_URL="$(vaulter get DATABASE_URL -e prd)" \
|
|
560
|
+
--set-string API_KEY="$(vaulter get API_KEY -e prd)"
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
#### Helmfile
|
|
564
|
+
|
|
565
|
+
```yaml
|
|
566
|
+
# helmfile.yaml
|
|
567
|
+
repositories:
|
|
568
|
+
- name: bitnami
|
|
569
|
+
url: https://charts.bitnami.com/bitnami
|
|
570
|
+
|
|
571
|
+
releases:
|
|
572
|
+
- name: myapp
|
|
573
|
+
namespace: production
|
|
574
|
+
chart: ./charts/myapp
|
|
575
|
+
values:
|
|
576
|
+
- values.yaml
|
|
577
|
+
- values.prd.yaml # Generated by: vaulter helm:values -e prd > values.prd.yaml
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
```bash
|
|
581
|
+
# Generate values before helmfile sync
|
|
582
|
+
vaulter helm:values -e prd > values.prd.yaml
|
|
583
|
+
helmfile sync
|
|
584
|
+
|
|
585
|
+
# Or use process substitution
|
|
586
|
+
helmfile sync --values <(vaulter helm:values -e prd)
|
|
587
|
+
|
|
588
|
+
# With environment variables for helmfile
|
|
589
|
+
eval $(vaulter export -e prd) helmfile apply
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
### Terraform & Terragrunt
|
|
593
|
+
|
|
594
|
+
#### Terraform
|
|
595
|
+
|
|
596
|
+
```bash
|
|
597
|
+
# Generate .tfvars file
|
|
598
|
+
vaulter tf:vars -e prd > terraform.tfvars
|
|
599
|
+
terraform plan
|
|
600
|
+
|
|
601
|
+
# Generate JSON format
|
|
602
|
+
vaulter tf:json -e prd > terraform.tfvars.json
|
|
603
|
+
terraform plan -var-file=terraform.tfvars.json
|
|
604
|
+
|
|
605
|
+
# Pass vars inline
|
|
606
|
+
terraform plan \
|
|
607
|
+
-var="database_url=$(vaulter get DATABASE_URL -e prd)" \
|
|
608
|
+
-var="api_key=$(vaulter get API_KEY -e prd)"
|
|
609
|
+
|
|
610
|
+
# Use TF_VAR_* environment variables
|
|
611
|
+
eval $(vaulter export -e prd --format=tfvars)
|
|
612
|
+
terraform plan
|
|
613
|
+
|
|
614
|
+
# Pipe directly (requires bash process substitution)
|
|
615
|
+
terraform plan -var-file=<(vaulter tf:vars -e prd)
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
#### Terragrunt
|
|
619
|
+
|
|
620
|
+
```bash
|
|
621
|
+
# Set env vars for terragrunt
|
|
622
|
+
eval $(vaulter export -e prd) terragrunt plan
|
|
623
|
+
|
|
624
|
+
# Generate inputs file
|
|
625
|
+
vaulter tf:vars -e prd > inputs.tfvars
|
|
626
|
+
terragrunt plan --terragrunt-config terragrunt.hcl
|
|
627
|
+
|
|
628
|
+
# In terragrunt.hcl - use environment variables
|
|
629
|
+
# terragrunt.hcl
|
|
630
|
+
inputs = {
|
|
631
|
+
database_url = get_env("DATABASE_URL", "")
|
|
632
|
+
api_key = get_env("API_KEY", "")
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
# Then run:
|
|
636
|
+
eval $(vaulter export -e prd) terragrunt apply
|
|
637
|
+
|
|
638
|
+
# Or with inputs file
|
|
639
|
+
# terragrunt.hcl
|
|
640
|
+
terraform {
|
|
641
|
+
extra_arguments "custom_vars" {
|
|
642
|
+
commands = get_terraform_commands_that_need_vars()
|
|
643
|
+
arguments = [
|
|
644
|
+
"-var-file=inputs.tfvars"
|
|
645
|
+
]
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
```
|
|
649
|
+
|
|
650
|
+
```bash
|
|
651
|
+
# Full workflow with terragrunt
|
|
652
|
+
vaulter pull -e prd # Get latest vars
|
|
653
|
+
vaulter tf:vars -e prd > inputs.tfvars # Generate tfvars
|
|
654
|
+
terragrunt plan # Plan with vars
|
|
655
|
+
terragrunt apply # Apply
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
### Integration Summary
|
|
659
|
+
|
|
660
|
+
| Tool | Command |
|
|
661
|
+
|:-----|:--------|
|
|
662
|
+
| **kubectl** | `vaulter k8s:secret -e prd \| kubectl apply -f -` |
|
|
663
|
+
| **helm** | `vaulter helm:values -e prd \| helm upgrade app ./chart -f -` |
|
|
664
|
+
| **helmfile** | `vaulter helm:values -e prd > values.prd.yaml && helmfile sync` |
|
|
665
|
+
| **terraform** | `vaulter tf:vars -e prd > terraform.tfvars && terraform plan` |
|
|
666
|
+
| **terragrunt** | `eval $(vaulter export -e prd) terragrunt apply` |
|
|
667
|
+
| **any command** | `eval $(vaulter export -e ENV) COMMAND` |
|
|
668
|
+
|
|
325
669
|
## Monorepo Support
|
|
326
670
|
|
|
327
671
|
Vaulter auto-discovers services with `.vaulter/` directories and supports config inheritance.
|
|
@@ -490,6 +834,7 @@ deploy:
|
|
|
490
834
|
.vaulter/.key
|
|
491
835
|
.vaulter/config.local.yaml
|
|
492
836
|
**/config.local.yaml
|
|
837
|
+
deploy/secrets/
|
|
493
838
|
.env
|
|
494
839
|
.env.*
|
|
495
840
|
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAG5D,UAAU,WAAW;IACnB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;CACpB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAG5D,UAAU,WAAW;IACnB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;CACpB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkKjE"}
|
|
@@ -11,6 +11,12 @@ import { createDefaultConfig, configExists, findConfigDir } from '../../lib/conf
|
|
|
11
11
|
*/
|
|
12
12
|
export async function runInit(context) {
|
|
13
13
|
const { args, verbose, dryRun, jsonOutput } = context;
|
|
14
|
+
const splitMode = args.split || false;
|
|
15
|
+
const splitDirectories = {
|
|
16
|
+
mode: 'split',
|
|
17
|
+
configs: 'deploy/configs',
|
|
18
|
+
secrets: 'deploy/secrets'
|
|
19
|
+
};
|
|
14
20
|
// Check if already initialized
|
|
15
21
|
if (configExists()) {
|
|
16
22
|
const existingDir = findConfigDir();
|
|
@@ -39,18 +45,25 @@ export async function runInit(context) {
|
|
|
39
45
|
action: 'init',
|
|
40
46
|
project: projectName,
|
|
41
47
|
configDir,
|
|
48
|
+
splitMode,
|
|
42
49
|
dryRun: true
|
|
43
50
|
}));
|
|
44
51
|
}
|
|
45
52
|
else {
|
|
46
53
|
console.log('Dry run - would create:');
|
|
47
54
|
console.log(` ${configDir}/config.yaml`);
|
|
48
|
-
|
|
55
|
+
if (splitMode) {
|
|
56
|
+
console.log(` ${splitDirectories.configs}/`);
|
|
57
|
+
console.log(` ${splitDirectories.secrets}/`);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
console.log(` ${configDir}/environments/`);
|
|
61
|
+
}
|
|
49
62
|
}
|
|
50
63
|
return;
|
|
51
64
|
}
|
|
52
65
|
// Create configuration
|
|
53
|
-
createDefaultConfig(configDir, projectName);
|
|
66
|
+
createDefaultConfig(configDir, projectName, splitMode ? { directories: splitDirectories } : {});
|
|
54
67
|
// Create .gitignore for sensitive files
|
|
55
68
|
const gitignorePath = path.join(configDir, '.gitignore');
|
|
56
69
|
if (!fs.existsSync(gitignorePath)) {
|
|
@@ -61,15 +74,51 @@ export async function runInit(context) {
|
|
|
61
74
|
`);
|
|
62
75
|
}
|
|
63
76
|
// Create placeholder environment files
|
|
64
|
-
const envDir = path.join(configDir, 'environments');
|
|
65
77
|
const environments = ['dev', 'stg', 'prd', 'sbx', 'dr'];
|
|
66
|
-
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
78
|
+
if (splitMode) {
|
|
79
|
+
const baseDir = path.dirname(configDir);
|
|
80
|
+
const configsDir = path.join(baseDir, splitDirectories.configs);
|
|
81
|
+
const secretsDir = path.join(baseDir, splitDirectories.secrets);
|
|
82
|
+
if (!fs.existsSync(configsDir)) {
|
|
83
|
+
fs.mkdirSync(configsDir, { recursive: true });
|
|
84
|
+
}
|
|
85
|
+
if (!fs.existsSync(secretsDir)) {
|
|
86
|
+
fs.mkdirSync(secretsDir, { recursive: true });
|
|
87
|
+
}
|
|
88
|
+
const secretsGitignore = path.join(secretsDir, '.gitignore');
|
|
89
|
+
if (!fs.existsSync(secretsGitignore)) {
|
|
90
|
+
fs.writeFileSync(secretsGitignore, `# Vaulter secrets (do not commit)
|
|
91
|
+
*
|
|
92
|
+
!.gitignore
|
|
93
|
+
`);
|
|
94
|
+
}
|
|
95
|
+
for (const env of environments) {
|
|
96
|
+
const configsFile = path.join(configsDir, `${env}.env`);
|
|
97
|
+
if (!fs.existsSync(configsFile)) {
|
|
98
|
+
fs.writeFileSync(configsFile, `# ${env.toUpperCase()} Config Variables
|
|
99
|
+
# Non-sensitive config values for ${env}
|
|
100
|
+
# Example: NODE_ENV=${env}
|
|
101
|
+
`);
|
|
102
|
+
}
|
|
103
|
+
const secretsFile = path.join(secretsDir, `${env}.env`);
|
|
104
|
+
if (!fs.existsSync(secretsFile)) {
|
|
105
|
+
fs.writeFileSync(secretsFile, `# ${env.toUpperCase()} Secret Variables
|
|
106
|
+
# Sensitive values for ${env} (gitignored)
|
|
107
|
+
# Example: DATABASE_URL=postgres://localhost/${env}_db
|
|
108
|
+
`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
const envDir = path.join(configDir, 'environments');
|
|
114
|
+
for (const env of environments) {
|
|
115
|
+
const envFile = path.join(envDir, `${env}.env`);
|
|
116
|
+
if (!fs.existsSync(envFile)) {
|
|
117
|
+
fs.writeFileSync(envFile, `# ${env.toUpperCase()} Environment Variables
|
|
70
118
|
# Add your ${env} environment variables here
|
|
71
119
|
# Example: DATABASE_URL=postgres://localhost/${env}_db
|
|
72
120
|
`);
|
|
121
|
+
}
|
|
73
122
|
}
|
|
74
123
|
}
|
|
75
124
|
if (jsonOutput) {
|
|
@@ -77,22 +126,42 @@ export async function runInit(context) {
|
|
|
77
126
|
success: true,
|
|
78
127
|
project: projectName,
|
|
79
128
|
configDir,
|
|
129
|
+
splitMode,
|
|
80
130
|
files: [
|
|
81
131
|
'config.yaml',
|
|
82
132
|
'.gitignore',
|
|
83
|
-
...
|
|
133
|
+
...(splitMode
|
|
134
|
+
? [
|
|
135
|
+
`${splitDirectories.secrets}/.gitignore`,
|
|
136
|
+
...environments.map(e => `${splitDirectories.configs}/${e}.env`),
|
|
137
|
+
...environments.map(e => `${splitDirectories.secrets}/${e}.env`)
|
|
138
|
+
]
|
|
139
|
+
: environments.map(e => `environments/${e}.env`))
|
|
84
140
|
]
|
|
85
141
|
}));
|
|
86
142
|
}
|
|
87
143
|
else {
|
|
88
144
|
console.log(`✓ Initialized vaulter for project: ${projectName}`);
|
|
89
145
|
console.log(` Config: ${configDir}/config.yaml`);
|
|
90
|
-
|
|
146
|
+
if (splitMode) {
|
|
147
|
+
console.log(` Configs: ${splitDirectories.configs}/`);
|
|
148
|
+
console.log(` Secrets: ${splitDirectories.secrets}/`);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
console.log(` Environments: ${path.join(configDir, 'environments')}/`);
|
|
152
|
+
}
|
|
91
153
|
console.log('');
|
|
92
154
|
console.log('Next steps:');
|
|
93
155
|
console.log(' 1. Edit .vaulter/config.yaml to configure your backend');
|
|
94
|
-
|
|
95
|
-
|
|
156
|
+
if (splitMode) {
|
|
157
|
+
console.log(' 2. Add non-sensitive vars to deploy/configs/*.env');
|
|
158
|
+
console.log(' 3. Add secrets to deploy/secrets/*.env');
|
|
159
|
+
console.log(' 4. Run "vaulter sync -e dev" to sync with backend');
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
console.log(' 2. Add environment variables to .vaulter/environments/*.env');
|
|
163
|
+
console.log(' 3. Run "vaulter sync -e dev" to sync with backend');
|
|
164
|
+
}
|
|
96
165
|
}
|
|
97
166
|
}
|
|
98
167
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAW7F;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAoB;IAChD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
* Vaulter CLI - Kubernetes Integration Commands
|
|
3
3
|
*
|
|
4
4
|
* Generate Kubernetes Secret and ConfigMap YAML
|
|
5
|
+
*
|
|
6
|
+
* Supports two modes:
|
|
7
|
+
* - Backend mode (default): Fetch variables from backend storage
|
|
8
|
+
* - Local mode (-f/--file): Read variables from local .env file
|
|
9
|
+
*
|
|
10
|
+
* In split mode (directories.mode=split):
|
|
11
|
+
* - k8s:secret can read from deploy/secrets/<env>.env
|
|
12
|
+
* - k8s:configmap can read from deploy/configs/<env>.env
|
|
5
13
|
*/
|
|
6
14
|
import type { CLIArgs, VaulterConfig, Environment } from '../../../types.js';
|
|
7
15
|
interface K8sContext {
|
|
@@ -15,10 +23,16 @@ interface K8sContext {
|
|
|
15
23
|
}
|
|
16
24
|
/**
|
|
17
25
|
* Generate Kubernetes Secret YAML
|
|
26
|
+
*
|
|
27
|
+
* In split mode (directories.mode=split), reads from local secrets file.
|
|
28
|
+
* Otherwise, fetches from backend storage.
|
|
18
29
|
*/
|
|
19
30
|
export declare function runK8sSecret(context: K8sContext): Promise<void>;
|
|
20
31
|
/**
|
|
21
32
|
* Generate Kubernetes ConfigMap YAML
|
|
33
|
+
*
|
|
34
|
+
* In split mode (directories.mode=split), reads from local configs file.
|
|
35
|
+
* Otherwise, fetches from backend and filters out secrets.
|
|
22
36
|
*/
|
|
23
37
|
export declare function runK8sConfigMap(context: K8sContext): Promise<void>;
|
|
24
38
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kubernetes.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/integrations/kubernetes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"kubernetes.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/integrations/kubernetes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAW5E,UAAU,UAAU;IAClB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,WAAW,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;CACpB;AA0ED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyFrE;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAgGxE"}
|