HashiCorp 发布了一系列针对 Terraform 和 Terraform Cloud 的改进。Terraform Cloud 提供了一个新的CI/CD管道集成工具。Terraform 为 Azure Kubernetes Service 增加了对Azure Linux容器主机的支持。HashiCorp Terraform AWS Provider 5.0发布,改进了对默认标记的支持。
新的 CI/CD 管道工具有一个相关的命令行工具,叫作 tfci。这个工具通过 API 调用自动运行 Terraform Cloud,并支持可以嵌入到 CI 工具中的 Terraform Cloud 操作。tfci 提供的命令包括:通过 Terraform Cloud Run ID 显示运行详情、执行新的计划运行、在计划确认后继续执行暂停的任务,以及返回计划详情。
除了 tfci,还有为GitHub Actions和GitLab CI提供的模板。这些模板包含用户在使用 tfci 时可能需要配置的常见操作。例如,下面的代码片段是在 GitHub Actions 中使用 tfci 执行计划的部分内容:
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 }}
HashiCorp 还增加了在 Azure Kubernetes Service 上部署 Azure Linux 容器主机的支持。微软最近提供了Azure Linux容器主机(之前的 Mariner OS)的一般可用性。Azure Linux 被设计成一个最小化的、云优先的 Linux 发行版。
这些更新包含在azurerm Terraform Provider中。要在 AKS 上配置 Azure Linux 容器主机,可以将 os_sku 设置为 Mariner:
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" }}
HashiCorp Terraform AWS Provider 5.0改进了对默认标签的支持,允许在 Provider 级别设置标签。这个更新解决了之前默认标签实现的许多痛点,包括处理不一致的最终计划、默认标签和资源标签之间的相同标签,以及标签配置中的永久差异。
可以使用 default_tags 在 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 的典型功能也被完全移除,因为这些功能早在 2022 年 8 月就被 AWS 弃用了。
CI/CD 管道集成工具和模板对 Terraform Cloud 和 Terraform Enterprise 用户可用。更多细节可以在发布博客和GitHub代码库中找到。Terraform AWS Provider 5.0 提供了一个升级指南,其中包含了有关该版本变更的更多详细信息。
原文链接:
https://www.infoq.com/news/2023/06/hashicorp-azure-linux/
相关阅读:





