日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Terraform代碼開發(fā)方式和建議

Terraform是一個開源的自動化資源編排工具。資源編排服務(wù)ROS(Resource Orchestration Service)為Terraform提供了托管的能力。當(dāng)您了解了Terraform和Terraform托管方式,需要開發(fā)Terraform代碼并在ROS中使用時,可以采用本文介紹的開發(fā)方式和開發(fā)建議。

開發(fā)方式

建議使用熟悉的開發(fā)方式編寫和測試Terraform代碼。您可以采用以下開發(fā)方式:

開發(fā)建議

  • 不建議在.tf文件中聲明阿里云(alicloud)Provider。

    ROS提供了一個默認的阿里云Provider,使用當(dāng)前阿里云賬號的臨時AccessKey(或STS憑證)以及資源棧所屬的地域。使用默認Provider的優(yōu)點如下:

    • 簡化開發(fā),提升安全性,降低訪問密鑰(AccessKey)泄露的風(fēng)險。

    • 保證資源與資源棧所屬賬號和地域相同,以便進行統(tǒng)一管理和集成。

    • 當(dāng)資源與資源棧所屬賬號和地域相同時,更有效地支持詢價、系統(tǒng)標簽、傳遞資源棧用戶標簽、傳遞資源棧所屬資源組、風(fēng)險檢查等功能。

      說明
      • 當(dāng)資源與資源棧組所屬賬號和地域不同時,在部分情況下支持詢價、系統(tǒng)標簽、傳遞資源棧用戶標簽和風(fēng)險檢查功能。

      • 當(dāng)資源與資源棧組所屬地域不同時,在部分情況下支持傳遞資源棧所屬資源組功能。

  • 把僅供本地使用的代碼放入以.debug.tf結(jié)尾的文件。

    在Terraform托管中,ROS會忽略以.debug.tf結(jié)尾的文件,不參與Terraform編排。但在本地測試時,會參與Terraform編排。例如:您可以編寫一個名為provider.debug.tf的文件,對阿里云Provider進行配置。在本地開發(fā)時,該文件中配置會生效,資源會創(chuàng)建在中國香港(cn-hongkong)地域。但在ROS中創(chuàng)建資源棧時,ROS會忽略該文件,資源會創(chuàng)建在資源棧所屬地域。provider.debug.tf文件內(nèi)容如下:

    variable "region" {
      type = string
      default = "cn-hongkong"
    }
    provider "alicloud" {
      region ="${var.region}"
    }
  • 建議指定Provider版本。

    從1.0版本(Aliyun::Terraform-v1.0)開始,Terraform托管支持連續(xù)的Provider版本。通過指定Provider版本,可以防止Provider更新引入問題,保障穩(wěn)定性。代碼示例如下:

    terraform {
      required_providers {
        alicloud = {
          source  = "aliyun/alicloud"
          version = "1.140.0"
        }
      }
    }

    關(guān)于Provider版本的更多信息,請參見ROS版本支持情況Provider版本列。

  • 建議使用Aliyun::Terraform-v1.0及其以上版本。

    Aliyun::Terraform-v0.12和Aliyun::Terraform-v0.15版本僅作兼容性維護,Provider的版本及功能不再更新。

  • 不建議使用.tfvars文件,而是通過ROS參數(shù)傳遞變量值。

    其優(yōu)點如下:

    • 減少模板的修改次數(shù)。大部分情況下,只需要修改參數(shù)值。

    • 變量與ROS參數(shù)一一對應(yīng),在控制臺清晰可見。如果使用.tfvars文件,可能覆蓋變量值,造成實際值與控制臺顯示值不一致。

    更多信息,請參見Parameters(可選)

  • 通過偽參數(shù)獲取資源棧信息。

    更多信息,請參見Parameters(可選)。例如:在.tf文件中定義變量ALIYUN__Region,通過var.ALIYUN__Region訪問,即可獲取資源棧所屬地域。代碼示例如下:

    variable "ALIYUN__Region" {
      type = string
      default = "cn-hongkong"
    }
  • 細化變量定義。

    ROS會自動把Terraform變量轉(zhuǎn)換成ROS參數(shù),細化變量定義會使得ROS轉(zhuǎn)換的結(jié)果更為準確。更多信息,請參見Parameters(可選)

    • 為變量設(shè)置type字段,否則ROS可能會將變量當(dāng)作字符串類型處理,并傳遞給Terraform,Terraform在編排時可能出現(xiàn)變量類型錯誤。

    • 如果參數(shù)包含敏感信息,在其對應(yīng)的變量中將sensitive設(shè)置為true。

      variable "password" {
        type = string
        sensitive = true
      }
  • 使用Metadata控制參數(shù)(變量)在控制臺的顯示。

    • 為參數(shù)分組:更多信息,請參見元數(shù)據(jù)(Metadata)使用Metadata為參數(shù)分組

    • 隱藏參數(shù):使用Metadata.ALIYUN::ROS::Interface.Hidden指定需要隱藏的參數(shù)列表。

      ROSTemplateFormatVersion: '2015-09-01'
      Description: Creates a simple oss bucket
      Parameters:
        BucketName:
          Type: String
          Label: Bucket Name
          Description:
            en: Bucket name
            zh-cn: Bucket名稱
          Default: bucketName1
      Metadata:
        ALIYUN::ROS::Interface:
          Hidden:
            - BucketName
      Workspace: ...
    • 參數(shù)約束查詢:使用.metadata文件中ALIYUN::ROS::Interface字段的ResourcesForParameterConstraints設(shè)置參數(shù)約束。更多信息,請參見手動配置Terraform類型模板的參數(shù)約束查詢

  • 控制參數(shù)(變量)在控制臺的輸入方式。

    • 在ROS參數(shù)中,通過AssociationProperty和AssociationPropertyMetadata可以自動驗證參數(shù)值的合法性,并且給參數(shù)提供取值信息。更多信息,請參見AssociationProperty和AssociationPropertyMetadata在資源編排控制臺動態(tài)選擇參數(shù)配置

    • 在Terraform變量中,通過description字段控制AssociationProperty和AssociationPropertyMetadata。更多信息,請參見Parameters(可選)。代碼示例如下:

      variable "vpc_id" {
        type = string
        description = <<EOT
        {
          "AssociationProperty": "ALIYUN::ECS::VPC::VPCId",
          "Description": {
            "en": "Please search the ID starts with (vpc-xxx)from console-Virtual Private Cloud",
            "zh-cn": "在專有網(wǎng)絡(luò)控制臺的專有網(wǎng)絡(luò)頁面查看專有網(wǎng)絡(luò)ID。"
          },
          "Label": {
            "en": "Existing VPC ID",
            "zh-cn": "現(xiàn)有專有網(wǎng)絡(luò)ID"
          }
        }
        EOT
      }