mirror of
https://github.com/blackboxprogramming/BlackRoad-Operating-System.git
synced 2026-03-17 09:37:55 -05:00
feat: Add CI/CD workflows and Cloudflare DNS Terraform
## GitHub Actions Workflows ### deploy-railway.yml - Automated Railway deployments on push to main - Change detection for AIops, Analytics, Codex, and Infra - Manual dispatch with service selection - Deployment summary in GitHub Actions ### sync-satellites.yml - Automatic sync from monorepo to satellite repos - Pushes services to BlackRoad-OS organization repos: - AIops → blackroad-os-infra - Analytics → blackroad-os-core - Codex → blackroad-os-operator ## Cloudflare DNS Terraform (infra/cloudflare/dns-records.tf) ### blackroad.systems Subdomains - api, core, operator, beacon, prism, docs - console, infra, archive, demo, research - finance, legal, devops, lab (packs) ### blackroad.io Subdomains - app, home, api, creator, os All records configured as proxied CNAMEs to Railway services. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
290
infra/cloudflare/dns-records.tf
Normal file
290
infra/cloudflare/dns-records.tf
Normal file
@@ -0,0 +1,290 @@
|
||||
# BlackRoad OS - Cloudflare DNS Configuration
|
||||
# Terraform configuration for all DNS records
|
||||
#
|
||||
# Usage:
|
||||
# terraform init
|
||||
# terraform plan
|
||||
# terraform apply
|
||||
#
|
||||
# Prerequisites:
|
||||
# - CLOUDFLARE_API_TOKEN environment variable set
|
||||
# - Zone IDs for each domain
|
||||
|
||||
terraform {
|
||||
required_providers {
|
||||
cloudflare = {
|
||||
source = "cloudflare/cloudflare"
|
||||
version = "~> 4.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Variables
|
||||
variable "cloudflare_api_token" {
|
||||
description = "Cloudflare API token"
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "zone_id_blackroad_systems" {
|
||||
description = "Zone ID for blackroad.systems"
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "zone_id_blackroad_io" {
|
||||
description = "Zone ID for blackroad.io"
|
||||
type = string
|
||||
}
|
||||
|
||||
# Provider
|
||||
provider "cloudflare" {
|
||||
api_token = var.cloudflare_api_token
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
# blackroad.systems DNS Records (Enterprise)
|
||||
# =============================================================================
|
||||
|
||||
# API Gateway
|
||||
resource "cloudflare_record" "api_systems" {
|
||||
zone_id = var.zone_id_blackroad_systems
|
||||
name = "api"
|
||||
value = "blackroad-os-api-gateway-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "API Gateway - blackroad-os-api-gateway"
|
||||
}
|
||||
|
||||
# Core API
|
||||
resource "cloudflare_record" "core_systems" {
|
||||
zone_id = var.zone_id_blackroad_systems
|
||||
name = "core"
|
||||
value = "blackroad-os-core-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Core API - blackroad-os-core"
|
||||
}
|
||||
|
||||
# Operator (GitHub Automation)
|
||||
resource "cloudflare_record" "operator_systems" {
|
||||
zone_id = var.zone_id_blackroad_systems
|
||||
name = "operator"
|
||||
value = "blackroad-os-operator-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Operator - blackroad-os-operator"
|
||||
}
|
||||
|
||||
# Beacon (Health Monitoring)
|
||||
resource "cloudflare_record" "beacon_systems" {
|
||||
zone_id = var.zone_id_blackroad_systems
|
||||
name = "beacon"
|
||||
value = "blackroad-os-beacon-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Beacon - blackroad-os-beacon"
|
||||
}
|
||||
|
||||
# Prism Console
|
||||
resource "cloudflare_record" "prism_systems" {
|
||||
zone_id = var.zone_id_blackroad_systems
|
||||
name = "prism"
|
||||
value = "blackroad-prism-console-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Prism Console - blackroad-prism-console"
|
||||
}
|
||||
|
||||
# Documentation
|
||||
resource "cloudflare_record" "docs_systems" {
|
||||
zone_id = var.zone_id_blackroad_systems
|
||||
name = "docs"
|
||||
value = "blackroad-os-docs-production-f7af.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Documentation - blackroad-os-docs"
|
||||
}
|
||||
|
||||
# Console (Master)
|
||||
resource "cloudflare_record" "console_systems" {
|
||||
zone_id = var.zone_id_blackroad_systems
|
||||
name = "console"
|
||||
value = "blackroad-os-master-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Console - blackroad-os-master"
|
||||
}
|
||||
|
||||
# Infrastructure
|
||||
resource "cloudflare_record" "infra_systems" {
|
||||
zone_id = var.zone_id_blackroad_systems
|
||||
name = "infra"
|
||||
value = "blackroad-os-infra-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Infrastructure - blackroad-os-infra"
|
||||
}
|
||||
|
||||
# Archive
|
||||
resource "cloudflare_record" "archive_systems" {
|
||||
zone_id = var.zone_id_blackroad_systems
|
||||
name = "archive"
|
||||
value = "blackroad-os-archive-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Archive - blackroad-os-archive"
|
||||
}
|
||||
|
||||
# Demo
|
||||
resource "cloudflare_record" "demo_systems" {
|
||||
zone_id = var.zone_id_blackroad_systems
|
||||
name = "demo"
|
||||
value = "blackroad-os-demo-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Demo - blackroad-os-demo"
|
||||
}
|
||||
|
||||
# Research
|
||||
resource "cloudflare_record" "research_systems" {
|
||||
zone_id = var.zone_id_blackroad_systems
|
||||
name = "research"
|
||||
value = "blackroad-os-research-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Research - blackroad-os-research"
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
# blackroad.systems Pack Subdomains
|
||||
# =============================================================================
|
||||
|
||||
# Finance Pack
|
||||
resource "cloudflare_record" "finance_systems" {
|
||||
zone_id = var.zone_id_blackroad_systems
|
||||
name = "finance"
|
||||
value = "blackroad-os-pack-finance-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Finance Pack - blackroad-os-pack-finance"
|
||||
}
|
||||
|
||||
# Legal Pack
|
||||
resource "cloudflare_record" "legal_systems" {
|
||||
zone_id = var.zone_id_blackroad_systems
|
||||
name = "legal"
|
||||
value = "blackroad-os-pack-legal-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Legal Pack - blackroad-os-pack-legal"
|
||||
}
|
||||
|
||||
# DevOps Pack
|
||||
resource "cloudflare_record" "devops_systems" {
|
||||
zone_id = var.zone_id_blackroad_systems
|
||||
name = "devops"
|
||||
value = "blackroad-os-pack-infra-devops-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "DevOps Pack - blackroad-os-pack-infra-devops"
|
||||
}
|
||||
|
||||
# Research Lab Pack
|
||||
resource "cloudflare_record" "lab_systems" {
|
||||
zone_id = var.zone_id_blackroad_systems
|
||||
name = "lab"
|
||||
value = "blackroad-os-pack-research-lab-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Research Lab - blackroad-os-pack-research-lab"
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
# blackroad.io DNS Records (Consumer)
|
||||
# =============================================================================
|
||||
|
||||
# Main App
|
||||
resource "cloudflare_record" "app_io" {
|
||||
zone_id = var.zone_id_blackroad_io
|
||||
name = "app"
|
||||
value = "blackroad-os-web-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Main App - blackroad-os-web"
|
||||
}
|
||||
|
||||
# Home/Landing
|
||||
resource "cloudflare_record" "home_io" {
|
||||
zone_id = var.zone_id_blackroad_io
|
||||
name = "home"
|
||||
value = "blackroad-os-home-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Home - blackroad-os-home"
|
||||
}
|
||||
|
||||
# Public API
|
||||
resource "cloudflare_record" "api_io" {
|
||||
zone_id = var.zone_id_blackroad_io
|
||||
name = "api"
|
||||
value = "blackroad-os-api-production-3335.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Public API - blackroad-os-api"
|
||||
}
|
||||
|
||||
# Creator Studio
|
||||
resource "cloudflare_record" "creator_io" {
|
||||
zone_id = var.zone_id_blackroad_io
|
||||
name = "creator"
|
||||
value = "blackroad-os-pack-creator-studio-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "Creator Studio - blackroad-os-pack-creator-studio"
|
||||
}
|
||||
|
||||
# OS Interface
|
||||
resource "cloudflare_record" "os_io" {
|
||||
zone_id = var.zone_id_blackroad_io
|
||||
name = "os"
|
||||
value = "blackroad-os-production.up.railway.app"
|
||||
type = "CNAME"
|
||||
proxied = true
|
||||
comment = "OS Interface - blackroad-os"
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
# Outputs
|
||||
# =============================================================================
|
||||
|
||||
output "blackroad_systems_records" {
|
||||
value = {
|
||||
api = cloudflare_record.api_systems.hostname
|
||||
core = cloudflare_record.core_systems.hostname
|
||||
operator = cloudflare_record.operator_systems.hostname
|
||||
beacon = cloudflare_record.beacon_systems.hostname
|
||||
prism = cloudflare_record.prism_systems.hostname
|
||||
docs = cloudflare_record.docs_systems.hostname
|
||||
console = cloudflare_record.console_systems.hostname
|
||||
infra = cloudflare_record.infra_systems.hostname
|
||||
archive = cloudflare_record.archive_systems.hostname
|
||||
demo = cloudflare_record.demo_systems.hostname
|
||||
research = cloudflare_record.research_systems.hostname
|
||||
finance = cloudflare_record.finance_systems.hostname
|
||||
legal = cloudflare_record.legal_systems.hostname
|
||||
devops = cloudflare_record.devops_systems.hostname
|
||||
lab = cloudflare_record.lab_systems.hostname
|
||||
}
|
||||
description = "All blackroad.systems DNS records"
|
||||
}
|
||||
|
||||
output "blackroad_io_records" {
|
||||
value = {
|
||||
app = cloudflare_record.app_io.hostname
|
||||
home = cloudflare_record.home_io.hostname
|
||||
api = cloudflare_record.api_io.hostname
|
||||
creator = cloudflare_record.creator_io.hostname
|
||||
os = cloudflare_record.os_io.hostname
|
||||
}
|
||||
description = "All blackroad.io DNS records"
|
||||
}
|
||||
Reference in New Issue
Block a user