## Summary - Remove aliases from all zk cards to prevent them from capturing wiki-links - Convert all wiki-links from `[[filename|Title]]` to `[[Title]]` format - Replace `doc-filenames` task with `doc-titles` for duplicate title detection - Update pre-commit hook to use `doc-titles` Wiki-links now resolve to reference docs by their frontmatter title, which is more readable and maintainable than filename-based links. ## Deployment and Testing - [x] Pre-commit hooks pass (including new `doc-titles` check) - [x] Manually verified zk cards have aliases removed - [ ] Deploy docs v1.0.7 and verify wiki-links resolve correctly - [ ] Test links to reference docs (e.g., [[Grafana Alloy]], [[ArgoCD]]) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/91
1.6 KiB
1.6 KiB
| id | tags | |
|---|---|---|
| pulumi |
|
Pulumi Tailnet IaC Management Log
Pulumi manages the tail8d86e.ts.net tailnet configuration, including ACLs, tags, and DNS settings.
Architecture
Two-layer approach:
- Layer 1 (Pulumi): Tailnet-wide config - ACLs, tags, DNS (this card)
- Layer 2 (Ansible): Node-local
tailscale serveconfig - seetailscale_serverole
Service Details
- State backend: Pulumi Cloud (https://app.pulumi.com/eblume/blumeops-tailnet)
- Stack:
tail8d86e - Config directory:
pulumi/in blumeops repo - Policy file:
pulumi/policy.hujson(HuJSON with comments)
Authentication
Uses OAuth client stored in 1Password (blumeops vault):
- Client configured with scopes: acl, dns, devices, services
- Auto-applies
tag:blumeopsto IaC-managed resources
Useful Commands
# Preview changes
mise run tailnet-preview
# Apply changes
mise run tailnet-up
# View current state
mise run tailnet-preview
# Pass additional args
mise run tailnet-up -- --yes
Making ACL Changes
- Edit
pulumi/policy.hujsonin the blumeops repo - Run
mise run tailnet-previewto see what will change - Run
mise run tailnet-upto apply - Commit and push
What's Managed
Currently managed by Pulumi:
- ACL policy (
tailscale:index:Acl)
Can be added later:
- DNS nameservers (
tailscale:index:DnsNameservers) - DNS search paths (
tailscale:index:DnsSearchPaths) - Tailnet settings (
tailscale:index:TailnetSettings)
Log
Wed Jan 15 2026
- Initial setup with Pulumi + Python
- Imported existing ACL from Tailscale
- State stored in Pulumi Cloud (free tier)
- OAuth authentication via 1Password