1 个不稳定版本
0.1.0 | 2023 年 4 月 16 日 |
---|
#1148 在 编码
每月 31 次下载
在 5 个crate(2 个直接)中使用
19KB
423 行
tf-bindgen
tf-bindgen
可以用来生成 Terraform 提供程序的 Rust 绑定,用于部署您的基础设施。这个库将复制 CDK for Terraform 的大部分功能,但用 Rust 编写。
要求
必需工具
cargo
terraform
什么是 tf-bindgen
?
tf-bindgen
是一个代码生成器,可以生成 Rust 代码来使用 Terraform 配置基础设施。以下示例展示了如何使用 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 许可证。
依赖项
约 0.7–1.4MB
约 33K SLoC