1 个不稳定版本
0.1.0 | 2023年4月16日 |
---|
#5 在 #tf-bindgen
30KB
620 行
tf-bindgen
tf-bindgen
可用于生成Terraform提供者的Rust绑定,并部署您的基础设施。此库将复制CDK for Terraform的大部分功能,但用Rust编写。
要求
必需的工具
cargo
terraform
什么是tf-bindgen
?
tf-bindgen
是一个代码生成器,它将生成用于使用Terraform配置基础设施的Rust代码。以下示例显示了如何使用tf-bindgen
来配置运行nginx的Kubernetes pod。
fn init() -> Stack {
let stack = Stack::new("nginx");
/// Configure Resources using a builder
let metadata = KubernetesNamespaceMetadata::builder()
.name("nginx")
.build();
let namespace = KubernetesNamespace::create(&stack, "nginx-namespace")
.metadata(metadata)
.build();
/// Configure Resources using the resource! macro
resource! {
&stack, resource "kubernetes_pod" "nginx" {
metadata {
namespace = &namespace.metadata[0].name
name = "nginx"
}
spec {
container {
name = "nginx"
image = "nginx"
port {
container_port = 80
}
}
}
}
};
stack
}
有关tf-bindgen
的全面介绍,请参阅文档。
问题
编译性能
一些提供者,如tf-kubernetes,将生成大型绑定,导致编译时间较长。如果您遇到此问题,请参阅提高编译时间部分。
路线图
v0.1
- 为Terraform提供者生成Rust代码
- 实现数据块
- 实现资源块
- 添加对变量引用的支持
- 从Terraform模块生成Rust代码
- 添加代码生成器
tf_bindgen::codegen::resource
- 添加Construct derive宏
- 创建Markdown书籍
v0.2
- 在结构中添加对输出的支持
- 添加用于生成CLI应用程序的宏
- 为值类型添加
format!
- 从生成的源代码中删除derive宏
限制
如上所述,此库将复制CDK for Terraform提供的功能。它不是Rust的一对一替代品,在某些实现方面可能会有所不同。
- 使用此库不需要
cdktf
(库和CLI应用程序)。 tf-bindgen
结构与CDK结构不兼容。
贡献
许可
本项目受BSD-3-Clause许可协议的约束。
依赖项
~1–1.8MB
~42K SLoC