我目前正在为Jumpcloud开发自定义Terraform Provider,并且在配置自定义数据源时遇到了一些挑战。我看到资源架构要求创建,读取,更新和删除。
我只是想在Terraform中运行API查询,以便我可以返回用户列表并在for循环中使用这些用户。
下面是我已标记为架构的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调用正确返回名称,但是仍然存在错误...
答案 0 :(得分:1)
我在使用Terraform方面没有太多经验,但是将该线程转发给了一位同事,这就是他们给我发送的信息
”“用户正在尝试为其自定义JC提供程序而不是资源构建自定义数据源。我对此的经验很少,但是,他的错误似乎与他如何构建插件有关但是由于没有关于他使用的terraform或golang版本的信息,因此我无法提供帮助。我建议参考自定义JC提供程序(https://github.com/sagewave/terraform-provider-jumpcloud),因为它们已构建了一些自定义数据源,但没有特定于Jumpcloud的自定义数据源。希望能对您有所帮助。“
您是否已签出该JC terraform提供程序以查看它是否适合您的用例?
https://github.com/sagewave/terraform-provider-jumpcloud
欢呼