fix photos
This commit is contained in:
parent
4d376c353f
commit
c959b4581c
2 changed files with 144 additions and 0 deletions
140
CLAUDE.md
Normal file
140
CLAUDE.md
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Repository Overview
|
||||
|
||||
This is a multi-environment infrastructure-as-code repository managing:
|
||||
- **Ansible**: Configuration management for servers across multiple environments (VNTX, home, app servers)
|
||||
- **Terraform**: DNS infrastructure management across DNSimple, Porkbun, and PowerDNS
|
||||
- **Kubernetes**: K3s cluster deployments on Proxmox with Flatcar/Debian
|
||||
- **Home Lab**: K3s configurations with Tailscale integration
|
||||
|
||||
## Common Commands
|
||||
|
||||
### Ansible Operations
|
||||
```bash
|
||||
# Run main playbook
|
||||
cd ansible && ./run.sh
|
||||
|
||||
# Bootstrap new host
|
||||
make bootstrap-init HOSTNAME=hostname ANSIBLE_HOST=ip_address
|
||||
|
||||
# Run specific playbook
|
||||
ansible-playbook general.yml
|
||||
|
||||
# Run with specific tags
|
||||
ansible-playbook -t caddy general.yml
|
||||
|
||||
# Gather facts from all hosts
|
||||
make facts
|
||||
```
|
||||
|
||||
### Terraform Operations
|
||||
```bash
|
||||
cd terraform
|
||||
terraform init
|
||||
terraform plan
|
||||
terraform apply
|
||||
|
||||
# Format terraform files before committing
|
||||
terraform fmt
|
||||
```
|
||||
|
||||
### K3s Cluster Deployment (VNTX)
|
||||
```bash
|
||||
cd clusters/vntx
|
||||
export TF_VAR_proxmox_password="your-password"
|
||||
./deploy.sh
|
||||
|
||||
# Manual steps if needed:
|
||||
cd terraform && tofu apply
|
||||
cd ../ansible && ansible-playbook -i inventory.yml k3s-install.yml
|
||||
export KUBECONFIG=./kubeconfig
|
||||
kubectl get nodes
|
||||
```
|
||||
|
||||
## Architecture
|
||||
|
||||
### Directory Structure
|
||||
- `ansible/` - Ansible playbooks and roles for server configuration
|
||||
- `roles/` - Reusable roles (base, caddy, docker, k3s, resolvers, etc.)
|
||||
- `group_vars/` - Group-specific variables
|
||||
- `host_vars/` - Host-specific variables
|
||||
- Main playbooks: `playbook.yml`, `general.yml`, `bootstrap.yml`
|
||||
|
||||
- `terraform/` - DNS infrastructure management
|
||||
- Manages domains: w5isp.com, vntx.net/org, manero.org, mcintire.me, gridmap.org
|
||||
- Providers: DNSimple, Porkbun, PowerDNS (reverse DNS)
|
||||
|
||||
- `clusters/vntx/` - K3s cluster on Proxmox
|
||||
- `terraform/` - VM provisioning on Proxmox
|
||||
- `ansible/` - K3s installation and configuration
|
||||
- `infrastructure/` - Services like Icinga2, FreeRADIUS, Unbound
|
||||
- `system/` - Core services: MetalLB, Longhorn, cert-manager
|
||||
|
||||
- `home/` - Home lab K3s configurations
|
||||
- `k3s/` - K3s service definitions with Tailscale integration
|
||||
- `cluster/` - Application deployments (Forgejo, Node-RED, etc.)
|
||||
|
||||
### Key Infrastructure Services
|
||||
|
||||
**Monitoring**: Icinga2 with MariaDB backend
|
||||
**DNS**: Unbound resolvers, PowerDNS for reverse zones
|
||||
**VPN**: Tailscale integration across environments
|
||||
**Web Proxy**: Caddy for reverse proxy and SSL termination
|
||||
**Storage**: Longhorn distributed storage for K3s
|
||||
**Load Balancing**: MetalLB for bare-metal K3s
|
||||
|
||||
### Security Notes
|
||||
- Ansible user (UID 10001) with passwordless sudo
|
||||
- SSH keys fetched from GitHub for authentication
|
||||
- Tailscale requires `TAILSCALE_KEY` environment variable
|
||||
- Terraform credentials should use environment variables (TF_VAR_*)
|
||||
|
||||
## Development Workflow
|
||||
|
||||
### Adding New Hosts
|
||||
1. Add host to `ansible/hosts` inventory
|
||||
2. Create host_vars file if needed
|
||||
3. Run bootstrap: `make bootstrap-init HOSTNAME=x ANSIBLE_HOST=y`
|
||||
4. Apply configuration: `ansible-playbook -l hostname general.yml`
|
||||
|
||||
### DNS Changes
|
||||
1. Edit appropriate `terraform/dns_*.tf` file
|
||||
2. Run `terraform fmt` to format
|
||||
3. Review with `terraform plan`
|
||||
4. Apply with `terraform apply`
|
||||
|
||||
### K3s Service Deployment
|
||||
1. Create namespace if needed
|
||||
2. Deploy storage (PVC) if stateful
|
||||
3. Create ConfigMaps/Secrets
|
||||
4. Deploy application
|
||||
5. Configure Service/Ingress for access
|
||||
|
||||
## Testing
|
||||
|
||||
### Ansible
|
||||
```bash
|
||||
# Syntax check
|
||||
ansible-playbook --syntax-check playbook.yml
|
||||
|
||||
# Dry run
|
||||
ansible-playbook --check playbook.yml
|
||||
|
||||
# Test on specific host
|
||||
ansible-playbook -l hostname playbook.yml
|
||||
```
|
||||
|
||||
### Terraform
|
||||
```bash
|
||||
terraform validate
|
||||
terraform plan
|
||||
```
|
||||
|
||||
### Kubernetes
|
||||
```bash
|
||||
kubectl apply --dry-run=client -f manifest.yaml
|
||||
kubectl diff -f manifest.yaml
|
||||
```
|
||||
|
|
@ -19,3 +19,7 @@
|
|||
truck.w5isp.com {
|
||||
reverse_proxy http://100.105.74.2
|
||||
}
|
||||
|
||||
photos.w5isp.com {
|
||||
reverse_proxy http://10.0.16.1:2283
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue