blumeops/mise-tasks
Erich Blume 3f4e40f3ae Add Pulumi for tailnet IaC management (#15)
## Summary
- Manage tail8d86e.ts.net ACLs, tags, and DNS via Pulumi + Python
- State stored in Pulumi Cloud (free tier) to avoid circular dependency
- OAuth authentication via 1Password for secure credential management
- New mise tasks: `tailnet-preview`, `tailnet-up`

## Architecture
Two-layer approach:
- **Layer 1 (Pulumi)**: Tailnet-wide config (ACLs, tags, DNS)
- **Layer 2 (Ansible)**: Node-local `tailscale serve` config (unchanged)

## Test plan
- [x] Exported current ACL from Tailscale API
- [x] Imported existing ACL into Pulumi state
- [x] Verified `mise run tailnet-preview` shows no changes
- [x] Verified `mise run tailnet-up` applies successfully

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: https://forge.tail8d86e.ts.net/eblume/blumeops/pulls/15
2026-01-15 20:55:25 -08:00
..
blumeops-tasks Add blumeops-tasks mise task for Todoist integration (#14) 2026-01-15 18:03:19 -08:00
indri-services-check Add Grafana Alloy and Loki for unified observability (#11) 2026-01-15 12:24:13 -08:00
provision-indri Set MISE_TASK_OUTPUT=interleave in provision-indri 2026-01-14 14:15:11 -08:00
tailnet-preview Add Pulumi for tailnet IaC management (#15) 2026-01-15 20:55:25 -08:00
tailnet-up Add Pulumi for tailnet IaC management (#15) 2026-01-15 20:55:25 -08:00
zk-docs Add zk-docs mise task for zettelkasten documentation (#10) 2026-01-15 11:25:02 -08:00