infradsl


Nameinfradsl JSON
Version 0.1.3 PyPI version JSON
download
home_pagehttps://github.com/infradsl/infradsl
SummaryRails-like infrastructure management for AWS, Google Cloud, and DigitalOcean
upload_time2025-07-08 14:01:15
maintainerNone
docs_urlNone
authorInfraDSL Team
requires_python>=3.8
licenseMIT
keywords infrastructure cloud aws gcp digitalocean terraform pulumi iac devops rails
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # InfraDSL - The Rails of Modern Infrastructure

> "Infrastructure as simple as business logic"

InfraDSL brings Rails-like simplicity to cloud infrastructure management. Deploy production-ready applications to AWS, Google Cloud, and DigitalOcean with 95% less code than traditional tools. Currently, in active development. Any feedback is welcome!

## 🚀 Quick Start

### Install
```bash
pip install infradsl
```

### Deploy in 30 seconds
```python
from infradsl import AWS, GoogleCloud, DigitalOcean

# Deploy a web server in one line
server = AWS.EC2("web-server").t3_micro().ubuntu().service("nginx").create()

# Container app to Google Cloud Run
app = GoogleCloud.CloudRun("my-app").container("webapp", "./src").public().create()

# Complete production stack
database = AWS.RDS("app-db").postgresql().production().create()
storage = AWS.S3("app-assets").website().public().create()
api = AWS.ECS("app-api").fargate().container("api:latest").create()
```

**Result**: Production infrastructure with auto-scaling, HTTPS, monitoring, and enterprise security.

## 🎯 Revolutionary Features

### Cross-Cloud Magic
InfraDSL automatically selects optimal cloud providers per service based on cost, performance, and compliance:

```python
from infradsl import InfraDSL

app = InfraDSL.Application("my-app")
    .auto_optimize()
    .database("postgresql")      # → GCP (best price/performance)
    .compute("web-servers")      # → AWS (best global coverage)
    .cdn("static-assets")        # → Cloudflare (best edge network)
    .storage("user-uploads")     # → DigitalOcean (best simplicity)
    .create()
```

### Universal Provider Support
- **AWS**: EC2, ECS, RDS, S3, Lambda, CloudFront, Route53
- **Google Cloud**: GKE, Cloud Run, Compute Engine, Cloud SQL, Cloud Storage
- **DigitalOcean**: Droplets, Kubernetes, Databases, Spaces, Load Balancers
- **Cloudflare**: CDN, DNS, Workers, R2 Storage, SSL/TLS

### CLI Commands
```bash
infradsl init my-project aws          # Initialize new project
infradsl preview main.py              # Preview changes
infradsl apply main.py                # Deploy infrastructure
infradsl destroy main.py              # Clean up resources
infradsl doctor                       # Check setup and diagnose issues
```

## 🔧 Setup & Authentication

### AWS Credentials
```bash
# Via AWS CLI
aws configure

# Or environment variables
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_DEFAULT_REGION=us-east-1
```

### Google Cloud Credentials
```bash
# Via gcloud CLI
gcloud auth application-default login

# Or service account key
export GOOGLE_APPLICATION_CREDENTIALS=path/to/service-account.json
```

### DigitalOcean Token
```bash
export DIGITALOCEAN_TOKEN=your_do_token
```

## 💻 Usage Examples

### AWS Infrastructure
```python
from infradsl import AWS

# Simple web server
server = AWS.EC2("web-server").t3_micro().ubuntu().create()

# Production API with load balancer
api = (AWS.ECS("production-api")
    .fargate()
    .container("api:latest")
    .auto_scale(min=2, max=50)
    .load_balancer()
    .create())

# Database with automated backups
db = (AWS.RDS("app-db")
    .postgresql()
    .production()
    .encrypted()
    .create())
```

### Google Cloud
```python
from infradsl import GoogleCloud

# Serverless container
app = (GoogleCloud.CloudRun("my-app")
    .container("webapp", "./src")
    .public()
    .create())

# Kubernetes cluster
cluster = (GoogleCloud.GKE("production")
    .location("us-central1")
    .auto_scale(min_nodes=3, max_nodes=20)
    .create())
```

### DigitalOcean
```python
from infradsl import DigitalOcean

# Simple droplet
droplet = (DigitalOcean.Droplet("web-server")
    .size("s-2vcpu-2gb")
    .region("nyc1")
    .create())

# Kubernetes cluster
cluster = (DigitalOcean.Kubernetes("app-cluster")
    .region("fra1")
    .nodes(3)
    .create())
```

## 🏗️ Key Benefits

### 95% Code Reduction
- **Kubernetes YAML**: 500+ lines → 1 line
- **Terraform**: 100+ lines → 1 line  
- **Docker Configuration**: 50+ lines → 0 lines (automatic)

### Developer Experience
- **Time to Production**: Days → Minutes
- **Learning Curve**: Weeks → 5 minutes
- **Rails-like Simplicity**: Intuitive, chainable API

### Production Ready
- **Security**: Automatic best practices
- **Auto-scaling**: Built-in by default
- **Monitoring**: Enterprise-grade observability

## 🛣️ What's Next

- **Template Marketplace**: Reusable infrastructure patterns
- **Cost Optimization**: Automatic resource rightsizing
- **Multi-Cloud Intelligence**: Cross-provider optimization
- **IDE Integration**: VS Code and JetBrains extensions

## 📚 Documentation

Visit **https://docs.infradsl.dev** for complete documentation, tutorials, and examples.

## 🤝 Contributing

We welcome contributions! Check out our [GitHub repository](https://github.com/biaandersson/infradsl.dev) for issues and contribution guidelines.

---

*Built with ❤️ for Engineers who want to ship, not configure infrastructure.*

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/infradsl/infradsl",
    "name": "infradsl",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "InfraDSL Team <hello@infradsl.dev>",
    "keywords": "infrastructure, cloud, aws, gcp, digitalocean, terraform, pulumi, iac, devops, rails",
    "author": "InfraDSL Team",
    "author_email": "InfraDSL Team <hello@infradsl.dev>",
    "download_url": "https://files.pythonhosted.org/packages/ca/db/a04511c5565a0ff80357c3ae5ae079f5a5cabe7ee40f308e3e085ebaf94d/infradsl-0.1.3.tar.gz",
    "platform": null,
    "description": "# InfraDSL - The Rails of Modern Infrastructure\n\n> \"Infrastructure as simple as business logic\"\n\nInfraDSL brings Rails-like simplicity to cloud infrastructure management. Deploy production-ready applications to AWS, Google Cloud, and DigitalOcean with 95% less code than traditional tools. Currently, in active development. Any feedback is welcome!\n\n## \ud83d\ude80 Quick Start\n\n### Install\n```bash\npip install infradsl\n```\n\n### Deploy in 30 seconds\n```python\nfrom infradsl import AWS, GoogleCloud, DigitalOcean\n\n# Deploy a web server in one line\nserver = AWS.EC2(\"web-server\").t3_micro().ubuntu().service(\"nginx\").create()\n\n# Container app to Google Cloud Run\napp = GoogleCloud.CloudRun(\"my-app\").container(\"webapp\", \"./src\").public().create()\n\n# Complete production stack\ndatabase = AWS.RDS(\"app-db\").postgresql().production().create()\nstorage = AWS.S3(\"app-assets\").website().public().create()\napi = AWS.ECS(\"app-api\").fargate().container(\"api:latest\").create()\n```\n\n**Result**: Production infrastructure with auto-scaling, HTTPS, monitoring, and enterprise security.\n\n## \ud83c\udfaf Revolutionary Features\n\n### Cross-Cloud Magic\nInfraDSL automatically selects optimal cloud providers per service based on cost, performance, and compliance:\n\n```python\nfrom infradsl import InfraDSL\n\napp = InfraDSL.Application(\"my-app\")\n    .auto_optimize()\n    .database(\"postgresql\")      # \u2192 GCP (best price/performance)\n    .compute(\"web-servers\")      # \u2192 AWS (best global coverage)\n    .cdn(\"static-assets\")        # \u2192 Cloudflare (best edge network)\n    .storage(\"user-uploads\")     # \u2192 DigitalOcean (best simplicity)\n    .create()\n```\n\n### Universal Provider Support\n- **AWS**: EC2, ECS, RDS, S3, Lambda, CloudFront, Route53\n- **Google Cloud**: GKE, Cloud Run, Compute Engine, Cloud SQL, Cloud Storage\n- **DigitalOcean**: Droplets, Kubernetes, Databases, Spaces, Load Balancers\n- **Cloudflare**: CDN, DNS, Workers, R2 Storage, SSL/TLS\n\n### CLI Commands\n```bash\ninfradsl init my-project aws          # Initialize new project\ninfradsl preview main.py              # Preview changes\ninfradsl apply main.py                # Deploy infrastructure\ninfradsl destroy main.py              # Clean up resources\ninfradsl doctor                       # Check setup and diagnose issues\n```\n\n## \ud83d\udd27 Setup & Authentication\n\n### AWS Credentials\n```bash\n# Via AWS CLI\naws configure\n\n# Or environment variables\nexport AWS_ACCESS_KEY_ID=your_access_key\nexport AWS_SECRET_ACCESS_KEY=your_secret_key\nexport AWS_DEFAULT_REGION=us-east-1\n```\n\n### Google Cloud Credentials\n```bash\n# Via gcloud CLI\ngcloud auth application-default login\n\n# Or service account key\nexport GOOGLE_APPLICATION_CREDENTIALS=path/to/service-account.json\n```\n\n### DigitalOcean Token\n```bash\nexport DIGITALOCEAN_TOKEN=your_do_token\n```\n\n## \ud83d\udcbb Usage Examples\n\n### AWS Infrastructure\n```python\nfrom infradsl import AWS\n\n# Simple web server\nserver = AWS.EC2(\"web-server\").t3_micro().ubuntu().create()\n\n# Production API with load balancer\napi = (AWS.ECS(\"production-api\")\n    .fargate()\n    .container(\"api:latest\")\n    .auto_scale(min=2, max=50)\n    .load_balancer()\n    .create())\n\n# Database with automated backups\ndb = (AWS.RDS(\"app-db\")\n    .postgresql()\n    .production()\n    .encrypted()\n    .create())\n```\n\n### Google Cloud\n```python\nfrom infradsl import GoogleCloud\n\n# Serverless container\napp = (GoogleCloud.CloudRun(\"my-app\")\n    .container(\"webapp\", \"./src\")\n    .public()\n    .create())\n\n# Kubernetes cluster\ncluster = (GoogleCloud.GKE(\"production\")\n    .location(\"us-central1\")\n    .auto_scale(min_nodes=3, max_nodes=20)\n    .create())\n```\n\n### DigitalOcean\n```python\nfrom infradsl import DigitalOcean\n\n# Simple droplet\ndroplet = (DigitalOcean.Droplet(\"web-server\")\n    .size(\"s-2vcpu-2gb\")\n    .region(\"nyc1\")\n    .create())\n\n# Kubernetes cluster\ncluster = (DigitalOcean.Kubernetes(\"app-cluster\")\n    .region(\"fra1\")\n    .nodes(3)\n    .create())\n```\n\n## \ud83c\udfd7\ufe0f Key Benefits\n\n### 95% Code Reduction\n- **Kubernetes YAML**: 500+ lines \u2192 1 line\n- **Terraform**: 100+ lines \u2192 1 line  \n- **Docker Configuration**: 50+ lines \u2192 0 lines (automatic)\n\n### Developer Experience\n- **Time to Production**: Days \u2192 Minutes\n- **Learning Curve**: Weeks \u2192 5 minutes\n- **Rails-like Simplicity**: Intuitive, chainable API\n\n### Production Ready\n- **Security**: Automatic best practices\n- **Auto-scaling**: Built-in by default\n- **Monitoring**: Enterprise-grade observability\n\n## \ud83d\udee3\ufe0f What's Next\n\n- **Template Marketplace**: Reusable infrastructure patterns\n- **Cost Optimization**: Automatic resource rightsizing\n- **Multi-Cloud Intelligence**: Cross-provider optimization\n- **IDE Integration**: VS Code and JetBrains extensions\n\n## \ud83d\udcda Documentation\n\nVisit **https://docs.infradsl.dev** for complete documentation, tutorials, and examples.\n\n## \ud83e\udd1d Contributing\n\nWe welcome contributions! Check out our [GitHub repository](https://github.com/biaandersson/infradsl.dev) for issues and contribution guidelines.\n\n---\n\n*Built with \u2764\ufe0f for Engineers who want to ship, not configure infrastructure.*\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Rails-like infrastructure management for AWS, Google Cloud, and DigitalOcean",
    "version": "0.1.3",
    "project_urls": {
        "Bug Reports": "https://github.com/infradsl/infradsl/issues",
        "Changelog": "https://github.com/infradsl/infradsl/blob/main/CHANGELOG.md",
        "Documentation": "https://infradsl.dev",
        "Homepage": "https://infradsl.dev",
        "Repository": "https://github.com/infradsl/infradsl"
    },
    "split_keywords": [
        "infrastructure",
        " cloud",
        " aws",
        " gcp",
        " digitalocean",
        " terraform",
        " pulumi",
        " iac",
        " devops",
        " rails"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c46dd6b3b3decf030bea32fd4747398fcf07947fd7663abc4515f7b77ddfdd46",
                "md5": "834381b108000de98e0af96ec79ebba5",
                "sha256": "b807994d632ce4147cb8ac385c871179c383108e39bb8fce6a31bafc5f604f16"
            },
            "downloads": -1,
            "filename": "infradsl-0.1.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "834381b108000de98e0af96ec79ebba5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 1614425,
            "upload_time": "2025-07-08T14:01:13",
            "upload_time_iso_8601": "2025-07-08T14:01:13.596866Z",
            "url": "https://files.pythonhosted.org/packages/c4/6d/d6b3b3decf030bea32fd4747398fcf07947fd7663abc4515f7b77ddfdd46/infradsl-0.1.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "cadba04511c5565a0ff80357c3ae5ae079f5a5cabe7ee40f308e3e085ebaf94d",
                "md5": "1330478c8d26b99a93b3f7f5049bceb5",
                "sha256": "dad9ab31bcb05151bcb3c4d87ccd3abaa834e4ed2c5c3fb7b5651b8c62c180e6"
            },
            "downloads": -1,
            "filename": "infradsl-0.1.3.tar.gz",
            "has_sig": false,
            "md5_digest": "1330478c8d26b99a93b3f7f5049bceb5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 1290012,
            "upload_time": "2025-07-08T14:01:15",
            "upload_time_iso_8601": "2025-07-08T14:01:15.409227Z",
            "url": "https://files.pythonhosted.org/packages/ca/db/a04511c5565a0ff80357c3ae5ae079f5a5cabe7ee40f308e3e085ebaf94d/infradsl-0.1.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-08 14:01:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "infradsl",
    "github_project": "infradsl",
    "github_not_found": true,
    "lcname": "infradsl"
}
        
Elapsed time: 1.11277s