0

我正在使用 Terraform 和 sentinel 进行一些学习。

我无法使某些基本功能正常工作。

我在这里有一个政策:

import "tfconfig"

default_foo = rule { tfconfig.variables.foo.default is "bar" }
default_number = rule { tfconfig.variables.number.default is 42 }

main = rule { default_foo and default_number }

和一个变量文件:

variable "foo" {
  default = "bar"
}

variable "number" {
  default = 42
}

但是当我运行时:

sentinel apply policy.sentinel 

我收到以下错误:

policy.sentinel:1:1: Import "tfconfig" is not available.

我一直在寻找解决方案几个小时的任何想法。

谢谢

4

2 回答 2

2

为了在 Sentinel SDK 中使用特定于 Terraform 的导入,您需要使用模拟数据来生成要测试的数据结构。

当您通过 Terraform Cloud 运行 Terraform 时,一个成功的计划将生成一个 Sentinel 模拟文件,其中包含 Terraform Cloud 在针对该计划评估策略时将使用的相同数据,因此您可以将该模拟数据作为您的一部分检查到您的存储库中为您的策略测试套件。

您可以使用推测计划terraform plan在启用了远程后端的命令行上运行)为您想要测试策略的故意无效配置创建模拟数据,而无需将这些无效配置推送到您的版本控制系统中。

您可以sentinel test针对其JSON 定义包含mock引用这些模拟文件的对象的测试用例,然后由这些测试用例评估的策略将能够导入tfconfigtfplantfstate获得与策略针对原始计划运行的等效结果地形云。

于 2019-08-23T18:04:08.490 回答
1

我有我的模拟数据和所有东西,但我仍然收到这个错误。

运行策略时出现运行时错误:ensure-policy.sentinel:3:1: Import "tfplan" is not available

我意识到我忘记了我的策略目录根目录下的“sentinel.json”文件,它告诉哨兵在哪里寻找模拟数据

https://www.terraform.io/docs/cloud/sentinel/mock.html

这是他们推荐默认目录设置的方式,但您仍然需要该 .json 文件来告诉哨兵在哪里查看,这是 sentinel.json 文件的外观

在此处输入图像描述

于 2019-11-15T14:12:02.420 回答