1 unstable release
0.1.2 | Aug 14, 2024 |
---|
#328 in Configuration
70KB
1.5K
SLoC
nexus7: Rust SDK for HCL Transpilation
Overview
nexus7 is a Rust SDK designed to transpile Rust code into HashiCorp Configuration Language (HCL). This project enables developers to write their infrastructure code in Rust while still leveraging Terraform or OpenTofu as backends for infrastructure management.
Features
- Idiomatic Rust approach with struct and type-driven design
- Rust to HCL transpilation using strongly-typed structs
- Leverages Rust's trait system for extensible and composable infrastructure definitions
- Compile-time validation of infrastructure configurations
- Compatible with Terraform and OpenTofu backends
- Modular architecture allowing easy addition of new providers and resource types
Scope and Current Limitations
nexus7 was initially developed as a way to build infrastructure for pocketsizefund. As such, in its early stages, it focuses primarily on the infrastructure components used by pocketsizefund. However, our long-term goal is to expand its capabilities to cover a broader range of infrastructure needs.
Current limitations:
- Only supports AWS as the cloud provider
- Limited to EC2 instances for compute resources
- Restricted to t2.micro instance type
While these limitations reflect our current focus, we are committed to growing nexus7's capabilities over time to support a wider array of cloud providers, resource types, and configuration options.
Getting Started
Prerequisites
- Rust 1.54.0 or later
- Cargo package manager
- Terraform or OpenTofu (for applying the generated HCL)
Installation
-
Add nexus7 to your Cargo.toml:
[dependencies] nexus7 = "0.1.0"
-
Run cargo build to fetch and compile the SDK:
cargo build
Usage
- Write your infrastructure code in Rust using the nexus7 SDK.
- Use the SDK to transpile your Rust code to HCL.
- Apply the generated HCL using Terraform or OpenTofu.
Example:
use nexus7::{Resource, Provider};
// Define a resource
let resource = Resource::new("aws_instance", "example")
.with_provider(Provider::AWS)
.with_attribute("ami", "ami-0c94855ba95c71c99")
.with_attribute("instance_type", "t2.micro");
// Transpile the resource to HCL
let hcl = resource.to_hcl();
// Apply the HCL using Terraform or OpenTofu
// ...
Contributing
We welcome contributions to the nexus7 project! Please read our CONTRIBUTING.md file for guidelines on how to submit pull requests, report issues, and suggest improvements.
Testing
To run the test suite:
cargo test
Documentation
For detailed documentation, please refer to the docs/
directory or visit our online documentation.
License
This project is licensed under the MIT License.
Contact
For questions, suggestions, or collaboration opportunities, please contact the project maintainers at contact@nexus7.example.com.
Acknowledgments
[List any individuals, organizations, or resources that have contributed to or inspired the project]
Dependencies
~13–22MB
~386K SLoC