首页 > 其他分享 >go 云资源Provider

go 云资源Provider

时间:2022-12-07 13:11:41浏览次数:52  
标签:err nil xxx ACCESS CLOUD Provider go 资源

目录

go 云资源Provider

设计注意事项:

为了让cmdb服务无状态, 因此cmdb服务自己并不做定时任务配置, 只提供同步API
我们的目标: 可以通过云商账号同步不同区域的资产

项目所有源码: CMDB项目源码

效果演示

1 创建secret
image

2 使用改secret同步腾讯云cvm
image

  1. 查看刚才同步的主机
    image

脚本可以吗

如果以解决问题的思路来做, 一个脚本应该就可以了

看下官方SDK: 阿里云官方SDK
建一个表, 把查询出来的数据 写进去
写个API 提供一个接口
下面是伪代码:


func syncHandler() {
	// new client
	client, err := sdk.NewClientWithAccessKey("REGION_ID", "ACCESS_KEY_ID", "ACCESS_KEY_SECRET")
	if err != nil {
		// Handle exceptions
		panic(err)
	}

	// query instances
	resp, err := client.DescribeInstances(req)
	if err != nil {
		return nil, err
	}

	// save hosts
	db.save(transfer(resp))
}

func main() {
	ht := http.HandlerFunc(syncHandler)
	if ht != nil {
		http.Handle("/sync", ht)
	}
	err := http.ListenAndServe(":8090", nil)
	if err != nil {
		log.Fatal("ListenAndServe: ", err.Error())
	}
}

这样写是不是很容易理解?

但是如果后面还有这些需求:

rds, redis, 域名, slb, oss, 账单 都需要同步怎么办

  • 需要支持 其他云厂商: 腾讯云/华为云/Vshpere/AWS/...
  • 云商有接口有速率限制怎么办
  • 需要对接云商的事件, 通过云商创建了资源,需要立马同步
  • 资产状态管理, 云商资源释放了,需要标准归档
  • 有很多个云账号都需要同步怎么办?

云资产提供商

我们需要提前为4个云商准备API Key

环境变量配置

为了方便调试,我们的key通过环境变量传人, 然后通过vscode的test 进行测试:
image

但是这个测试用例是读取不掉对应的key的, 怎么办?

vscode提供的项目配置里面可以配置从文件中读取环境变量: .vscode/settings.json

{
    "go.testEnvFile": "${workspaceFolder}/etc/cmdb-api.env"
}

这样我们执行go test的时候, vscode读取改配置文件里面的环境变量

下面是本项目测试用例使用到的环境变量设置: etc/cmdb-api.env

TX_CLOUD_SECRET_ID=xxx
TX_CLOUD_SECRET_KEY=xxx
AL_CLOUD_ACCESS_KEY=xx
AL_CLOUD_ACCESS_SECRET=xxx
HW_CLOUD_ACCESS_KEY=xxx
HW_CLOUD_ACCESS_SECRET=xxx
VS_HOST=xxx
VS_USERNAME=xxxx
VS_PASSWORD=xxx

最后测试下 我们可以写个用例测试下

阿里云

我们使用阿里云官方SDK, 来操作我们在云上的资源

标签:err,nil,xxx,ACCESS,CLOUD,Provider,go,资源
From: https://www.cnblogs.com/liwenchao1995/p/16962788.html

相关文章

  • windows mongo 开启副本集 6.x版本 mongo : 无法将“mongo”项识别为 cmdlet、函数
    mongo报错当前使用版本6.0.3,bin目录下并没有mongo.exe,所以没有mongo命令,需要下载 https://www.mongodb.com/try/download/shell 解压放到bin目录。ps:新版本的一些备......
  • 解码斯坦福开源狗DogGo——电机旋转角度的设置及解读
      以下分析基于这篇博客:​​解码斯坦福开源狗DogGo–附硬件清单、源码、图纸、论文​​  我选取其中的一幅图来分析  我以Y轴正方向为0度,逆时针为正。  考虑......
  • Java—Google guava工具类(高效)快速入门指南
    Java—Googleguava工具类(高效)快速入门指南Googleguava工具类特点Guava是对JavaAPI的补充,对Java开发中常用功能进行更优雅的实现,使得编码更加轻松,代码容易理解。Guava......
  • Go的安装和环境配置
    最近准备学Go,和大家分享了一下我的安装配置方法Golang的安装官网地址:https://golang.google.cn/dl/如图:我这里选用的是使用标准包安装(Mac、Linux用户根据需求下载指定......
  • go-dongle 0.2.0 版本发布了,一个轻量级、语义化的 golang 编码解码、加密解密库
    dongle是一个轻量级、语义化、对开发者友好的Golang编码解码和加密解密库Dongle已被awesome-go收录,如果您觉得不错,请给个star吧github.com/golang-module/dong......
  • 一文掌握 Go 文件的读取操作
    耐心和持久胜过激烈和狂热。哈喽大家好,我是陈明勇,今天分享的知识是Go文件的读取操作。如果本文对你有帮助,不妨点个赞,如果你是Go语言初学者,不妨点个关注,一起成长一起进步......
  • go type string的用法
    packagemainimport"fmt"typeDDstringconst(CDD="dd"DDD="cc")func(DD)JoinString()DD{returnC+D}funcmain(){C.JoinString()D.JoinSt......
  • hdu3715 Go Deeper--二分 & 2-sat
    原题链接:​​http://acm.hdu.edu.cn/showproblem.php?pid=3715​​题意:有一个递归代码:go(intdep,intn,intm)begin   outputthevalueofdep.   ifdep......
  • hdu1824 Let's go home--2-sat
    原题链接:​​http://acm.hdu.edu.cn/showproblem.php?pid=1824​​题意:n个队伍,每一个队(三人一队),或者队长留下或者其余两名队员同时留下;接下来m对编号,每一对队员,如果队员A留......
  • django学习笔记-ORM
    0.安装第三方模块pipinstallmysqlclient1.ORM1.1.创建数据库启动mysql服务自带工具创建数据库createdatabasedemo01DEFAULTCHARSETutf8COLLATEutf8_gene......