Use any Terraform provider with Pulumi
Full type safety β’ Multi-language support β’ Seamless integration
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.
- π Full Terraform Compatibility - Use any Terraform provider with Pulumi
- π Complete Type Safety - Full TypeScript definitions with IntelliSense
- π Multi-Language Support - TypeScript, JavaScript, Python, Go, and C# (planned)
- β‘ Dynamic Updates - Auto-sync with upstream Terraform providers
- π― Native Pulumi Experience - Full integration with Pulumi's ecosystem
- π Secure by Design - Pulumi secrets management and state encryption
- π¦ Production Ready - Battle-tested bridge technology
| Provider | Package | Description |
|---|---|---|
| Better Uptime | pulumi-better-uptime |
Monitoring and incident management |
| Bunnynet | pulumi-bunnynet |
CDN and edge computing |
| Infisical | pulumi-infisical |
Secrets management |
| Logtail | pulumi-logtail |
Log management and analytics |
| Namecheap | pulumi-namecheap |
Domain and DNS management |
| Portainer | pulumi-portainer |
Container management |
| TeamCity | pulumi-teamcity |
CI/CD platform |
| Time | pulumi-time |
Time-based resources |
Each package can be installed independently:
npm install pulumi-namecheap
# or
yarn add pulumi-namecheap
# or
pnpm add pulumi-namecheapimport * as pulumi from '@pulumi/pulumi'
import * as namecheap from 'pulumi-namecheap'
// Configure provider (or use environment variables)
const config = new pulumi.Config('namecheap')
// Create a DNS record
const record = new namecheap.Record('www-record', {
domain: 'example.com',
hostname: 'www',
type: 'A',
address: '192.168.1.1',
ttl: 300,
})
// Export the record ID
export const recordId = record.idpulumi preview # Preview changes
pulumi up # Deploy infrastructureComprehensive documentation is available covering:
- Getting Started - Installation, configuration, and first steps
- Architecture - How the bridge works internally
- Provider Guides - Detailed guides for each provider
- Contributing - How to contribute new providers
- Troubleshooting - Common issues and solutions
- FAQ - Frequently asked questions
This project uses Pulumi's Terraform Bridge to automatically convert Terraform providers into native Pulumi providers:
Terraform Provider β Bridge β Pulumi Package β Your Infrastructure Code
Key components:
- Nx Monorepo - Efficient build orchestration
- TypeScript - Full type safety and IntelliSense
- Automated CI/CD - GitHub Actions with automated testing and publishing
- Changesets - Semantic versioning and release management
- Node.js 22.18.0 or later
- pnpm 10.14.0 or later
- Pulumi CLI 3.190.0 or later
-
Clone and install:
git clone https://github.com/hckhanh/pulumi-any-terraform.git cd pulumi-any-terraform pnpm install -
Verify setup:
pnpm run syncpack:check pnpm nx run-many -t check
# Install dependencies
pnpm install
# Check code quality
pnpm nx run-many -t check
# Fix formatting and linting
pnpm nx run-many -t fix
# Build all packages
pnpm nx run-many -t build
# Sync dependency versions
pnpm run syncpack:fix
# Format all code
pnpm run prettier:write- Create package directory structure
- Configure
package.jsonwith proper metadata - Set up parameterization for Terraform provider
- Write comprehensive documentation
- Submit pull request
See the Contributing Guide for detailed instructions.
pulumi-any-terraform/
βββ packages/ # Provider packages
β βββ better-uptime/ # Individual providers
β βββ bunnynet/
β βββ infisical/
β βββ logtail/
β βββ namecheap/
β βββ portainer/
β βββ teamcity/
β βββ time/
βββ tools/ # Build system plugins
β βββ build.ts
β βββ linter.ts
β βββ prettier.ts
βββ docs/ # Documentation site (Next.js)
βββ .github/ # CI/CD workflows
βββ nx.json # Nx configuration
βββ pnpm-workspace.yaml # Workspace config
Automated workflows handle:
- Testing: Linting, type checking, and builds
- Auto-fixing: Prettier and Biome fixes
- Dependency Updates: Automated PRs for updates
- Publishing: Automatic releases to NPM
- Security: Socket Security and vulnerability scanning
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
Please read our Contributing Guide for details on:
- Code standards
- Development workflow
- Adding new providers
- Testing requirements
- Release process
Common issues and solutions:
- Installation fails: Clear cache and retry
- Type errors: Update @pulumi/pulumi version
- Authentication errors: Check credentials and environment variables
- Build failures: Clear Nx cache with
pnpm nx reset
See our Troubleshooting Guide for more help.
This project integrates with:
- Terraform Registry - Source for provider schemas
- NPM Registry - Package distribution
- Pulumi Service - State management (optional)
- GitHub Actions - CI/CD automation
- Nx Cloud - Distributed caching
- Socket Security - Dependency security
- Autofix.ci - Automated code fixes
- 8 Providers available
- MIT Licensed - Free and open source
- Active Development - Regular updates
- Production Ready - Used in real projects
import * as pulumi from '@pulumi/pulumi'
import * as namecheap from 'pulumi-namecheap'
import * as betteruptime from 'pulumi-better-uptime'
// DNS Configuration
const apiRecord = new namecheap.Record('api', {
domain: 'example.com',
hostname: 'api',
type: 'A',
address: '192.168.1.100',
})
// Monitoring
const monitor = new betteruptime.Monitor('api-monitor', {
url: pulumi.interpolate`https://${apiRecord.hostname}.${apiRecord.domain}`,
monitorType: 'status',
checkFrequency: 60,
})
export const apiUrl = pulumi.interpolate`https://${apiRecord.hostname}.${apiRecord.domain}`
export const monitorId = monitor.idThis project is built on top of:
- Pulumi - Infrastructure as Code platform
- Terraform - Provider ecosystem
- Nx - Monorepo build system
- All the amazing Terraform provider maintainers
MIT License - see LICENSE file for details.
KhΓ‘nh HoΓ ng
- Website: khanh.id
- Email: [email protected]
- GitHub: @hckhanh
β If you find this project useful, please consider giving it a star on GitHub!