首页 > 解决方案 > Terraform 提供者 - 您将如何表示没有明确定义的 CRUD 操作的资源?

问题描述

为了工作,我正在学习 Go 和 Terraform。我在他们的教程中阅读了如何定义不同的上下文,但我不清楚这些不同的上下文何时被调用以及是什么触发了它们。

通过查看Hashicups示例,当您输入以下内容时,它看起来像:

resource "hashicups_order" "new" {
  items {
    coffee {
      id = 3
    }
    quantity = 2
  }
  items {
    coffee {
      id = 2
    }
    quantity = 2
  }
}

在将要查看的 Terraform 文件中hashicups_order删除hashicups前缀并查找名为 order 的资源。订单资源提供以下上下文:

func resourceOrder() *schema.Resource {
    return &schema.Resource{
        CreateContext: resourceOrderCreate,
        ReadContext:   resourceOrderRead,
        UpdateContext: resourceOrderUpdate,
        DeleteContext: resourceOrderDelete,

我不清楚是什么触发了每个 context 。从该示例看来,由于您正在增加数量的值,它将触发更新上下文。如果这是第一次运行并且不存在先前的状态,它将触发创建等。

但是,在我的情况下,资源是服务器,而我想向用户展示的一个 API 资源是服务器电源控制。但是,您永远不会“创建/销毁”此资源......或者你会吗?您可以读取当前的电源状态,也可以更新电源状态,但至少直观地说,您不会创建或销毁它。我很难理解如何在 Terraform/Go 中对其进行建模。我从概念上理解示例中的咖啡资源,但我很难想象它看起来像服务器电源功能或其他东西,而没有明确匹配不同的 CRUD 操作。

标签: terraform

解决方案


推荐阅读