通过简单分析,我们发现 AWS 前 50 Terraform modules 的数据可以通过请求 https://registry.terraform.io/v2/modules?filter%…
一、KubeVela快速引入AWS云资源
1.1 AWS 最受欢迎的云资源在哪里
1 | |
通过简单分析,我们发现 AWS 前 50 Terraform modules 的数据可以通过请求 https://registry.terraform.io/v2/modules?filter%5Bprovider%5D=aws&include=latest-version&page%5Bsize%5D=50&page%5Bnumber%5D=1 获取。
1.2 开始之前
代码接受两个用户传入参数: • provider 的名称 • 该 provider 对应的 Terraform Modules 的 URL
1 | |
1.3 执行代码
那么你就可以通过以下 100 行左右的代码(文件名 gen.go)来批量地快速引入 AWS 最受欢迎的前 50 种云资源。
1 | |
go run gen.go aws “https://registry.terraform.io/v2/modules?filter%5Bprovider%5D=aws&include=latest-version&page%5Bsize%5D=50&page%5Bnumber%5D=1“
1 | |
“data”: [
1 | |
"attributes": {
1 | |
"relationships": {
"latest-version": {
"data": {
1 | |
"links": {
1 | |
“included”: [
1 | |
在 Modules 对应的 json 数据中,我们只关心两个键值对,即:
• data:包含 Modules 名称及属性的列表 • Included:筛选出的特定版本的 Modules 具体信息
其中,对于 data 中的每个 Module 元素,解析它的属性,Id 和 relationship 中的 latest-version 对应的 id;对于 Included 中的每个 Module 版本元素,解析它的属性和Id。
属性又解析如下五项:
• Name • Downloads • Source • Description • Verified
结构体定义在结构体 TFDownload 中,通过 http 库取 json 数据,再通过 json.Unmarshal 解析出 Terraform modules 的结构体。
批量生产云资源
1. 新建目录,生成资源所需文件
解析完毕后,在当前目录下新建文件夹,文件夹命名为 provider 名称。 遍历解析后的 data,对于其中每个 Module 元素,执行下述操作,为其生成相应配置文件,定义和相应文档。
2. 生成定义文件
通过下述 vela 指令从模块对应的 github 仓库读取相应信息生成定义文件。
vela def init {
ModuleName} –type component –provider {
providerName} –git {
gitURL} –desc {
description} -o {
yamlFileName}
1 | |
• gitURL: {Module.Attributes.Source}.git
1 | |
• yamlFileName:terraform-{providerName}-{Module.Attributes.Name}.yaml
1 | |
[1] 简单快捷的命令行工具
1 | |
[2] AWS 的云资源Terraform modules
1 | |
[3] Terraform Modules json 格式接口
1 | |
[4] Terraform Registry
1 | |
本文标题: KubeVela如何用100行代码
发布时间: 2024年01月13日 00:00
最后更新: 2026年09月16日 05:40
原始链接: https://haoxiang.eu.org/59c230c2/
版权声明: 本文著作权归作者所有,均采用CC BY-NC-SA 4.0许可协议,转载请注明出处!

