585 lines
12 KiB
Markdown
585 lines
12 KiB
Markdown
# Claude Code Integration for ORION Infrastructure
|
|
|
|
**Optimizing AI-Assisted Infrastructure Development**
|
|
|
|
---
|
|
|
|
## 🎯 Overview
|
|
|
|
This document describes how to use **Claude Code** effectively with the ORION infrastructure project, including configuration, security best practices, and recommended workflows.
|
|
|
|
---
|
|
|
|
## 📋 Table of Contents
|
|
|
|
1. [Project Configuration](#project-configuration)
|
|
2. [Security Considerations](#security-considerations)
|
|
3. [Network Configuration](#network-configuration)
|
|
4. [Third-Party Integrations](#third-party-integrations)
|
|
5. [Workflows & Best Practices](#workflows--best-practices)
|
|
6. [MCP Integration Opportunities](#mcp-integration-opportunities)
|
|
7. [Troubleshooting](#troubleshooting)
|
|
|
|
---
|
|
|
|
## 🔧 Project Configuration
|
|
|
|
### Settings File
|
|
|
|
The ORION project includes a `.claude/settings.json` configuration optimized for infrastructure development:
|
|
|
|
**Key Features:**
|
|
- ✅ **Infrastructure-aware permissions** - Pre-approved patterns for Terraform, Ansible, kubectl
|
|
- ✅ **Credential protection** - Blocks access to `.pem`, `.key`, `terraform.tfvars`, etc.
|
|
- ✅ **Git status hook** - Shows working tree status before each action
|
|
- ✅ **Sandbox enabled** - Secure command execution
|
|
- ✅ **90-day retention** - Extended chat history for complex infrastructure work
|
|
|
|
### Configuration Location
|
|
|
|
```
|
|
.claude/
|
|
├── settings.json # Shared team settings (committed to git)
|
|
└── settings.local.json # Your personal overrides (gitignored)
|
|
```
|
|
|
|
### Customizing Settings
|
|
|
|
Create `.claude/settings.local.json` for personal preferences:
|
|
|
|
```json
|
|
{
|
|
"model": "opus",
|
|
"statusLine": "🏗️ ORION | {user}@{model}",
|
|
"permissions": {
|
|
"defaultMode": "allow"
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 🔐 Security Considerations
|
|
|
|
### Credential Protection
|
|
|
|
The project configuration **blocks** Claude Code from accessing:
|
|
|
|
- Private keys: `*.pem`, `*.key`, `id_rsa*`, `*.pfx`
|
|
- Terraform secrets: `terraform.tfvars`
|
|
- Environment files: `.env`, `credentials*`
|
|
|
|
**Best Practice**: Always use `terraform.tfvars.example` for documentation, never commit actual secrets.
|
|
|
|
### Dangerous Operations
|
|
|
|
These require manual approval:
|
|
|
|
```bash
|
|
# Network operations
|
|
ssh, scp, rsync
|
|
|
|
# Destructive commands
|
|
rm -rf, terraform destroy
|
|
|
|
# Disk operations (blocked entirely)
|
|
dd, mkfs, fdisk
|
|
```
|
|
|
|
### Sandbox Mode
|
|
|
|
Enabled by default for security:
|
|
|
|
```json
|
|
{
|
|
"sandbox": {
|
|
"enabled": true,
|
|
"network": {
|
|
"allowLocalBinding": true,
|
|
"allowUnixSockets": ["/var/run/docker.sock"]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**What this means:**
|
|
- ✅ Bash commands run in isolated environment
|
|
- ✅ Network access controlled
|
|
- ✅ Docker socket accessible for container operations
|
|
- ✅ Prevents accidental system-wide changes
|
|
|
|
---
|
|
|
|
## 🌐 Network Configuration
|
|
|
|
### Corporate Proxy Setup
|
|
|
|
If deploying from behind a corporate firewall:
|
|
|
|
**Option 1: Environment Variables**
|
|
|
|
```bash
|
|
export HTTPS_PROXY="https://proxy.example.com:8080"
|
|
export NO_PROXY="localhost,127.0.0.1,192.168.*"
|
|
```
|
|
|
|
**Option 2: Settings File**
|
|
|
|
Add to `.claude/settings.local.json`:
|
|
|
|
```json
|
|
{
|
|
"env": {
|
|
"HTTPS_PROXY": "https://proxy.example.com:8080",
|
|
"NO_PROXY": "localhost,127.0.0.1,192.168.*"
|
|
}
|
|
}
|
|
```
|
|
|
|
### Custom SSL Certificates
|
|
|
|
For self-signed certificates or corporate CA:
|
|
|
|
```bash
|
|
export NODE_EXTRA_CA_CERTS="/path/to/corporate-ca.pem"
|
|
```
|
|
|
|
### Mutual TLS (mTLS)
|
|
|
|
For enterprises requiring client certificates:
|
|
|
|
```bash
|
|
export CLAUDE_CODE_CLIENT_CERT="/path/to/client.crt"
|
|
export CLAUDE_CODE_CLIENT_KEY="/path/to/client.key"
|
|
export CLAUDE_CODE_CLIENT_KEY_PASSPHRASE="your-passphrase"
|
|
```
|
|
|
|
### Firewall Allowlist
|
|
|
|
Ensure these domains are accessible:
|
|
|
|
```
|
|
api.anthropic.com # Claude API
|
|
claude.ai # Safeguards
|
|
statsig.anthropic.com # Telemetry (optional)
|
|
sentry.io # Error reporting (optional)
|
|
```
|
|
|
|
**Disable telemetry** if required:
|
|
|
|
```json
|
|
{
|
|
"env": {
|
|
"DISABLE_TELEMETRY": "1",
|
|
"DISABLE_ERROR_REPORTING": "1"
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 🔌 Third-Party Integrations
|
|
|
|
### Cloud Provider Options
|
|
|
|
Claude Code can route requests through enterprise infrastructure:
|
|
|
|
#### AWS Bedrock
|
|
|
|
```bash
|
|
export CLAUDE_CODE_USE_BEDROCK=1
|
|
export AWS_REGION="us-west-2"
|
|
export AWS_ACCESS_KEY_ID="your-key"
|
|
export AWS_SECRET_ACCESS_KEY="your-secret"
|
|
```
|
|
|
|
**Use case**: Organizations with AWS Enterprise Support, AWS billing integration
|
|
|
|
#### Google Vertex AI
|
|
|
|
```bash
|
|
export CLAUDE_CODE_USE_VERTEX=1
|
|
export VERTEX_PROJECT_ID="your-project"
|
|
export VERTEX_REGION="us-central1"
|
|
```
|
|
|
|
**Use case**: GCP-native organizations, data residency requirements
|
|
|
|
#### Microsoft Foundry (Azure)
|
|
|
|
```bash
|
|
export CLAUDE_CODE_USE_FOUNDRY=1
|
|
export ANTHROPIC_FOUNDRY_API_KEY="your-key"
|
|
```
|
|
|
|
**Use case**: Azure-committed enterprises, Microsoft Entra ID integration
|
|
|
|
### LLM Gateway
|
|
|
|
For centralized management with budget controls:
|
|
|
|
```bash
|
|
export ANTHROPIC_BASE_URL="https://llm-gateway.example.com/v1"
|
|
export ANTHROPIC_API_KEY="gateway-api-key"
|
|
```
|
|
|
|
**Benefits**:
|
|
- Usage tracking across teams
|
|
- Budget enforcement
|
|
- Audit logging
|
|
- Rate limiting
|
|
|
|
---
|
|
|
|
## 💡 Workflows & Best Practices
|
|
|
|
### Infrastructure Development Workflow
|
|
|
|
**1. Planning Phase**
|
|
|
|
```bash
|
|
# Let Claude Code analyze the requirements
|
|
"I need to add a new VM for monitoring. Can you review the architecture and suggest the best approach?"
|
|
```
|
|
|
|
**2. Implementation Phase**
|
|
|
|
```bash
|
|
# Use TodoWrite to track multi-step tasks
|
|
"Add a Prometheus VM (ID 700) with 4 cores, 8GB RAM, and integrate it with the existing K8s cluster"
|
|
```
|
|
|
|
**3. Review Phase**
|
|
|
|
```bash
|
|
# Review changes before applying
|
|
make plan # Terraform dry-run
|
|
git diff # Review all changes
|
|
```
|
|
|
|
**4. Deployment Phase**
|
|
|
|
```bash
|
|
# Apply with monitoring
|
|
make apply
|
|
make verify
|
|
```
|
|
|
|
### Best Practices for AI-Assisted IaC
|
|
|
|
**DO:**
|
|
- ✅ Always review Terraform plans before applying
|
|
- ✅ Use `make plan` to preview changes
|
|
- ✅ Commit frequently with descriptive messages
|
|
- ✅ Let Claude Code generate documentation
|
|
- ✅ Use TodoWrite for complex multi-step tasks
|
|
|
|
**DON'T:**
|
|
- ❌ Blindly approve `terraform apply` without reviewing plan
|
|
- ❌ Share actual credentials with Claude Code
|
|
- ❌ Deploy to production without testing in staging
|
|
- ❌ Skip reading generated Ansible playbooks
|
|
|
|
### Effective Prompts for Infrastructure
|
|
|
|
**Good Prompts:**
|
|
|
|
```
|
|
"Add IPv6 support to the router VM and update BIRD2 configuration"
|
|
"Create an Ansible role for deploying K3s with these requirements: ..."
|
|
"Review the current Terraform state and identify resource waste"
|
|
"Generate K8s manifests for deploying Backstage with SSL via Nginx Proxy Manager"
|
|
```
|
|
|
|
**Avoid:**
|
|
|
|
```
|
|
"Fix everything" # Too vague
|
|
"Make it work" # No context
|
|
"Deploy stuff" # Unclear requirements
|
|
```
|
|
|
|
---
|
|
|
|
## 🔗 MCP Integration Opportunities
|
|
|
|
### What is MCP?
|
|
|
|
**Model Context Protocol** enables Claude Code to integrate with external systems for enhanced capabilities.
|
|
|
|
### Potential MCP Integrations for ORION
|
|
|
|
#### 1. Proxmox API Integration
|
|
|
|
**Purpose**: Direct VM management via Proxmox API
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"proxmox": {
|
|
"command": "npx",
|
|
"args": ["-y", "@anthropic/mcp-server-proxmox"],
|
|
"env": {
|
|
"PROXMOX_API_URL": "https://192.168.1.100:8006/api2/json",
|
|
"PROXMOX_API_TOKEN": "PVEAPIToken=user@pam!token=secret"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**Capabilities**:
|
|
- List VMs and their status
|
|
- Start/stop/restart VMs
|
|
- Monitor resource usage
|
|
- Create snapshots
|
|
|
|
#### 2. NetBox IPAM Integration
|
|
|
|
**Purpose**: IP address management and network documentation
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"netbox": {
|
|
"command": "python",
|
|
"args": ["-m", "netbox_mcp_server"],
|
|
"env": {
|
|
"NETBOX_URL": "http://192.168.100.50:8000",
|
|
"NETBOX_TOKEN": "your-api-token"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**Capabilities**:
|
|
- Query available IP addresses
|
|
- Allocate IPs for new VMs
|
|
- Update network documentation
|
|
- Track VLAN assignments
|
|
|
|
#### 3. Prometheus Metrics Integration
|
|
|
|
**Purpose**: Real-time infrastructure monitoring
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"prometheus": {
|
|
"command": "npx",
|
|
"args": ["-y", "@anthropic/mcp-server-prometheus"],
|
|
"env": {
|
|
"PROMETHEUS_URL": "http://192.168.100.60:30080"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**Capabilities**:
|
|
- Query current resource usage
|
|
- Identify performance bottlenecks
|
|
- Trigger alerts based on metrics
|
|
- Generate capacity planning reports
|
|
|
|
#### 4. Git Repository Integration
|
|
|
|
**Purpose**: Enhanced version control workflows
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"github": {
|
|
"command": "npx",
|
|
"args": ["-y", "@modelcontextprotocol/server-github"],
|
|
"env": {
|
|
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
**Capabilities**:
|
|
- Create pull requests with detailed descriptions
|
|
- Search issues and discussions
|
|
- Review code changes
|
|
- Manage project boards
|
|
|
|
### Enabling MCP Servers
|
|
|
|
**Option 1: Project-wide** (`.claude/settings.json`)
|
|
|
|
```json
|
|
{
|
|
"enableAllProjectMcpServers": true,
|
|
"mcpServers": {
|
|
"proxmox": { ... },
|
|
"netbox": { ... }
|
|
}
|
|
}
|
|
```
|
|
|
|
**Option 2: Selective** (`.claude/settings.json`)
|
|
|
|
```json
|
|
{
|
|
"enabledMcpjsonServers": ["proxmox", "netbox"],
|
|
"mcpServers": { ... }
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 🛠️ Troubleshooting
|
|
|
|
### Issue: Permission Denied on Terraform Commands
|
|
|
|
**Symptom**: Claude Code asks permission for every `terraform` command
|
|
|
|
**Solution**: Add to `.claude/settings.local.json`:
|
|
|
|
```json
|
|
{
|
|
"permissions": {
|
|
"allow": [
|
|
{
|
|
"tool": "Bash",
|
|
"patterns": ["terraform.*"],
|
|
"description": "Auto-approve Terraform commands"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
### Issue: Cannot Access Docker Socket
|
|
|
|
**Symptom**: Docker commands fail in sandbox mode
|
|
|
|
**Solution**: Add to settings:
|
|
|
|
```json
|
|
{
|
|
"sandbox": {
|
|
"network": {
|
|
"allowUnixSockets": ["/var/run/docker.sock"]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Issue: Proxy Connection Failures
|
|
|
|
**Symptom**: API requests timeout or fail
|
|
|
|
**Solution**: Configure proxy with credentials:
|
|
|
|
```bash
|
|
export HTTPS_PROXY="https://username:password@proxy.example.com:8080"
|
|
export NO_PROXY="localhost,127.0.0.1,192.168.*,*.local"
|
|
```
|
|
|
|
### Issue: SSH Keys Being Blocked
|
|
|
|
**Symptom**: Cannot read SSH keys for Git operations
|
|
|
|
**Solution**: This is intentional for security. Use SSH agent instead:
|
|
|
|
```bash
|
|
ssh-add ~/.ssh/id_rsa
|
|
git config --global credential.helper store
|
|
```
|
|
|
|
### Issue: Too Many "Ask" Prompts
|
|
|
|
**Symptom**: Every Edit operation requires confirmation
|
|
|
|
**Solution**: Adjust default mode (use with caution):
|
|
|
|
```json
|
|
{
|
|
"permissions": {
|
|
"defaultMode": "allow"
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 📚 Additional Resources
|
|
|
|
### Documentation
|
|
|
|
- **[ARCHITECTURE.md](../ARCHITECTURE.md)** - Complete infrastructure architecture
|
|
- **[Makefile](../Makefile)** - One-command deployment targets
|
|
- **[HELPER_SCRIPTS_INTEGRATION.md](HELPER_SCRIPTS_INTEGRATION.md)** - LXC deployment guide
|
|
|
|
### Claude Code Documentation
|
|
|
|
- **[Third-Party Integrations](https://code.claude.com/docs/en/third-party-integrations)** - Cloud providers, gateways
|
|
- **[Network Configuration](https://code.claude.com/docs/en/network-config)** - Proxy, SSL, firewall
|
|
- **[Settings Reference](https://code.claude.com/docs/en/settings)** - Complete settings documentation
|
|
|
|
### External Tools
|
|
|
|
- **[Terraform](https://www.terraform.io/)** - Infrastructure as Code
|
|
- **[Ansible](https://www.ansible.com/)** - Configuration management
|
|
- **[Proxmox VE](https://www.proxmox.com/)** - Virtualization platform
|
|
- **[NetBox](https://netbox.dev/)** - IPAM and network documentation
|
|
|
|
---
|
|
|
|
## 🎯 Quick Reference
|
|
|
|
### Essential Commands
|
|
|
|
```bash
|
|
# Show available Make targets
|
|
make help
|
|
|
|
# Plan infrastructure changes
|
|
make plan
|
|
|
|
# Deploy VMs
|
|
make apply
|
|
|
|
# Deploy AI/ML stack
|
|
make deploy-ai-stack
|
|
|
|
# Deploy complete stack
|
|
make deploy-full
|
|
|
|
# Verify deployment
|
|
make verify
|
|
|
|
# Show outputs
|
|
make outputs
|
|
```
|
|
|
|
### Configuration Files
|
|
|
|
| File | Purpose | Committed |
|
|
|------|---------|-----------|
|
|
| `.claude/settings.json` | Team-shared settings | ✅ Yes |
|
|
| `.claude/settings.local.json` | Personal overrides | ❌ No (gitignored) |
|
|
| `terraform/terraform.tfvars` | Proxmox credentials | ❌ No (gitignored) |
|
|
| `terraform/terraform.tfvars.example` | Template for credentials | ✅ Yes |
|
|
|
|
### Security Checklist
|
|
|
|
- [ ] Never commit `terraform.tfvars` with real credentials
|
|
- [ ] Review all Terraform plans before applying
|
|
- [ ] Keep sandbox mode enabled
|
|
- [ ] Use `.claude/settings.local.json` for API keys
|
|
- [ ] Enable git status hook to track changes
|
|
- [ ] Review generated Ansible playbooks before running
|
|
- [ ] Test destructive operations in dry-run mode first
|
|
|
|
---
|
|
|
|
**Last Updated**: 2025-11-22
|
|
**Status**: Active
|
|
**Maintained By**: ORION Infrastructure Team
|