Terraform 新增对 Azure Linux 的支持,并推出全新的 CI/CD 工具

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_skuMariner 来配置 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 的升级指南提供了关于此次更新的更多细节。

阅读 51
0 条评论