指定版本约束
使用版本约束来声明要用于 Terraform 模板或 Ansible 运行手册的 Terraform,Terraform 提供程序或 Ansible 版本。
Schematics 同时支持多个映像,每个映像都打包了特定版本的 IBM Cloud 提供程序插件,其他 Terraform 提供程序 (例如 REST API 提供程序) 和 Ansible 可执行文件。 每个映像都由 IBM Cloud进行构建,测试和验证。 针对特定 Terraform CLI 版本对包含的 Terraform 提供程序版本进行测试和打包。
最好通过使用版本约束来声明 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 Registry 远程下载 IBM Cloud 提供程序。
要使用任何预定义的 Schematics 映像,必须在包含所需提供程序版本的 Terraform 模板中显式声明 IBM Cloud 提供程序插件的版本。 有关更多信息,请参阅 指定 Terraform CLI 和 Terraform 提供程序的版本约束。
不能更改 Ansible 可执行文件的缺省版本。 只能 指定引用的 Ansible 角色和集合的版本。
ibmcloud schematics version
Template Type Version
terraform terraform_v1.4
Additional terraform Providers Version
Ansible Provisioner v2.3.3
Red Hat OpenShift client v3.11.0
Provider for REST API v1.10.0
ansible v2.9.23
IBM Cloud Provider v1.38.2
Template Type Version
terraform terraform_v1.5
Additional terraform Providers Version
Ansible Provisioner v2.3.3
IBM Cloud Provider v1.38.2
Provider for REST API v1.10.0
ansible v2.9.23
Red Hat OpenShift client v3.11.0
Template Type Version
terraform terraform_v1.6
Additional terraform Providers Version
IBM Cloud Provider v1.38.2
Red Hat OpenShift client v3.11.0
ansible v2.9.23
Ansible Provisioner v2.3.3
Provider for REST API v1.10.0
Template Type Version
terraform terraform_v1.7
Additional terraform Providers Version
Ansible Provisioner v2.3.3
IBM Cloud Provider v1.38.2
Provider for REST API v1.10.0
ansible v2.9.23
Red Hat OpenShift client v3.11.0
Template Type Version
terraform terraform_v1.8
Additional terraform Providers Version
Red Hat OpenShift client v3.11.0
Provider for REST API v1.10.0
Ansible Provisioner v2.3.3
IBM Cloud Provider v1.38.2
ansible v2.9.23
Template Type Version
terraform terraform_v1.9
Additional terraform Providers Version
ansible v2.9.23
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
OK
指定 Terraform CLI 和 Terraform 提供程序的版本约束
您可以选择使用 Terraform 版本约束来指定 Terraform CLI 版本以及要使用的任何提供程序的版本。 有关如何指定版本约束的更多信息,请参阅 Terraform 文档。
Terraform CLI 的版本约束
创建 Schematics 工作空间并选择 Terraform 版本 (例如 v1.4
) 时,将使用 Schematics中设置的缺省补丁版本来执行 Terraform 模板。 例如,如果选择 terraform_v1.4
,那么将使用 Terraform v0.13.4来应用模板。 您可以使用 provider
定义中的 required_providers
块来强制 Schematics
中的 Terraform 引擎拉取更高版本。
只能指定高于 Schematics中设置的缺省 MAJOR.MINOR.PATH
版本的版本。 在代码块 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 Provider 插件 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.23。 创建 Schematics 操作时,必须确保可以使用此版本运行 Ansible 运行手册。 不能为运行手册指定特定的 Ansible 版本。
但是,如果在运行手册中使用现有 Ansible 角色或集合,那么可以使用 requirements.yml
文件指定要运行的角色或集合的版本。 有关如何在运行手册中引用角色和集合的更多信息,请参阅 在运行手册中引用 Ansible 角色 和 在运行手册中引用 Ansible 集合。
要了解有关如何为角色和集合指定版本的更多信息,请参阅 Ansible 文档。
roles:
- name: andrewrothstein.kubectl
version: 1.1.50