go - Terraform 自定义提供程序 - 数据源
问题描述
我目前正在为 Jumpcloud 开发自定义 Terraform Provider,并且在配置自定义数据源时遇到了一些挑战。我看到资源架构需要创建、读取、更新和删除。
我只想在 Terraform 中运行 API 查询,以便可以返回用户列表并在 for 循环中使用这些用户。
下面是我标记为 schema.Resource 的 API 调用
func userquery() *schema.Resource {
apiKey := ""
userGroupID := ""
contentType := "application/json"
accept := "application/json"
// Instantiate the API client
client := jcapiv2.NewAPIClient(jcapiv2.NewConfiguration())
// Set up the API key via context
auth := context.WithValue(context.TODO(), jcapiv2.ContextAPIKey, jcapiv2.APIKey{
Key: apiKey,
})
// Make an API call to retrieve a specific user group by ID
userGroup, res, err := client.UserGroupsApi.GroupsUserGet(auth, userGroupID, contentType, accept, nil)
if err != nil {
fmt.Printf("Error retrieving user group %s: %s - response = %+v\n", userGroupID, err, res)
} else {
fmt.Printf("Details for User group %s: %+v\n", userGroupID, userGroup)
}
return nil
}
这是映射
ResourcesMap: map[string]*schema.Resource{
"jumpcloud_user": resourceUser(),
"jumpcloud_user_group": resourceUserGroup(),
"jumpcloud_user_group_membership": resourceUserGroupMembership(),
"jumpcloud_user_query": userquery(),
},
这是我收到的错误。有趣的是,这从 API 调用中正确返回了名称,但是仍然存在错误......
解决方案
我没有太多使用 Terraform 的经验,但将此线程转发给了一位同事,这就是他们发送给我的内容
“用户正在尝试为他的自定义 JC 提供程序而不是资源构建自定义数据源。我对此的经验很少,但是,他的错误似乎是他如何构建插件的问题,但没有关于他正在使用什么版本的 terraform 或 golang,所以我无法提供帮助。我建议参考自定义 JC 提供程序(https://github.com/sagewave/terraform-provider-jumpcloud),因为他们有一些自定义已构建数据源,但没有任何特定于 jumpcloud 的自定义数据源。希望对您有所帮助。”
您是否检查过这个 JC terraform 提供程序,看看它是否适合您的用例?
https://github.com/sagewave/terraform-provider-jumpcloud
干杯
推荐阅读
- ionic-framework - 在 android 上运行时 ionic 4 的 Gradle 包装器问题
- php - 如何生成 sql 文件以插入来自 php 的输入?
- sql-server - 在 SQL 中的存储过程中切换 CASE
- content-management-system - 如何在 BigCommerce 中为英国商店设置仅限英国的产品?
- python - 是否可以在 Python 列表中标记元素?
- nestjs - 如何将上下文注入 HttpModule
- java - 将字符串转换为具有不同时间分量格式的即时
- mysql - 删除查询优化
- ajax - 如何以 django 形式发出警报错误消息?
- javascript - 基于单个/全局搜索输入的切换按钮可见性为空