This repository provides a comprehensive toolkit for deploying and managing cloud infrastructure across multiple cloud providers (AWS, Azure, and GCP) with a focus on data platform infrastructure. It combines Infrastructure as Code (Terraform) with CLI-based approaches to offer flexibility in deployment methods.
.
├── cloud-providers/ # Cloud provider specific configurations
│ ├── aws/ # AWS specific resources and configurations
│ ├── azure/ # Azure specific resources and configurations
│ └── gcp/ # GCP specific resources and configurations
├── configs/ # Main configuration directory
│ ├── databricks/ # Databricks specific configurations
│ ├── snowflake/ # Snowflake specific configurations
│ ├── main.tfvars # Main configuration file
│ ├── databricks.tfvars # Databricks variables
│ └── snowflake.tfvars # Snowflake variables
├── terraform/ # Core Terraform configurations
├── Dockerfile # Container definition
├── docker-compose.yml # Container orchestration
└── settings.json # Project settings
-
Multi-Cloud Support
- AWS infrastructure deployment
- Azure resource management
- GCP service configuration
-
Data Platform Infrastructure
- Azure Databricks workspace deployment
- Snowflake account and resource management
- Integrated data storage solutions
-
Infrastructure as Code
- Terraform-based deployments
- Modular configuration structure
- Version-controlled infrastructure
-
Containerization
- Docker support
- Containerized deployment options
- Development environment consistency
- Terraform >= 1.0.0
- Docker and Docker Compose
- Cloud provider CLIs:
- AWS CLI
- Azure CLI
- Google Cloud SDK
- Cloud provider accounts and credentials
- Snowflake account (for data platform features)
-
Clone the Repository
git clone [repository-url] cd cloud-dev -
Configure Environment
# Copy example configurations cp configs/main.tfvars.example configs/main.tfvars cp configs/databricks.tfvars.example configs/databricks.tfvars cp configs/snowflake.tfvars.example configs/snowflake.tfvars # Edit configuration files with your values
-
Initialize Terraform
terraform init
-
Deploy Infrastructure
# Review planned changes terraform plan -var-file="configs/main.tfvars" # Apply changes terraform apply -var-file="configs/main.tfvars"
The Databricks configuration includes:
- Workspace configuration
- Network settings
- Cluster management
- Resource group configuration
Key configuration files:
configs/databricks/main.tfvarsconfigs/databricks_variables.tf
The Snowflake configuration includes:
- Account and region settings
- Database and warehouse configuration
- User and role management
- Storage integrations
Key configuration files:
configs/snowflake/main.tfvarsconfigs/snowflake_variables.tf
-
Credential Management
- Use environment variables for sensitive data
- Implement secrets management solutions
- Never commit credentials to version control
-
Network Security
- Configure VNet integration where applicable
- Implement IP restrictions
- Use private endpoints
-
Access Control
- Follow principle of least privilege
- Implement RBAC
- Use managed identities
Resources follow standardized naming patterns:
- Databricks:
{project_name}-{environment}-{resource_type} - Snowflake:
{project_name}_{environment}_{resource_type}
-
Regular Maintenance
- Monitor resource usage
- Update configurations as needed
- Review and optimize costs
-
Troubleshooting
- Check cloud provider logs
- Verify network connectivity
- Review access permissions
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For issues and feature requests, please use the GitHub issue tracker.