Terraform 引入新的 CI/CD 工具,增加对 Azure Linux 的支持

  • 2023-07-04
    北京
  • 本文字数:1695 字

    阅读完需:约 6 分钟

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 ActionsGitLab 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/

相关阅读:

中国企业研发高效能白皮书-CI/CD篇

可观测的崭新进化:加速CI/CD管道的秘密武器

干货 | 携程 Web CI/CD 实践