{"id":50405282,"url":"https://github.com/simonpainter/cross-csp-r53","last_synced_at":"2026-05-31T01:04:28.939Z","repository":{"id":271435067,"uuid":"913447151","full_name":"simonpainter/cross-csp-r53","owner":"simonpainter","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-16T18:56:26.000Z","size":13,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-16T20:16:38.379Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simonpainter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-07T17:44:32.000Z","updated_at":"2025-01-16T18:56:27.000Z","dependencies_parsed_at":"2025-01-16T20:16:41.430Z","dependency_job_id":"b89b62fa-1dd8-4ac7-9f70-2934d4438bc0","html_url":"https://github.com/simonpainter/cross-csp-r53","commit_stats":null,"previous_names":["simonpainter/cross-csp-r3","simonpainter/cross-csp-r53"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/simonpainter/cross-csp-r53","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonpainter%2Fcross-csp-r53","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonpainter%2Fcross-csp-r53/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonpainter%2Fcross-csp-r53/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonpainter%2Fcross-csp-r53/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonpainter","download_url":"https://codeload.github.com/simonpainter/cross-csp-r53/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonpainter%2Fcross-csp-r53/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33715214,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-31T01:04:28.208Z","updated_at":"2026-05-31T01:04:28.931Z","avatar_url":"https://github.com/simonpainter.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AWS-Azure Hybrid DNS Lab\n\nThis Terraform configuration establishes a hybrid cloud environment between AWS and Azure with cross-cloud DNS resolution capabilities. The lab demonstrates how to set up private DNS resolution between cloud providers using Azure Private DNS Resolver and AWS Route53 Resolver.\n\n## Architecture Overview\n\n### Network Configuration\n\n- AWS VPC: 10.0.0.0/16\n  - Public subnet: 10.0.1.0/24\n  - Private subnet: 10.0.2.0/24\n- Azure VNet: 172.16.0.0/16\n  - Main subnet: 172.16.1.0/24\n  - DNS Resolver Inbound subnet: 172.16.2.0/24\n  - DNS Resolver Outbound subnet: 172.16.3.0/24\n  - Gateway subnet: 172.16.255.0/24\n\n### Components\n\n#### AWS Resources\n\n- VPC with public and private subnets\n- Route53 private hosted zone (internal.example.com)\n- Route53 Resolver inbound endpoint\n- Test VM in private subnet with Apache\n\n#### Azure Resources\n\n- Virtual Network with dedicated subnets\n- Private DNS Resolver with inbound and outbound endpoints\n- DNS forwarding ruleset for internal.example.com\n- Test VM with Apache\n\n### Connectivity\n\n- Site-to-site VPN connection between AWS and Azure\n- Two VPN tunnels for redundancy\n- Custom route tables for cross-cloud routing\n\n## DNS Resolution Flow\n\n```text\nAzure                                      AWS\n┌──────────────────────────────┐          ┌──────────────────────────────┐\n│                              │          │                              │\n│  ┌──────────┐   Step 1       │          │                ┌──────────┐  │\n│  │   VM     ├───────────┐    │          │                │   VM     │  │\n│  └──────────┘           │    │          │                └────┬─────┘  │\n│  172.16.1.0/24          \\/   │          │                     │        │\n│                    ┌─────────┐          │                     │        │\n│                    │  Azure  │          │                     │        │\n│               ┌────┤  DNS    │          │                     │        │\n│   Step 2      │    │Resolver │          │                     │        │\n│               \\/   └─────────┘          │                     │        │\n│         ┌──────────┐                    │                     │        │\n│         │ Outbound │     Step 3         │     Step 4          │        │\n│         │ Endpoint ├────────────────────┼──────────┐          │        │\n│         └──────────┘                    │          \\/         │        │\n│         172.16.3.0/24                   │    ┌───────────┐    │        │\n│                /\\                       │    │  Route53  │    │        │\n│                │                        │    │  Resolver │    │        │\n│                │                        │    │  Inbound  │    │        │\n│                │                        │    └─────┬─────┘    │        │\n│                │                        │          │          │        │\n│                │                        │          \\/         │        │\n│                │                        │    ┌───────────┐    │        │\n│                │         Step 8         │    │  Private  │    │        │\n│                └────────────────────────┼────┤  Route53  │    │        │\n│                                         │    │   Zone    ├────┘        │\n└──────────────────────────────┘          │    └───────────┘             │\n                                          └──────────────────────────────┘\n```\n\nDNS Resolution Steps:\n\n1. Azure VM queries systemd-resolved (127.0.0.53)\n2. Query reaches Azure DNS Resolver\n3. Azure Outbound Endpoint forwards query for internal.example.com\n4. AWS Route53 Resolver Inbound receives query\n5. Route53 private hosted zone resolves record\n6. Response returns to Route53 Resolver Inbound\n7. Response returns to Azure Outbound Endpoint\n8. Response returns through Azure DNS Resolver to VM\n\n## Prerequisites\n\n- AWS Account with appropriate permissions\n- Azure Subscription with appropriate permissions\n- Terraform 0.14.9 or later\n\n## Required Variables\n\n### AWS Variables\n\n- `access_key`: AWS access key\n- `secret_key`: AWS secret key\n- `region`: AWS region (default: us-west-1)\n\n### Azure Variables\n\n- `client_secret`: Azure service principal client secret\n- `client_id`: Azure service principal client ID\n- `tenant_id`: Azure tenant ID\n- `subscription_id`: Azure subscription ID\n\n## Usage\n\n1. Clone the repository\n2. Configure AWS and Azure authentication\n3. Initialize Terraform:\n\n   ```bash\n   terraform init\n   ```\n\n4. Apply the configuration:\n\n   ```bash\n   terraform apply\n   ```\n\n## Testing DNS Resolution\n\nAfter deployment:\n\n1. SSH into the Azure VM\n2. Test DNS resolution:\n\n   ```bash\n   dig aws-vm.internal.example.com\n   ```\n\n## Clean Up\n\nTo destroy all resources:\n\n```bash\nterraform destroy\n```\n\n## Notes\n\n- Default region is us-west-1 for AWS and West US 2 for Azure\n- Test VMs are deployed with Apache for basic connectivity testing\n- Both VMs are accessible via SSH using the specified public key\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonpainter%2Fcross-csp-r53","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonpainter%2Fcross-csp-r53","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonpainter%2Fcross-csp-r53/lists"}