1 个不稳定版本

0.1.0 2023年4月16日

#5#tf-bindgen


4 个crate中使用 (直接使用2个)

BSD-3-Clause

30KB
620

tf-bindgen

docs crates

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的一对一替代品,在某些实现方面可能会有所不同。

  1. 使用此库不需要cdktf(库和CLI应用程序)。
  2. tf-bindgen结构与CDK结构不兼容。

贡献

许可

本项目受BSD-3-Clause许可协议的约束。

依赖项

~1–1.8MB
~42K SLoC