tooling for cloud provider (OVH) for the infrastructure : ovhcli etc ...

Virgil Ollivier 7d342abd1c add new custom config byom.conf 1 month ago
config 7d342abd1c add new custom config byom.conf 1 month ago
handlers 7d342abd1c add new custom config byom.conf 1 month ago
middleware acecc9825e add source ip into middleware/logging.go 1 month ago
models.bak 906e7a3da6 move models to .bak maybe not used for the moment 1 month ago
routes 7d342abd1c add new custom config byom.conf 1 month ago
.gitignore 218a0f5e43 add gitignore 1 month ago
README.md aa5cbb0678 update README, add GetDNSRecordId function 1 month ago
byom.conf 7d342abd1c add new custom config byom.conf 1 month ago
go.mod 1f2846644c update go mod 1 month ago
go.sum 1f2846644c update go mod 1 month ago
main.go 7d342abd1c add new custom config byom.conf 1 month ago

README.md

BYOM Infrastructure API

Overview

RESTful API service for OVH infrastructure management, built with Go.

Architecture

  • HTTP Server (port 8080)
  • Middleware for logging and security
  • OVH API integration
  • SSH key management system

Prerequisites

  • Go 1.x
  • OVH Account
  • Linux/Unix environment

Quick Start

git clone [repo-url]
cd byom-infra-api
go mod download
go run main.go

Environment Configuration

OVH_APPLICATION_KEY=your_key
OVH_APPLICATION_SECRET=your_secret
OVH_CONSUMER_KEY=your_consumer_key
OVH_ENDPOINT=ovh-eu

API Endpoints

SSH Keys

Method Endpoint Description
GET /sshkey List all keys
GET /sshkey/{id} Get specific key
POST /sshkey Create new key
DELETE /sshkey/{keyName} Delete key

Request Examples

# List SSH keys
curl http://localhost:8080/sshkey

# Create SSH key
curl -X POST http://localhost:8080/sshkey \
  -H "Content-Type: application/json" \
  -d '{"keyName": "mykey", "key": "ssh-ed25519 AAAA..."}'

DNS Records

Method Endpoint Description
GET /dns List all A records
GET /dns/{subdomain} Get record ID for subdomain
POST /dns Create new A record with random subdomain
DELETE /dns/{recordId} Delete DNS record

Request Examples

# List DNS A records
curl http://localhost:8080/dns

# Create DNS A record
curl -X POST http://localhost:8080/dns \
  -H "Content-Type: application/json" \
  -d '{"fieldType": "A", "subDomain": "test", "target": "1.2.3.4", "ttl": 3600}'
  
# Get DNS record ID for subdomain
curl http://localhost:8080/dns/mysubdomain

# Delete DNS record
curl -X DELETE http://localhost:8080/dns/1234567

Project Structure

byom-infra-api/
├── config/         # OVH configuration
├── handlers/       # Request handlers
├── middleware/     # HTTP middleware
├── routes/         # API routes
├── main.go        # Entry point
└── README.md      # Documentation

Development

Running Tests

go test ./...

Building

go build -o byom-api

Dependencies

  • github.com/gorilla/mux
  • github.com/ovh/go-ovh

Security

  • TLS support
  • Request logging
  • IP tracking
  • OVH authentication

License

MIT License

Contributing

  1. Fork repository
  2. Create feature branch
  3. Submit pull request