自宅ネットワークの再構成
前回のインターネットから、自宅環境のプロビジョニングと構成管理をコード化したものです。
Proxmox 上での VM/LXC 作成は Terraform、各ホストの設定は Ansible によって管理します。
目的と設計方針
- 単一リポジトリでリソース作成(Terraform)と構成適用(Ansible)を分離して管理する
- 環境差分(ノード、VMID、ストレージなど)を変数で吸収し、再利用性を重視する
- シークレットは Ansible Vault に集約し、平文でのコミットを避ける
- ネットワーク境界(VPS / Firewall / DMZ / LAN)を意識した設計を保つ
技術スタック
- iaC: Terraform (`bpg/proxmox`)
- Configuration Management: Ansible(Role ベース)
- Virtualization: Proxmox VE(VM / LXC)
- OS / Runtime: Debian 系ゲスト, systemd
- Edge/Proxy: Nginx, HAProxy, Cloudflare, Tailscale
- Data/Backup: MariaDB, Proxmox Backup Server
- Security / Secrets: Ansible Vault
- Quality Gate: ansible-lint, pre-commit (gitleaks)
主要ワークロード
- Gitea(LXC)
- NAS(OMV + NFS/SMB)
- Proxmox Backup Server(PBS)
- VPS Reverse Proxy(Nginx / HAProxy)
- Let's Encrypt 証明書配布
- k3s クラスタ連携(構成管理対象)
アーキテクチャの要点
- Terraform
- VM/LXC をモジュール化して再利用(`modules/vm`, `modules/container`)
- ノード差分やリソース差分を `locals.tf` / variables で吸収
- ネットワーク、ストレージ、bind mount をコード化
- Ansible (`ansible/`)
- Playbook で適用順序を定義し、Role で責務分離
- `inventory` でホスト特性を管理し、`group_vars` / `host_vars` で設定を分離
- Vault によるシークレット注入を前提化
- Network Design
- Public/Edge/DMZ/LAN/Console の層構造で運用境界を明確化
実装ハイライト
- インフラ作成(Terraform)と構成適用(Ansible)を分離し、変更影響を局所化
- 役割ごとに Role を分割し、再利用性と保守性を確保
- 変数設計により、環境差分(ノード、VMID、ストレージ)へ追従しやすい構造を採用
- セキュリティを「運用手順」ではなく「設計」に組み込み(Vault + gitleaks)