【问题标题】:Terraform Custom Provider - Data SourceTerraform 自定义提供程序 - 数据源
【发布时间】:2020-07-08 20:36:57
【问题描述】:

我目前正在为 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 调用中正确返回了名称,但是仍然存在错误...

【问题讨论】:

  • 这看起来像您向资源添加了额外的函数和参数,而不是创建新的数据源。
  • 是的,我不确定如何在提供程序中添加实际数据源

标签: go schema terraform terraform-provider-aws terraform-provider-azure


【解决方案1】:

我没有太多使用 Terraform 的经验,但将此帖子转发给了一位同事,这就是他们发给我的内容

“用户正在尝试为他的自定义 JC 提供程序而不是资源构建自定义数据源。我对此的经验很少,但是,他的错误似乎是他如何构建他的插件的问题但没有关于他正在使用什么版本的 terraform 或 golang 的信息,所以我无法在那里提供帮助。我建议参考自定义 JC 提供程序 (https://github.com/sagewave/terraform-provider-jumpcloud),因为他们构建了一些自定义数据源,但没有没有任何特定于 jumpcloud 的自定义数据源。希望对您有所帮助。”

您是否查看过这个 JC terraform 提供程序,看看它是否适合您的用例?

https://github.com/sagewave/terraform-provider-jumpcloud

干杯

【讨论】:

  • 我没有,这正是我需要的例子。感谢您的帮助!
  • 你可能应该接受这个答案或发布你自己对这个问题的答案
猜你喜欢
  • 2021-03-14
  • 2020-08-07
  • 2021-07-03
  • 1970-01-01
  • 2020-09-27
  • 1970-01-01
  • 2019-11-23
  • 2018-11-11
  • 1970-01-01
相关资源
最近更新 更多