1个不稳定版本

0.1.2 2024年8月14日

#1083网络编程

Download history 111/week @ 2024-08-12

每月111次下载

MIT 许可证

70KB
1.5K SLoC

nexus7: Rust SDK用于HCL转换

概述

nexus7是一个Rust SDK,旨在将Rust代码转换为HashiCorp配置语言(HCL)。此项目允许开发者使用Rust编写他们的基础设施代码,同时仍可以利用Terraform或OpenTofu作为基础设施管理的后端。

功能

  • 具有结构体和类型驱动的典范Rust方法
  • 使用强类型结构体进行Rust到HCL的转换
  • 利用Rust的特质系统进行可扩展和可组合的基础设施定义
  • 在编译时验证基础设施配置
  • 与Terraform和OpenTofu后端兼容
  • 模块化架构,便于添加新的提供者和资源类型

范围和当前限制

nexus7最初是为了构建

pocketsizefund

的基础设施而开发的。因此,在其早期阶段,它主要关注pocketsizefund使用的组件。然而,我们的长期目标是扩展其功能,以满足更广泛的设施需求。

当前限制

  • 仅支持AWS作为云提供商
  • 限于EC2实例作为计算资源
  • 仅限于t2.micro实例类型

尽管这些限制反映了我们当前的关注点,但我们致力于随着时间的推移扩展nexus7的功能,以支持更广泛的云提供商、资源类型和配置选项。

入门

先决条件

  • Rust 1.54.0或更高版本
  • Cargo包管理器
  • Terraform或OpenTofu(用于应用生成的HCL)

安装

  1. 将nexus7添加到您的Cargo.toml中

    [dependencies]
    nexus7 = "0.1.0"
    
  2. 运行cargo build以获取和编译SDK

    cargo build
    

使用

  1. 使用nexus7 SDK用Rust编写您的基础设施代码。
  2. 使用SDK将您的Rust代码转换为HCL。
  3. 使用Terraform或OpenTofu应用生成的HCL。

示例

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
// ...

贡献

我们欢迎对nexus7项目的贡献!请阅读我们的

CONTRIBUTING.md

文件,了解如何提交拉取请求、报告问题和提出改进建议。

测试

要运行测试套件

cargo test

文档

有关详细文档,请参阅

docs/

目录或访问我们的

在线文档

许可证

本项目采用

MIT许可证

联系

如有问题、建议或合作机会,请联系项目维护者:[email protected]

致谢

(列出任何对项目做出贡献或启发的个人、组织或资源)

依赖项

~13–23MB
~383K SLoC