FAQ
Frequently asked questions about Pulumi Any Terraform
Common questions and answers about Pulumi Any Terraform providers.
General Questions
What is Pulumi Any Terraform?
Pulumi Any Terraform is a collection of dynamically bridged Pulumi providers that enable you to use Terraform providers within the Pulumi ecosystem. It automatically converts Terraform providers into fully-typed Pulumi packages with complete TypeScript support.
How is this different from using Terraform directly?
While Terraform uses HCL (HashiCorp Configuration Language), Pulumi lets you use real programming languages like TypeScript, Python, Go, and C#. This means:
- Full IDE support with IntelliSense
- Type safety and compile-time checks
- Real programming constructs (loops, conditionals, functions)
- Better code reusability and modularity
- Native integration with existing codebases
How is this different from regular Pulumi providers?
Regular Pulumi providers are built specifically for Pulumi. These bridged providers use Pulumi's bridge to automatically convert existing Terraform providers, giving you access to the vast Terraform ecosystem within Pulumi.
Is this production-ready?
Yes! The bridge technology is mature and used by many Pulumi users in production. However, the stability of each provider depends on the underlying Terraform provider quality.
Installation & Setup
Which package manager should I use?
Any of npm, yarn, or pnpm will work. The project itself uses pnpm for development, but you can use whichever you prefer:
npm install pulumi-namecheap
# or
yarn add pulumi-namecheap
# or
pnpm add pulumi-namecheapDo I need to install Terraform?
No! The Terraform provider runtime is embedded in each Pulumi package. You only need Pulumi CLI and Node.js.
Can I use these providers with other Pulumi providers?
Absolutely! You can mix and match any Pulumi providers in the same program:
import * as aws from "@pulumi/aws";
import * as namecheap from "pulumi-namecheap";
const instance = new aws.ec2.Instance(/* ... */);
const record = new namecheap.Record(/* ... */);What versions of Pulumi are supported?
These providers require Pulumi 3.190.0 or later. We recommend using the latest stable version.
What Node.js version do I need?
Node.js 18.0 or later is recommended. The project is developed with Node.js 22.18.0.
Usage Questions
How do I find provider documentation?
- Check this documentation site for provider guides
- Refer to the original Terraform provider documentation
- Use TypeScript IntelliSense in your IDE
- Check the provider's README in the package
Can I import existing resources?
Yes! Use Pulumi's import command:
pulumi import namecheap:index:Record www domain.com/www/AHow do I handle secrets?
Use Pulumi's built-in secret management:
pulumi config set provider:apiKey value --secretOr in code:
import * as pulumi from "@pulumi/pulumi";
const config = new pulumi.Config();
const apiKey = config.requireSecret("apiKey");Can I use these providers in multiple languages?
Currently, these packages are published for TypeScript/JavaScript. Support for Python, Go, and C# could be added in the future.
How do I update a provider?
Update the package version:
npm update pulumi-namecheapThen run your program:
pulumi preview
pulumi upTechnical Questions
How does the bridge work?
The bridge uses Pulumi's pulumi-terraform-bridge to:
- Read the Terraform provider's schema
- Generate Pulumi resource definitions
- Create TypeScript type definitions
- Map Terraform operations to Pulumi lifecycle
See the Architecture guide for details.
What happens to my Terraform state?
You don't use Terraform state files. Pulumi manages its own state, which can be:
- Stored in Pulumi Cloud (default)
- Self-hosted in S3, Azure Blob, GCS, or local files
Can I migrate from Terraform to these providers?
Yes, but you'll need to:
- Convert HCL to TypeScript
- Import existing resources into Pulumi state
- Test thoroughly before production
Are there any limitations?
Some Terraform features don't translate perfectly:
- Terraform modules don't exist (use TypeScript functions instead)
- Some Terraform-specific syntax doesn't apply
- Provider-specific quirks may exist
How are resources named?
Resources use Pulumi's naming:
- Resource name: Logical name in your code
- Physical name: Auto-generated or explicit
- URN: Unique Pulumi identifier
Can I use Terraform providers not in this collection?
Yes! You can create your own bridged provider by:
- Creating a new package structure
- Configuring the parameterization
- Following the Contributing Guide
Performance Questions
Are these providers slower than native Pulumi?
The bridge adds minimal overhead. Most time is spent in:
- API calls to target services
- Network latency
- Resource creation/update time
How can I speed up deployments?
- Use
--parallelflag for concurrent operations - Split large stacks into smaller ones
- Use stack references for dependencies
- Enable Pulumi state caching
Do these providers support preview/dry-run?
Yes! pulumi preview shows what will change before applying.
Troubleshooting Questions
My provider isn't working. What do I check?
- Verify credentials are configured correctly
- Check API access and IP whitelists
- Enable debug logging:
pulumi up -v=9 - Review the Troubleshooting Guide
I'm getting type errors. How do I fix them?
- Ensure TypeScript version is compatible
- Regenerate type definitions if needed
- Check for type mismatches in your code
- Use
pulumi.Input<T>for inputs
How do I debug provider issues?
Enable debug logging:
export PULUMI_DEBUG_COMMANDS=true
export TF_LOG=DEBUG
pulumi up -v=9Resources aren't updating. Why?
- Run
pulumi refreshto sync state - Check for manual changes outside Pulumi
- Verify update is allowed by provider
- Review resource protection settings
Development Questions
How do I contribute a new provider?
Follow the Contributing Guide:
- Fork the repository
- Create a new package
- Configure parameterization
- Submit a pull request
Can I modify generated code?
No! Generated code is overwritten on rebuild. Instead:
- Use wrapper functions
- Create helper modules
- Extend with TypeScript classes
How do I test my changes?
- Build the provider locally
- Link to a test program:
pnpm link - Run
pulumi previewandpulumi up - Verify resources in provider dashboard
How do I report bugs?
- Check existing issues
- Create a new issue with:
- Provider and version
- Error message
- Minimal reproduction code
- Environment details
Licensing Questions
What license is this project under?
MIT License. See the LICENSE file for details.
Can I use this commercially?
Yes! MIT license allows commercial use.
Are there any restrictions?
The MIT license requires:
- Include copyright notice
- Include license text
What about the Terraform providers?
Each Terraform provider has its own license. Check the provider's repository for details.
Cost Questions
Are these providers free?
The Pulumi packages are free and open source. However:
- Target services may have costs (API usage, resources)
- Pulumi Cloud has free and paid tiers
- Consider resource costs in your planning
Do I need a Pulumi subscription?
No for basic usage. Pulumi offers:
- Free tier: Individual developers
- Team tier: Collaboration features
- Enterprise tier: Advanced capabilities
You can also self-host Pulumi state.
Comparison Questions
Pulumi Any Terraform vs Terraformer?
Terraformer converts cloud resources to Terraform code. This project lets you use Terraform providers with Pulumi.
Pulumi Any Terraform vs CDK for Terraform?
CDK for Terraform generates Terraform JSON. This project creates native Pulumi resources with the full Pulumi experience.
Pulumi Any Terraform vs native Pulumi providers?
Native providers are built specifically for Pulumi and may have:
- Better error messages
- Pulumi-specific features
- Tighter integration
Bridged providers give you:
- Access to any Terraform provider
- Wider ecosystem
- Regular updates from Terraform community
Future Questions
Will more providers be added?
Yes! Providers are added based on:
- Community demand
- Provider popularity
- Maintenance requirements
Will Python/Go/C# support be added?
Potentially! This would require:
- Multi-language code generation
- Additional testing
- Maintenance overhead
Can I request a new feature?
Yes! Open an issue with:
- Feature description
- Use case
- Benefits
Getting More Help
Where can I get help?
- GitHub Issues
- Pulumi Community Slack
- Troubleshooting Guide
- Provider-specific documentation
How do I stay updated?
- Watch the GitHub repository
- Follow Pulumi blog
- Check provider release notes
Can I contribute to documentation?
Absolutely! Documentation improvements are always welcome. See the Contributing Guide.
Still Have Questions?
If your question isn't answered here: