Initial release: This Terraform provider demonstrates what's possible when building providers in Python using the pyvider framework, and includes a representative set of resources, data sources, and functions.
What it is: A working Terraform provider that bundles a representative set of example resources, data sources, and functions—built entirely in Python.
What it does: Provides utilities for file management, environment diagnostics, data transformation (jq), and infrastructure testing.
Why it matters: Proves you can build fully functional Terraform providers in Python instead of Go, and serves as a reference implementation for the pyvider framework.
- Utility Resources: Manage local files and directories (
pyvider_file_content,pyvider_local_directory). - Diagnostic Data Sources: Inspect the provider's environment (
pyvider_env_variables), read local file metadata (pyvider_file_info), and test provider configuration (pyvider_provider_config_reader). - Powerful Data Transformation: Process JSON and other data structures using
jqqueries directly within your Terraform configuration (pyvider_lens_jq). - Extensive Function Library: A rich set of functions for string manipulation, numeric operations, and collection handling.
Note: terraform-provider-pyvider is in pre-release (v0.x.x). APIs and features may change before 1.0 release.
New to the pyvider provider? Check out our comprehensive tutorial:
→ Getting Started Tutorial - Complete walkthrough in 10-15 minutes
The tutorial covers:
- Installing and configuring the provider
- Creating your first resources
- Using data sources
- Updating and destroying resources
# Set up environment
uv sync
# Run common tasks
we run test # Run tests
we run lint # Check code
we run format # Format code
we tasks # See all available commandsThis project uses wrknv for task automation. Run we tasks to see all available commands.
Common tasks:
we run test- Run all testswe run test.coverage- Run tests with coveragewe run test.parallel- Run tests in parallelwe run lint- Check code qualitywe run lint.fix- Auto-fix linting issueswe run format- Format codewe typecheck- Run type checker
See CLAUDE.md for detailed development instructions and architecture information.
See CLAUDE.md for contribution guidance.
See LICENSE for license details.
✅ Use this provider for:
- Learning how to build Terraform providers in Python
- Studying working examples of provider patterns
- Quick testing and diagnostic utilities
- Proof-of-concept work
- Understanding the pyvider framework capabilities
❌ Don't use this provider for:
- Production infrastructure management (build a custom provider instead)
- Critical systems or workflows
- Long-term production configurations
For production needs: Build your own custom provider using pyvider, or use established providers (AWS, Azure, etc.).
This provider is built using components from the pyvider-components repository, which serves as the reference implementation and example library for the Pyvider framework.
Key Relationship:
- pyvider-components: Example library for learning provider development (this provider uses a curated subset)
- terraform-provider-pyvider: Proof-of-concept provider that packages those components for Terraform testing and learning
pyvider-components (examples) ──packages──> terraform-provider-pyvider (pre-release/testing)
Why two repositories?
- pyvider-components is for developers building their own providers (learning/reference)
- terraform-provider-pyvider is for learning and testing the provider in Terraform (pre-release)
Building your own provider? Start with pyvider-components to see working examples, then use the pyvider framework to build your custom provider.
-
Download: Download the appropriate
terraform-provider-pyviderbinary for your system from the releases page. -
Install: Run the downloaded binary with the
installcommand. It will automatically copy itself to the correct Terraform plugin directory../terraform-provider-pyvider install
Configure the provider in your Terraform code. Most resources and data sources work without additional provider configuration.
terraform {
required_providers {
pyvider = {
source = "local/providers/pyvider"
version = ">= 0.0.3"
}
}
}
provider "pyvider" {
# No configuration needed for most resources/data sources
}
# Use a data source from the provider
data "pyvider_env_variables" "path" {
keys = ["PATH"]
}
output "path_env" {
value = data.pyvider_env_variables.path.values["PATH"]
}Copyright (c) provide.io LLC.