A collection of dynamically bridged Pulumi providers that enable you to use any Terraform provider within the Pulumi ecosystem. This repository provides seamless integration between Terraform providers and Pulumi, allowing you to leverage the extensive Terraform provider ecosystem while enjoying Pulumi's modern infrastructure-as-code experience.
This project automatically bridges Terraform providers to Pulumi, providing:
- Full Terraform Compatibility: Use any Terraform provider with Pulumi
- Type Safety: Complete TypeScript definitions for all resources
- Multi-Language Support: Generate providers for TypeScript, Python, Go, and C#
- Dynamic Updates: Automatically stay in sync with upstream Terraform providers
- Native Pulumi Experience: Full integration with Pulumi's state management and deployment engine
Each package can be installed independently:
# For Namecheap provider
npm install pulumi-namecheap
# Or with yarn
yarn add pulumi-namecheap
# Or with pnpm
pnpm add pulumi-namecheap
- Node.js 22.18.0
- pnpm 10.14.0
- Access to the repository with appropriate permissions
-
Clone the repository:
git clone https://github.com/hckhanh/pulumi-any-terraform.git cd pulumi-any-terraform
-
Install dependencies:
pnpm install
-
Verify setup:
pnpm run syncpack:check
To add a new Terraform provider to this collection:
-
Create a new package directory under
packages/
:mkdir packages/your-provider cd packages/your-provider
-
Initialize the package structure following the pattern of existing packages:
package.json
with appropriate metadata and dependenciesREADME.md
with comprehensive documentation- Provider configuration and resource definitions
-
Update workspace configuration:
- Add the package to
pnpm-workspace.yaml
if not already covered by the wildcard - Update
.syncpackrc.json
if needed for dependency management
- Add the package to
-
Update Terraform provider version:
- Modify the
parameterization.value
field inpackage.json
- This base64-encoded value contains the provider configuration
- Modify the
-
Update package version:
cd packages/your-provider # Update version in package.json pnpm version patch|minor|major
-
Regenerate types and documentation (if applicable):
- Follow provider-specific regeneration steps
- Update README.md with new features or changes
-
Check dependency synchronization:
pnpm run syncpack:check
-
Fix dependency issues (if any):
pnpm run syncpack:fix
-
Format code:
pnpm run prettier:write
-
Validate package configuration:
- Ensure all required fields are present in
package.json
- Verify
keywords
,description
, andrepository
fields are accurate - Check that
files
array includes necessary distribution files
- Ensure all required fields are present in
-
Prepare for release:
- Ensure all changes are committed
- Update CHANGELOG.md (if maintained)
- Run quality assurance checks
-
Version management:
- Use semantic versioning for all packages
- Coordinate version bumps across related packages if needed
-
Publishing (if applicable):
- Follow npm publishing guidelines
- Ensure proper access permissions
- Verify package contents before publishing
├── packages/ # Individual provider packages
│ └── namecheap/ # Namecheap provider package
│ ├── README.md # Provider-specific documentation
│ ├── package.json # Package configuration
│ └── ... # Provider implementation files
├── .syncpackrc.json # Dependency synchronization rules
├── pnpm-workspace.yaml # Workspace configuration
├── package.json # Root package configuration
└── README.md # This file
-
Dependency conflicts:
- Run
pnpm run syncpack:check
to identify issues - Use
pnpm run syncpack:fix
to automatically resolve common problems
- Run
-
Build failures:
- Check Node.js and pnpm versions match requirements
- Ensure all dependencies are properly installed
- Verify TypeScript configuration is correct
-
Provider sync issues:
- Verify base64-encoded parameterization values are correct
- Check that upstream Terraform provider versions are valid
- Ensure network access to Terraform registry
- Provider-specific issues: Check individual provider README files
- General issues: Open an issue in this repository
- Pulumi-related questions: Consult Pulumi documentation
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature
- Make your changes following the maintenance guidelines above
- Run quality assurance checks
- Commit your changes:
git commit -m 'Add your feature'
- Push to the branch:
git push origin feature/your-feature
- Open a pull request
MIT - see individual package licenses for specific details.
Khánh Hoàng
- Email: [email protected]
- Website: https://www.khanh.id
- GitHub: @hckhanh