首页 > 解决方案 > Terraform - 什么是空提供者?

问题描述

我想知道 terraform null 提供程序的真正用途是什么以及何时使用和不使用它。

我已经浏览了 Terraform 文档 - https://registry.terraform.io/providers/hashicorp/null/latest/docs ,但帮助不大。

空提供者

null 提供者是一个非常不寻常的提供者,它具有故意不做任何事情的构造。这可能听起来很奇怪,实际上这些结构在大多数情况下不需要使用,但它们在各种情况下都可以用于帮助协调棘手的行为或解决限制。

此提供程序的每个功能的文档(可通过导航访问)提供了这些构造可能被证明有用的情况的示例。

使用 null 提供程序会使 Terraform 配置更难理解。虽然它在某些情况下可能很有用,但应谨慎应用,并在可用时首选其他解决方案。

有人可以详细说明一下吗? 但是它们在各种情况下都可以用来帮助协调棘手的行为或解决限制问题。并提供进一步的参考来探索这个提供者。

--这就是我的providers.tf文件的样子-

provider "aws" {
  alias   = "primary"
  region  = "us-east-1"
  profile = "${local.primary_aws_profile}"
  version = "~> 2.70.0"
}

provider "template" {
  version = "~> 1.0"
}

provider null {
  version = "~> 1.0"
}

标签: amazon-web-servicesterraformterraform-provider-aws

解决方案


您正在使用空资源主要 null_resource

空资源的主要用例是作为配置者采取的任意操作的无操作容器。

正如描述所写,您主要将它与诸如和之类的供应商一起使用。local-execremote-exec

一个常见的场景是在创建大量资源时使用local-exec和执行自定义操作。remote-exec这种情况的示例是在资源创建中引入延迟,如下所示

resource "null_resource" "before" {
}

resource "null_resource" "delay" {
  provisioner "local-exec" {
    command = "sleep 10"
  }
  triggers = {
    "before" = "${null_resource.before.id}"
  }
}

resource "null_resource" "after" {
  depends_on = ["null_resource.delay"]
}

推荐阅读