IONOS FinOps
IONOS FinOps is an open-source cost estimation tool for IONOS Cloud infrastructure defined in Terraform. Similar to Infracost but specifically designed for IONOS, it provides 100% accurate pricing calculations for your infrastructure before deployment.
Features
- 🎯 Accurate Pricing: Calculate exact costs based on IONOS's current pricing
- 📊 Terraform Integration: Parse Terraform files and state to extract IONOS resources
- 💰 Cost Breakdown: Detailed cost analysis per resource and resource type
- 🔄 Diff Support: Compare costs between Terraform plans
- 📈 Multiple Output Formats: JSON, Table, HTML reports
- 🌍 Multi-Region Support: Pricing for all IONOS data center locations
- 🔌 CI/CD Integration: Easy integration into your deployment pipelines
Supported IONOS Resources
- Compute: Servers (VMs), Cubes, VCPUs, RAM
- Storage: Block Storage, Object Storage (S3)
- Networking: Load Balancers, IP Addresses, Network Bandwidth
- Databases: DBaaS (PostgreSQL, MongoDB, MySQL, MariaDB)
- Kubernetes: Managed Kubernetes clusters, node pools
- Backup: Backup Units
Installation
From PyPI (when published)
pip install ionos-finops
From Source
git clone https://github.com/yourusername/ionos-finops.git
cd ionos-finops
pip install -e .
Quick Start
Basic Usage
# Calculate costs from Terraform directory
ionos-finops breakdown --path /path/to/terraform
# Calculate costs from Terraform plan
terraform plan -out=plan.tfplan
ionos-finops breakdown --plan-file plan.tfplan
# Output as JSON
ionos-finops breakdown --path . --format json
# Compare costs between current and planned state
ionos-finops diff --path .
Example Output
Project: my-ionos-infrastructure
Region: de/fra
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Resource Monthly Cost Yearly Cost ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ ionos_server.web_server €45.00 €540.00 │
│ - 2 vCPUs €20.00 €240.00 │
│ - 4 GB RAM €15.00 €180.00 │
│ - 50 GB Storage €10.00 €120.00 │
│ │
│ ionos_volume.data_volume €30.00 €360.00 │
│ - 200 GB SSD Storage €30.00 €360.00 │
│ │
│ ionos_loadbalancer.main_lb €25.00 €300.00 │
│ │
│ ionos_ipblock.public_ips €5.00 €60.00 │
│ - 2 IPv4 addresses €5.00 €60.00 │
├─────────────────────────────────────────────────────────────────────────────┤
│ TOTAL €105.00 €1,260.00 │
└─────────────────────────────────────────────────────────────────────────────┘
Configuration
Create a .ionos-finops.yml file in your project root:
# IONOS API credentials (optional, for real-time pricing updates)
api_url: https://api.ionos.com/cloudapi/v6
api_token: ${IONOS_TOKEN}
# Default region
default_region: de/fra
# Currency
currency: EUR
# Pricing update frequency (in hours)
pricing_cache_ttl: 24
# Custom pricing overrides (optional)
custom_pricing:
ionos_server:
vcpu_hourly: 0.01
ram_gb_hourly: 0.005
CI/CD Integration
GitHub Actions
name: IONOS Cost Estimation
on: [pull_request]
jobs:
cost-estimate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Terraform
uses: hashicorp/setup-terraform@v2
- name: Install IONOS FinOps
run: pip install ionos-finops
- name: Terraform Plan
run: terraform plan -out=plan.tfplan
- name: Calculate Costs
run: ionos-finops breakdown --plan-file plan.tfplan --format json > costs.json
- name: Comment PR
uses: actions/github-script@v6
with:
script: |
const fs = require('fs');
const costs = JSON.parse(fs.readFileSync('costs.json', 'utf8'));
// Add comment logic here
GitLab CI
ionos-cost-estimate:
stage: plan
script:
- pip install ionos-finops
- terraform plan -out=plan.tfplan
- ionos-finops breakdown --plan-file plan.tfplan
only:
- merge_requests
Development
Setup Development Environment
# Clone the repository
git clone https://github.com/yourusername/ionos-finops.git
cd ionos-finops
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install development dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run linting
black .
flake8 .
mypy .
Project Structure
ionos-finops/
├── ionos_finops/
│ ├── __init__.py
│ ├── cli.py # CLI interface
│ ├── parser/
│ │ ├── __init__.py
│ │ ├── terraform.py # Terraform file parser
│ │ └── hcl.py # HCL parsing utilities
│ ├── pricing/
│ │ ├── __init__.py
│ │ ├── data.py # Pricing data structures
│ │ ├── api.py # IONOS API integration
│ │ └── calculator.py # Cost calculation engine
│ ├── resources/
│ │ ├── __init__.py
│ │ ├── base.py # Base resource class
│ │ ├── compute.py # Compute resources
│ │ ├── storage.py # Storage resources
│ │ ├── network.py # Network resources
│ │ └── database.py # Database resources
│ └── output/
│ ├── __init__.py
│ ├── table.py # Table formatter
│ ├── json.py # JSON formatter
│ └── html.py # HTML report generator
├── tests/
├── examples/
├── pricing_data/ # Static pricing data
├── setup.py
├── requirements.txt
├── README.md
└── LICENSE
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for details.
How to Contribute
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Pricing Data
Pricing data is maintained manually based on IONOS website pricing, with comprehensive validation and community contribution processes.
⚠️ Important: IONOS API Limitations
IONOS does not provide a public pricing API. Their APIs focus on account-specific billing data rather than public pricing catalogs.
📊 Current Pricing Data
| Region | Location | Currency | Status | Source |
|---|---|---|---|---|
| de/fra | Frankfurt | EUR | ✅ Current | Manual |
| de/ber | Berlin | EUR | ✅ Current | Manual |
| de/fra2 | Frankfurt 2 | EUR | ✅ Current | Manual |
| gb/lhr | London | GBP | ✅ Current | Manual |
| gb/wor | Worchester | GBP | ✅ Current | Manual |
| fr/par | Paris | EUR | ✅ Current | Manual |
| es/log | Logroño | EUR | ✅ Current | Manual |
| us/las | Las Vegas | USD | ✅ Current | Manual |
| us/ewr | Newark | USD | ✅ Current | Manual |
| us/kc | Lenexa | USD | ✅ Current | Manual |
🛠️ Manual Update Process
# Validate current pricing data
make validate-pricing
# Manual update workflow
# 1. Check IONOS website pricing
# 2. Update pricing files manually
# 3. Validate changes
make validate-pricing
# Test with sample infrastructure
ionos-finops breakdown --path examples/
🤝 Community Contributions
Help keep pricing current! If you notice pricing changes on the IONOS website:
- Check Current Pricing: Visit IONOS Pricing Calculator
- Update Files: Edit relevant pricing files in
ionos_finops/pricing_data/ - Validate: Run
make validate-pricing - Test: Verify with sample Terraform files
- Submit PR: Create pull request with pricing changes
🔍 Pricing Validation
The tool includes comprehensive pricing validation:
# Validate all pricing data
make validate-pricing
# Check pricing API status
python scripts/check_pricing_status.py
# Run pricing validation tests
pytest tests/test_pricing_validation.py -v
📖 Documentation
See docs/pricing-updates.md for detailed pricing update procedures and limitations.
Roadmap
- Support for all IONOS Terraform resources
- Real-time pricing API integration
- Cost optimization recommendations
- Budget alerts and thresholds
- Historical cost tracking
- Multi-cloud comparison (IONOS vs AWS/Azure/GCP)
- Terraform Cloud/Enterprise integration
- Web UI for cost visualization
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Inspired by Infracost
- Built for the IONOS Cloud community
- Pricing data sourced from IONOS Cloud Pricing
Support
Related Projects
This project supports and complements larger infrastructure cost management initiatives. If you're using Infracost for multi-cloud environments, IONOS FinOps provides the same level of accuracy specifically for IONOS Cloud resources.
Made with ❤️ for the IONOS Cloud community
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ionos_finops-0.1.0.tar.gz.
File metadata
- Download URL: ionos_finops-0.1.0.tar.gz
- Upload date:
- Size: 52.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2eb79885661ab39f990c537fb816645780946f33c27eee9161a7a1895a6e9b03
|
|
| MD5 |
45a116ff25009ee875c05c381666ae4c
|
|
| BLAKE2b-256 |
8dcfc5996380f1050f75d77b048a62f73f5432597f98685c773e1fd7eefae26b
|
File details
Details for the file ionos_finops-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ionos_finops-0.1.0-py3-none-any.whl
- Upload date:
- Size: 41.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5158532ba9dbb8829f2442a781d78d612dc613d535cb695c5260102507a4851c
|
|
| MD5 |
d8e258052e1110c2c884402d45fa8e67
|
|
| BLAKE2b-256 |
96e6b9ad9667f37a5c7eb7af38eaea011c91300d8bdb09255720246e309c25c4
|