指定版本限制
使用版本限制來宣告您希望在 Terraform 範本或 Ansible 劇本中使用的 Terraform、Terraform 提供者或 Ansible 版本。
Schematics 並行支援多個映像檔,每個映像檔都包裝特定版本的 IBM Cloud 提供者外掛程式、其他 Terraform 提供者 (例如 REST API 提供者) 以及 Ansible 執行檔。 每一個映像檔都由 IBM Cloud建置、測試及驗證。 隨附的 Terraform 提供者版本會針對特定的 Terraform CLI 版本進行測試及包裝。
最好使用版本限制來宣告 Terraform 範本或 Ansible 教戰手冊所需的版本。 這樣,您可以確保範本和教戰手冊繼續運作,即使 Terraform、Terraform 提供者或 Ansible 發佈可能導致重大變更的新版本也一樣。
Schematics 映像檔及套裝 Terraform 提供者的概觀
使用 ibmcloud schematics version 指令,可檢視 Schematics 中的映像清單,以及各映像中封裝的 Terraform 提供者與 Ansible 可執行檔的版本資訊。 例如,在以下 CLI 輸出中,IBM Cloud 提供者外掛程式的最新版本已於 Terraform v1.1 進行測試。
Schematics 在其映像檔中支援 5 個最新版本的 IBM Cloud Provider Plug-in for Terraform 二進位檔。 如需相關資訊,請參閱 最新版本。 以下是在 Terraform 範本中使用 IBM Cloud 提供者時必須遵循的一些限制。
建議使用 Terraform v1.0 或更高版本。
- 如果您使用 Terraform v0.13 或更新版本,則可以任意選擇範本中任何版本的 IBM Cloud 提供者。 然後,Schematics 會自動從本端快取或遠端從 HashiCorp 配置語言(HCL)Terraform 登錄 下載 IBM Cloud 提供者。
若要使用任何預先定義的 Schematics 映像檔,您必須在 Terraform 範本中明確宣告 IBM Cloud Provider 外掛程式的版本,並包含您所需的提供者版本。 如需相關資訊,請參閱 指定 Terraform CLI 和 Terraform 提供者的版本限制。
您無法變更「Ansible」可執行檔的預設版本。 您只能 指定所引用的 Ansible 角色和集合的版本。
ibmcloud schematics version
Template Type Version
terraform terraform_v1.4
Additional terraform Providers Version
Red Hat OpenShift client v3.11.0
Provider for REST API v1.10.0
ansible v2.9.27
Ansible Provisioner v2.3.3
IBM Cloud Provider v1.38.2
Template Type Version
terraform terraform_v1.5
Additional terraform Providers Version
IBM Cloud Provider v1.38.2
Ansible Provisioner v2.3.3
Red Hat OpenShift client v3.11.0
Provider for REST API v1.10.0
ansible v2.9.27
Template Type Version
terraform terraform_v1.6
Additional terraform Providers Version
Ansible Provisioner v2.3.3
IBM Cloud Provider v1.38.2
Red Hat OpenShift client v3.11.0
Provider for REST API v1.10.0
ansible v2.9.27
Template Type Version
terraform terraform_v1.7
Additional terraform Providers Version
Provider for REST API v1.10.0
ansible v2.9.27
IBM Cloud Provider v1.38.2
Red Hat OpenShift client v3.11.0
Ansible Provisioner v2.3.3
Template Type Version
terraform terraform_v1.8
Additional terraform Providers Version
ansible v2.9.27
IBM Cloud Provider v1.38.2
Ansible Provisioner v2.3.3
Red Hat OpenShift client v3.11.0
Provider for REST API v1.10.0
Template Type Version
terraform terraform_v1.9
Additional terraform Providers Version
ansible v2.9.27
Ansible Provisioner v2.3.3
IBM Cloud Provider v1.38.2
Red Hat OpenShift client v3.11.0
Provider for REST API v1.10.0
Template Type Version
terraform terraform_v1.10
Additional terraform Providers Version
IBM Cloud Provider v1.38.2
Red Hat OpenShift client v3.11.0
Provider for REST API v1.10.0
Ansible Provisioner v2.3.3
ansible v2.9.27
Template Type Version
terraform terraform_v1.11
Additional terraform Providers Version
IBM Cloud Provider v1.38.2
Red Hat OpenShift client v3.11.0
Provider for REST API v1.10.0
ansible v2.9.27
Ansible Provisioner v2.3.3
Template Type Version
terraform terraform_v1.12
Additional terraform Providers Version
ansible v2.9.27
Ansible Provisioner v2.3.3
Red Hat OpenShift client v3.11.0
IBM Cloud Provider v1.38.2
Provider for REST API v1.10.0
Template Type Version
terraform terraform_v1.13
Additional terraform Providers Version
ansible v2.9.27
Ansible Provisioner v2.3.3
Red Hat OpenShift client v3.11.0
IBM Cloud Provider v1.38.2
Provider for REST API v1.10.0
Template Type Version
terraform terraform_v1.14
Additional terraform Providers Version
ansible v2.9.27
Ansible Provisioner v2.3.3
Red Hat OpenShift client v3.11.0
IBM Cloud Provider v1.38.2
Provider for REST API v1.10.0
OK
指定 Terraform CLI 和 Terraform 提供者的版本限制
您可以選擇使用 Terraform 版本限制來指定 Terraform CLI 版本以及您要使用之任何提供者的版本。 如需如何指定版本限制的相關資訊,請參閱 Terraform 文件。
Terraform CLI 的版本限制
當您建立 Schematics 工作區並選擇 Terraform 版本(例如 v1.4 )時,您的 Terraform 範本將使用 Schematics 中設定的預設修補程式版本來執行。 舉例來說,若您選擇「terraform_v1.4」,系統將透過 Terraform 的 v0.13.4 來套用您的範本。 您可以在 provider 定義中使用 required_providers 區塊,以強制 Schematics 中的 Terraform 引擎拉取較新版本。
您只能指定高於 Schematics中所設定預設 MAJOR.MINOR.PATH 版本的版本。 在 codeblock version = "x.x.x" 中,表示 IBM Cloud 提供者版本。
terraform {
required_providers {
version = "1.39.1"
}
}
您可以在 Terraform 配置檔中指定高於預設 MAJOR.MINOR.PATH 的 Terraform required_versions。 在程式碼區塊中,required_version = ">=1.0.0, <2.0" 表示 Terraform 版本。
terraform {
required_version = ">=1.0.0, <2.0"
required_providers {
ibm = {
source = "IBM-Cloud/ibm"
}
}
}
Terraform 提供者的版本限制
若要使用任何預先定義的 Schematics 映像檔,您必須在 Terraform 範本中明確宣告包含所需提供者版本的 IBM Cloud 提供者外掛程式版本。
若您的 Terraform 範本中未宣告 IBM Cloud 提供者外掛程式的版本,系統將自動在 Schematics 中使用該提供者外掛程式的最新版本。
指定預先定義 Schematics 映像檔的範例:
下列範例顯示如何使用針對 IBM Cloud 提供者外掛程式 v1.39.1建置的 Schematics 映像檔。 此映像檔包括其他提供者的特定版本,例如 REST API 提供者。
terraform {
required_providers {
ibm = {
source = "IBM-Cloud/ibm"
version = "v1.39.1"
}
}
使用特定 Terraform 提供者版本的範例:
若要使用不同的 IBM Cloud 提供者外掛程式版本,或將 Terraform 配置檔固定至另一個外部提供者的特定版本,例如 AWS、Helm 或 Kubernetes,請使用下列語法。
terraform {
required_providers {
ibm = {
source = "IBM-Cloud/ibm"
version = "~> 1.38.1"
}
aws = {
version = ">= 2.7.0"
source = "hashicorp/aws"
}
}
在 Ansible 中指定版本限制
Schematics 目前僅支援最新版 Ansible ( v2.9.27 )。 當您建立 Schematics 動作時,必須確保 Ansible 教戰手冊可以與此版本一起執行。 您無法為教戰手冊指定特定的 Ansible 版本。
不過,如果您在教戰手冊中使用現有的 Ansible 角色或集合,則可以使用 requirements.yml 檔案來指定您要執行的角色或集合版本。 如需如何在教戰手冊中參照角色及集合的相關資訊,請參閱 教戰手冊中的參照 Ansible 角色 及 教戰手冊中的參照 Ansible 集合。
若要進一步瞭解如何指定角色及集合的版本,請參閱 Ansible 文件。
roles:
- name: andrewrothstein.kubectl
version: 1.1.50