HashiCorp 发布 Terraform 和 Terraform Cloud 新功能
HashiCorp 近期发布了 Terraform 和 Terraform Cloud 的一系列新功能和改进,主要包括 CI/CD 管道集成工具、对 Azure Linux 容器主机的支持,以及 AWS Provider 的版本更新。
CI/CD 管道集成工具
HashiCorp 为 Terraform Cloud 推出了新的 CI/CD 管道集成工具,并提供了一个名为 tfci 的命令行工具。tfci 通过 API 自动化 Terraform Cloud 的运行,并支持将 Terraform Cloud 操作嵌入到 CI 工具中。其主要功能包括:
- 通过 Terraform Cloud Run ID 显示运行详情
- 执行新的计划运行
- 在计划后暂停的确认状态下应用运行
- 返回计划详情
此外,HashiCorp 还提供了针对 GitHub Actions 和 GitLab CI 的模板,展示了如何使用 tfci 配置常见操作。例如,在 GitHub Actions 中,可以使用以下代码片段执行新的计划运行:
runs:
using: docker
image: 'docker://hashicorp/tfci:v1.0.1'
args:
- tfci
## global flags
- -hostname=${{ inputs.hostname }}
- -token=${{ inputs.token }}
- -organization=${{ inputs.organization }}
## command
- run
- create
- -workspace=${{ inputs.workspace }}
- -configuration_version=${{ inputs.configuration_version }}
- -message=${{ inputs.message }}
- -plan-only=${{ inputs.plan_only }}对 Azure Linux 容器主机的支持
HashiCorp 在 Terraform 中添加了对 Azure Kubernetes Service (AKS) 上部署 Azure Linux 容器主机的支持。Azure Linux 是微软推出的最小化、面向云的 Linux 发行版,现已全面可用。通过 azurerm Terraform Provider,用户可以通过设置 os_sku 为 Mariner 来配置 Azure Linux 容器主机:
resource "azurerm_kubernetes_cluster" "default" {
name = "aks-${random_string.suffix.result}"
location = azurerm_resource_group.default.location
resource_group_name = azurerm_resource_group.default.name
kubernetes_version = var.kubernetes_version
dns_prefix = "k8s-${random_string.suffix.result}"
default_node_pool {
name = "default"
node_count = var.aks_node_count
vm_size = var.aks_confidential_computing_enabled ? "Standard_DC2s_v2" : "Standard_D2_v2"
os_sku = "Mariner"
os_disk_size_gb = 50
}
confidential_computing {
sgx_quote_helper_enabled = true
}
identity {
type = "SystemAssigned"
}
tags = {
name = "demo-aks-${random_string.suffix.result}"
environment = "demo"
}
}Terraform AWS Provider 5.0 版本更新
HashiCorp 发布了 Terraform AWS Provider 5.0 版本,改进了默认标签功能,允许在 Provider 级别设置标签。这一更新解决了之前默认标签实现中的多个问题,包括:
- 不一致的最终计划
- 默认标签和资源标签之间的重复
- 标签配置中的永久差异
用户可以通过以下方式在 Provider 级别指定默认标签:
provider "aws" {
default_tags {
tags = {
environment = "Dev"
department = "WebEng"
application = "HashiCafe website"
cost_center = "8675309"
}
}
}
resource "aws_s3_bucket" "example" {
bucket = "example-bucket-aj-11122"
tags = {
environment = "Production"
created_at = timestamp()
}
}此外,该版本还调整了对标记为弃用或删除的属性的处理方式,不再显示警告,而是直接显示不支持的错误。同时,EC2 经典功能已完全移除,因为 AWS 已于 2022 年 8 月弃用该功能。
可用性
CI/CD 管道集成工具和模板适用于 Terraform Cloud 和 Terraform Enterprise 用户。更多详情可参考 发布博客 和 GitHub 仓库。Terraform AWS Provider 5.0 的升级指南提供了关于此次更新的更多细节。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。