Files
llm-automation-docs-and-rem…/README_WEB.md
LLM Automation System 1ba5ce851d Initial commit: LLM Automation Docs & Remediation Engine v2.0
Features:
- Automated datacenter documentation generation
- MCP integration for device connectivity
- Auto-remediation engine with safety checks
- Multi-factor reliability scoring (0-100%)
- Human feedback learning loop
- Pattern recognition and continuous improvement
- Agentic chat support with AI
- API for ticket resolution
- Frontend React with Material-UI
- CI/CD pipelines (GitLab + Gitea)
- Docker & Kubernetes deployment
- Complete documentation and guides

v2.0 Highlights:
- Auto-remediation with write operations (disabled by default)
- Reliability calculator with 4-factor scoring
- Human feedback system for continuous learning
- Pattern-based progressive automation
- Approval workflow for critical actions
- Full audit trail and rollback capability
2025-10-17 23:47:28 +00:00

512 lines
11 KiB
Markdown

# 🌐 Sistema Web e MCP - Documentazione Datacenter
Sistema completo per pubblicazione web della documentazione datacenter con API REST e MCP Server per connessioni LLM alle infrastrutture.
## 📦 Componenti
### 1. FastAPI Documentation Server
- **Porta**: 8000
- **Funzione**: Serve documentazione MkDocs compilata + API REST
- **Features**:
- Documentazione web responsive
- API REST per accesso programmatico
- Ottimizzazione per LLM
- Search full-text
- Statistics e metadata
### 2. MCP Server
- **Porta**: 8001
- **Funzione**: Model Context Protocol - Connessioni infrastruttura
- **Features**:
- SSH execution
- SNMP queries
- API REST integration
- VMware, Cisco, storage shortcuts
- Audit logging
### 3. MkDocs Static Site
- **Framework**: Material for MkDocs
- **Build**: Automatico via CI/CD
- **Features**:
- Responsive design
- Dark mode
- Search integrata
- Git revision dates
- Navigation ottimizzata
### 4. Nginx Reverse Proxy
- **Porta**: 80 (HTTP) → 443 (HTTPS)
- **Funzione**: SSL termination, caching, rate limiting
- **Features**:
- HTTPS con TLS 1.2+
- Gzip compression
- Static file caching
- Security headers
## 🚀 Quick Start
### Prerequisiti
```bash
- Docker & Docker Compose
- Git
- Accesso management network
```
### Setup Iniziale
1. **Clone repository**
```bash
git clone https://github.com/company/datacenter-docs.git
cd datacenter-docs
```
2. **Configura credenziali**
```bash
# Crea file MCP config
cp config/mcp_config.example.json config/mcp_config.json
# Edita con credenziali reali
vim config/mcp_config.json
# Crea .env per Docker
cat > .env << 'EOF'
VCENTER_PASSWORD=your_password
SWITCH_PASSWORD=your_password
STORAGE_API_KEY=your_api_key
EOF
```
3. **Build e avvia servizi**
```bash
# Build documentazione
./scripts/build-docs.sh
# Avvia con Docker Compose
docker-compose up -d
# Verifica health
curl http://localhost:8000/health
curl http://localhost:8001/methods
```
4. **Accedi alla documentazione**
```
http://localhost:8000/docs/
http://localhost:8000/api/docs (API Swagger)
http://localhost:8001/docs (MCP Swagger)
```
## 📁 Struttura File
```
datacenter-docs/
├── api/ # FastAPI application
│ ├── main.py # Main FastAPI app
│ └── requirements-api.txt # Python dependencies
├── mcp-server/ # MCP Server
│ └── server.py # MCP implementation
├── docs/ # MkDocs source
│ ├── index.md # Homepage
│ ├── sections/ # Documentation sections
│ └── api/ # API documentation
├── templates/ # Template documentazione
├── nginx/ # Nginx configuration
│ └── nginx.conf
├── scripts/ # Utility scripts
│ ├── build-docs.sh
│ └── deploy.sh
├── .github/workflows/ # CI/CD pipelines
│ └── build-deploy.yml
├── config/ # Configuration files
│ └── mcp_config.json
├── mkdocs.yml # MkDocs configuration
├── Dockerfile # Multi-stage Dockerfile
├── docker-compose.yml # Docker Compose config
└── docker-entrypoint.sh # Container entrypoint
```
## 🔄 Workflow Automazione
### 1. Generazione Documentazione
```bash
# LLM genera/aggiorna template
python3 main.py --section 01
# Commit su Git
git add templates/
git commit -m "docs: update infrastructure section"
git push origin main
```
### 2. CI/CD Pipeline
```
Push to main
GitHub Actions triggered
├─ Lint & Validate
├─ Build MkDocs
├─ Build Docker Image
├─ Security Scan
└─ Deploy to Production
Documentation live!
```
### 3. Accesso Documentazione
```
User → Nginx → FastAPI → MkDocs Site
API REST
LLM-optimized
```
## 🔌 API Usage
### Python Client Example
```python
import requests
# Get all sections
r = requests.get('http://localhost:8000/api/v1/sections')
sections = r.json()
for section in sections:
print(f"{section['title']}: {section['token_estimate']} tokens")
# Get specific section
r = requests.get('http://localhost:8000/api/v1/sections/02_networking')
content = r.json()
print(content['content'])
# LLM-optimized content
r = requests.get('http://localhost:8000/api/v1/llm-optimized/02_networking')
llm_data = r.json()
print(f"Ready for LLM: {llm_data['token_count']} tokens")
```
### cURL Examples
```bash
# Health check
curl http://localhost:8000/health
# Get summary
curl http://localhost:8000/api/v1/summary | jq
# Search
curl "http://localhost:8000/api/v1/search?q=vmware" | jq
# Get section as HTML
curl "http://localhost:8000/api/v1/sections/03_server_virtualizzazione?format=html"
```
## 🤖 MCP Usage
### Python MCP Client
```python
import asyncio
import requests
async def query_infrastructure():
base_url = 'http://localhost:8001'
# List available methods
r = requests.get(f'{base_url}/methods')
print(r.json())
# Execute SSH command
r = requests.post(f'{base_url}/execute/ssh', json={
'connection_name': 'switch-core-01',
'command': 'show version'
})
result = r.json()
print(f"Output: {result['output']}")
# SNMP query
r = requests.post(f'{base_url}/execute/snmp/get', json={
'connection_name': 'ups-01',
'oid': '.1.3.6.1.2.1.33.1.2.1.0'
})
ups_status = r.json()
print(f"UPS Status: {ups_status['output']}")
asyncio.run(query_infrastructure())
```
### Available MCP Methods
- `ssh_execute` - Execute commands via SSH
- `ssh_get_config` - Get device configurations
- `snmp_get` - SNMP GET query
- `snmp_walk` - SNMP WALK query
- `api_request` - Generic API call
- `vmware_get_vms` - Get VMware VMs
- `vmware_get_hosts` - Get ESXi hosts
- `cisco_get_interfaces` - Cisco interface status
- `ups_get_status` - UPS status via SNMP
## 🔐 Security
### Access Control
```yaml
Documentation (port 8000):
- Public read access (internal network)
- API key for external access
MCP Server (port 8001):
- Internal network only
- No external exposure
- Audit logging enabled
- Read-only operations
```
### Secrets Management
```bash
# Use environment variables
export VCENTER_PASSWORD="..."
export SWITCH_PASSWORD="..."
# Or use Docker secrets
docker secret create vcenter_pass vcenter_password.txt
# Or use HashiCorp Vault
vault kv get -field=password datacenter/vcenter
```
### Network Security
```bash
# Firewall rules
# Allow: Management network → MCP Server
# Allow: Internal network → Documentation
# Deny: External → MCP Server
# Allow: External → Documentation (with auth)
```
## 📊 Monitoring
### Health Checks
```bash
# FastAPI health
curl http://localhost:8000/health
# MCP health
curl http://localhost:8001/methods
# Docker health
docker ps
docker-compose ps
```
### Logs
```bash
# Application logs
docker-compose logs -f docs-server
# Nginx logs
docker-compose logs -f nginx
# Specific service
docker-compose logs -f docs-server | grep ERROR
```
### Metrics
```bash
# Documentation statistics
curl http://localhost:8000/api/v1/stats | jq
# Response times
curl -w "@curl-format.txt" -o /dev/null -s http://localhost:8000/health
```
## 🛠️ Development
### Local Development
```bash
# Install dependencies
pip install -r requirements.txt
pip install -r api/requirements-api.txt
# Run FastAPI locally
cd api
uvicorn main:app --reload --port 8000
# Run MCP server locally
cd mcp-server
uvicorn server:mcp_app --reload --port 8001
# Build docs locally
mkdocs serve
```
### Testing
```bash
# Run tests
pytest tests/ -v
# Coverage
pytest tests/ --cov=api --cov=mcp-server --cov-report=html
# Linting
flake8 api/ mcp-server/
black --check api/ mcp-server/
```
## 🚢 Deployment
### Production Deployment
```bash
# Via script
./scripts/deploy.sh
# Manual
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
# Verify
curl https://docs.datacenter.local/health
```
### Update Documentation
```bash
# Pull latest
git pull origin main
# Rebuild
docker-compose build docs-server
# Rolling update
docker-compose up -d --no-deps docs-server
```
### Rollback
```bash
# Rollback to previous image
docker-compose down
docker-compose up -d docs-server:previous-tag
# Or restore from backup
cp -r backup/docs/* docs/
docker-compose restart docs-server
```
## 📝 Configuration
### Environment Variables
```bash
# Application
ENVIRONMENT=production
LOG_LEVEL=info
# MCP Connections
VCENTER_PASSWORD=xxx
SWITCH_PASSWORD=xxx
STORAGE_API_KEY=xxx
# Optional
REDIS_URL=redis://localhost:6379
DATABASE_URL=postgresql://user:pass@localhost/db
```
### MkDocs Configuration
Edit `mkdocs.yml`:
```yaml
site_name: Your Site Name
theme:
name: material
palette:
primary: indigo
nav:
- Home: index.md
# ...
```
### Nginx Configuration
Edit `nginx/nginx.conf`:
```nginx
# Rate limiting
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
# SSL certificates
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
```
## 🔍 Troubleshooting
### Common Issues
**Port già in uso**
```bash
# Check what's using port
sudo lsof -i :8000
sudo lsof -i :8001
# Stop conflicting service
sudo systemctl stop service_name
```
**Docker build failed**
```bash
# Clean build
docker-compose build --no-cache docs-server
# Check logs
docker-compose logs docs-server
```
**MCP connection errors**
```bash
# Test connectivity
telnet switch.domain.local 22
snmpget -v2c -c public ups.domain.local .1.3.6.1.2.1.1.1.0
# Check config
cat config/mcp_config.json | jq
# Test connection
curl -X GET http://localhost:8001/test/switch-core-01
```
**Documentation not updating**
```bash
# Rebuild docs
./scripts/build-docs.sh
# Force rebuild
docker-compose down
docker-compose up -d --build
# Check pipeline
# Go to GitHub Actions and check logs
```
## 📚 Additional Resources
- [MkDocs Documentation](https://www.mkdocs.org/)
- [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/)
- [FastAPI Documentation](https://fastapi.tiangolo.com/)
- [Docker Compose](https://docs.docker.com/compose/)
## 🤝 Contributing
1. Fork repository
2. Create feature branch
3. Make changes
4. Test locally
5. Submit pull request
## 📞 Support
- **Email**: automation-team@company.com
- **Issues**: https://github.com/company/datacenter-docs/issues
- **Wiki**: https://github.com/company/datacenter-docs/wiki
## 📄 License
Internal use only - Company Proprietary
---
**Sistema Web e MCP per Documentazione Datacenter**
**Versione**: 1.0.0
**Maintainer**: Automation Team
**Last Update**: 2025-01-XX