Terraform
实施策略
Sentinel 是一种嵌入式代码即策略框架,与各种 HashiCorp 产品集成。它能够实现细粒度的、基于逻辑的策略决策,并可使用来自外部的信息。HCP Terraform 允许用户将 Sentinel 策略作为运行工作流程的一部分实施。
策略由以下内容组成
- 以代码形式定义的策略控制。
- 一个执行级别,用于确定在策略失败时运行行为。
策略集是策略及其执行级别的命名分组。要将策略应用于工作区及其运行,必须先将其添加到策略集中。每个策略集可以应用于特定的工作区,或组织内的所有工作区。策略集是策略和工作区之间的映射。
在本教程中,您将在版本控制系统 (VCS) 中定义一个策略集,然后将其连接到 HCP Terraform,以验证 Terraform 版本是否为 1.1.0 或更高版本。
先决条件
本教程假定您熟悉 HCP Terraform,并且您已配置了具有 AWS 访问凭据的现有 HCP Terraform 工作区。
如果未配置,请参阅从 VCS 更改触发 HCP Terraform 运行和创建一个变量集教程以获取指导。
您必须是“所有者”团队的一员,或者具有“管理策略”组织级权限才能创建新的策略集和策略。
Fork GitHub 存储库
要创建策略集,您需要一个 VCS 存储库来托管策略配置。Fork 示例强制策略存储库。
在存储库中,您将找到两个文件 — sentinel.hcl 和 allowed-terraform-version.sentinel。
探索一个策略集
sentinel.hcl 定义了策略集。此配置声明了一个名为 allowed-terraform-version 的策略,并设置了软强制执行级别。您可以在 sentinel.hcl 文件中定义多个 policy 块以配置更多策略。
sentinel.hcl
policy "allowed-terraform-version" {
enforcement_level = "soft-mandatory"
}
强制执行级别确定策略失败时操作是否可以继续。Sentinel 提供三种强制执行级别
硬性强制 要求策略通过。如果策略失败,运行将停止。您必须解决失败才能继续。
软性强制 允许组织所有者或具有覆盖权限的用户在失败时继续运行。HCP Terraform 会记录所有覆盖操作。
建议性 会通知您策略失败,但会继续执行操作。
探索策略
allowed-terraform-version.sentinel 定义了在策略集中声明的策略。Sentinel 代码文件必须遵循 \ 的命名约定。
当 Terraform 版本为 1.1.0 及更高版本时,此策略将通过并返回 true 的值。 您可以通过将表达式更改为 version.new(tfplan.terraform_version).less_than("1.1.0") 或更改括号中的版本来试验此策略并触发失败。
allowed-terraform-version.sentinel
import "tfplan"
import "version"
main = rule {
version.new(tfplan.terraform_version).greater_than("1.1.0")
}
将策略连接到 HCP Terraform
在使用它之前,您需要将您的策略集连接到您的 HCP Terraform 组织。导航到您组织的 设置,然后导航到 策略集 页面。
单击 连接新的策略集 按钮。
- 选择 版本控制系统 (VCS) 提供商 作为策略集来源。
- 点击 Next(下一步)。
在 配置设置 页面上完成以下步骤
- 选择 Sentinel 作为策略框架。
- 在 策略集名称 中输入 "learn-terraform-enforce-policies"。
- 在 策略范围 下,选择 对选定的项目和工作区强制执行策略。
- 指定您希望此策略集应用于的工作区。 如果您是从之前的教程继续,请使用您的
learn-hcp-terraform工作区。 - 点击 Next(下一步)。
在 连接到 VCS 提供商 页面上完成以下步骤
- 选择 Github 作为 VCS 提供商
- 选择您分叉的
learn-terraform-enforce-policies仓库 - 点击 Next(下一步)。
在 参数 页面上,单击 连接策略集 以完成策略集的设置。
这会创建一个策略集,用于检查指定工作区的 Terraform 版本是否为 1.1.0 或更高版本。
创建策略集后,HCP Terraform 会显示您的策略集摘要。
现在您已创建策略集并将其与工作区关联,请导航到 learn-hcp-terraform 工作区,并从 操作 菜单中选择 启动新运行。选择 仅计划 选项,然后单击 启动运行。
现在运行中包含一个额外的策略检查步骤,显示策略已通过。

现在您已完成教程,可以选择销毁工作区。
下一步
在本教程中,您创建并使用了一个策略检查来验证每次运行前的 Terraform 版本。
在下一个教程中,您将学习如何启用并将成本估算集成到策略中。HCP Terraform 的成本估算功能可帮助您管理基础设施支出。
要了解有关策略的更多信息,请参阅 HCP Terraform Sentinel 文档。