创建工作空间并导入 Terraform
使用 Schematics 通过 Terraform 来管理 IBM Cloud Schematics 资源。 工作空间设置定义要使用的 Git 存储库中托管的 Terraform 引擎以及用于定制模板的任何输入变量。
IBM Cloud Schematics 不推荐使用旧版本的 Terraform。 有关更多信息,请参阅 在 IBM Cloud Schematics。
IBM Cloud Schematics 不推荐使用 2024 年 4 月 2nd 周的 IBM Cloud Provider Plug-in for Terraform v1.2和 v1.3 模板来创建工作空间。
准备工作
- 创建Terraform配置,并将配置存储在
GitHub
、GitLab
或Bitbucket
存储库中。 您还可以从本地工作站上载磁带归档文件 (.tar
),以向 IBM Cloud Schematics提供模板。 有关更多信息,请参阅ibmcloud schematics workspace upload
命令,并参阅 将tar
文件上载到工作空间 API。 - 请确保您有创建工作区的 权限。
在创建或更新 Schematics 工作空间和操作时,请确保 location
和 url
端点指向同一区域。 有关位置和端点的更多信息,请参阅 信息存储位置?
使用用户界面创建工作区
- 登录 IBM Cloud控制台。
- 单击菜单图标
>Platform Automation>Schematics>Terraform>Create workspace。
- 在 指定模板 部分中:
-
GitHub, GitLab, 或
Bitbucket
URL ——<provide your Terraform Git repository URL
。 -
个人访问令牌-
<leave it blank>
。您可以点击Open reference picker
选择您的 Secrets Manager 密钥参考。 更多信息,请参阅 创建 Secrets Manager 实例。 -
Terraform 版本-
terraform_v1.4
。您需要选择 Terraform V 1.4 或更高版本。 例如,如果使用 Terraform v1.4创建 Terraform 模板,请选择Terraform version
参数作为 terraform_v1.4。 您可以选择Terraform_v1.5
以使用 Terraform V 1.5,选择terraform_v1.4
以使用 Terraform V 1.4。 当您指定terraform_v1.5
时,表示用户可以具有 Terraformv1.5.0
,v1.5.1
或v1.5.7
等。 Schematics 支持Terraform_v1.x
,还计划在 HashiCorp 配置语言 (HCL) 发行版的30 to 45 days
之后提供发行版。Schematics 通过
Terraform_v1.6
支持Terraform v1.4
的当前发行版。 Terraform 必须使用版本约束,例如>
,>=
或~>
作为 Terraform 的required_version
,以自动选取当前版本。terraform { required_version = "~> 1.1" }
-
单击
Next
。
-
- 在 “工作区”的“详细信息”部分。 输入您的
workspace name
名称。 该名称最多可以为 128 个字符,可包含字母数字字符、空间、短划线和下划线。- 工作空间名称 为
schematics-agent-service
。 - 标记 为
my-tags
。 可选:输入工作空间的标记。 您可以使用标签,以便日后更快地找到您的工作区。 - 资源组 作为
default
或此工作空间的其他资源组。 - 位置 作为此工作空间的
North America
或其他 区域。 确定要在何处创建工作空间? 该位置确定 Schematics 作业的运行位置? 以及工作空间数据的存储位置? 您可以在位置 (例如北美) 或地铁城市 (例如法兰克福或伦敦) 之间进行选择。 如果选择位置,那么 Schematics 将根据可用性确定位置。 如果选择大城市,那么将在此位置创建工作空间。 有关数据存储位置的更多信息,请参阅 信息存储位置? 您选择的地点与您想要配置云资源的区域无关。 控制台不支持所有可用位置。 要在其他位置创建工作空间,请改为使用 CLI 或 API。 - 可选,请为您的工作区输入一个描述性名称。
- 单击
Next
。
- 工作空间名称 为
- 单击
Create
。 将创建处于 草稿 状态的工作空间,并且将打开工作空间的“设置”页面。
- 在 指定模板 部分中:
导入 Terraform 模板
如果要上载磁带归档文件 (.tar
) 而不是将工作空间导入到 Git 存储库,那么必须使用 ibmcloud schematics workspace upload
命令并查看 将 tar 文件上载到工作空间 API。
-
在工作空间的“设置”页面上,输入“编辑”图标以编辑
Repository URL
。 该链接可以指向master
分支、其他任何分支或子目录。master
分支的示例:https://github.com/myorg/myrepo
- 其他分支的示例:
https://github.com/myorg/myrepo/tree/mybranch
- 子目录示例:
https://github.com/mnorg/myrepo/tree/mybranch/mysubdirectory
-
如果您想使用私人 Git 资料库,请输入您的个人访问令牌。 个人访问令牌用于通过您的 Git 存储库进行身份验证,以访问您的Terraform模板。 您可以点击
Open reference picker
来选择您的 Secrets Manager 密钥参考。 更多信息,请参阅 为命令行创建个人访问令牌。 为了安全验证和克隆模板,您可以点击Open reference picker
选择您的 Secrets Manager 密钥参考。 更多信息,请参阅 创建 Secrets Manager 实例。 -
选择要写入 Terraform 配置文件的
Terraform version
。 -
点击复选框
I understand the changes that could happen if I edit this URL and I agree to these happening
选项。 -
单击 保存。IBM Cloud Schematics 会自动从存储库下载 Terraform 配置文件,扫描它们以查找语法错误,并检索您在配置文件中声明的所有输入变量。 成功下载所有配置文件并且未找到语法错误时,工作空间状态将更改为 不活动。
扫描 Terraform 配置文件后,可以在工作空间的“活动”页面上查看结果。 在源存储库中扫描的文件总数显示为
scanned
。 易受攻击的文件 (例如不受支持的文件扩展名) 总数显示为discarded
。 单击 作业 以查找已扫描和废弃的文件的详细信息。 有关查看日志的更多信息,请参阅 查看 Schematics 作业详细信息。 -
查看 Terraform 模板的缺省输入变量值。 要更改输入变量值,请从“工作空间操作”菜单中单击 编辑。 根据变量使用的数据类型,必须输入特定格式的值。请参阅下表以查找每种受支持数据类型的示例值。
类型 示例 | --- | -- | |
number
| 4.56 | |string
| 示例值 | |bool
| false | |map(string)
| {key1 = "value1", key2 = "value2"} | |set(string)
| ["hello","he"] | |map(number)
| {internal = 8080, external = 2020} | |list(string)
| ["us-south","eu-gb"] | |list
| ["value",30] | |list(list(string))
|:[{internal = 8300 external = 8300 protocol ="tcp"
},{internal = 8301 external = 8301 protocol ="ldp"
}] : list (object ({internal = number external = number protocol = string})): [{internal = 8300 external = 8300 protocol ="tcp"
} {internal = 8301 external = 8301 protocol ="ldp"
}]|
在 IBM Cloud 中使用 Terraform 模板
您可以 使用 Schematics 管理云资源,通过 Terraform 开始创建、更新或删除云资源。
使用 CLI 创建工作空间
-
在本地工作站上创建 JSON 文件并添加工作空间配置。 有关创建工作空间时的更多配置选项,请参阅
ibmcloud schematics workspace new
命令。要使用代理程序创建工作空间,请参阅 ibmcloud schematics workspace new with Agent 命令。
{ "name": "<workspace_name>", "type": [ "<terraform_version>" ], "location": "<location>", "description": "<workspace_description>", "tags": [], "template_repo": { "url": "<github_source_repo_url>" "branch": "master" }, "template_data": [ { "folder": ".", "type": "<terraform_version>", "variablestore": [ { "name": "<variable_name1>", "value": "<variable_value1>", "type": "string", "secure": true }, { "name": "<variable_name2>", "value": "<variable_value2>", "type": "bool", "secure": false } ] } ] }
JSON 文件组成部分描述 参数 描述 workspace_name
输入工作空间的名称。 字符限制的最大长度设置为 1 MB。 有关更多信息,请参阅设计工作空间结构。 terraform_version
要用于运行 Terraform 代码的 Terraform 版本。 要使用 Terraform version 1.4
,请输入terraform_v1.4
以及类似的terraform_v1.5
和terraform_v1.6
。 确保 Terraform 配置文件与您指定的 Terraform 版本兼容。 如果未指定 Terraform 变量版本。缺省情况下,Schematics 从模板中选择版本。location
输入您要创建工作区的位置。 该位置确定 Schematics 操作的运行位置以及工作空间数据的存储位置。 该位置独立于要在其中创建 IBM Cloud 服务的区域。 description
输入工作空间的描述。 github_source_repo_url
输入存储Terraform配置文件GitHub 或 GitLab 存储库URL。 如果您选择在没有 GitHub的情况下创建工作区,则工作区将以草稿状态创建。 为了将您的工作区连接到 GitHub,您必须使用 ibmcloud schematics workspace update
命令。variable_name
可选,输入您在Terraform配置文件中声明的输入变量的名称。 variable_type
可选,输入输入变量的数据类型。 有关受支持的数据类型,请参阅 ibmcloud schematics workspace new
命令。 -
创建工作空间。
ibmcloud schematics workspace new --file workspace.json
-
请确认您的工作区已创建。 确保工作空间处于 不活动 状态。
ibmcloud schematics workspace list
-
请参阅 《 使用 Schematics 管理云资源 》,了解如何使用Terraform更新或删除云资源。
使用 API 创建工作空间
-
执行 步骤 以检索 IAM 访问令牌并使用 API 向 IBM Cloud Schematics 进行认证。
-
使用 Terraform 创建工作空间。
curl --request POST --url https://schematics.cloud.ibm.com/v1/workspaces -H "Authorization: <iam_access_token>" -d '{"name": "<workspace_name>","type": ["<terraform_version>"],"location": "<location>","description": "<description>","template_repo": {"url": "<github_source_repo_url>"},"template_data": [{"folder": ".","type": "<terraform_version>","variablestore": [{"value": "<variable_value>","name": "<variable_name>","type": "<variable_type>","secure": true}]}]}'
JSON 文件组成部分描述 参数 描述 iam_access_token
输入在步骤 1 中检索到的 IAM 访问令牌。 workspace_name
输入工作空间的名称。 字符限制的最大长度设置为 1 MB。 有关更多信息,请参阅设计工作空间结构。 terraform_version
要用于运行 Terraform 代码的 Terraform 版本。 输入 terraform_v1.4
以使用 Terraform V 1.4以及类似的terraform_v1.5
和terraform_v1.6
。 确保 Terraform 配置文件与您指定的 Terraform 版本兼容。 如果未指定 Terraform 变量版本,那么缺省情况下,Schematics 从模板中选择版本。location
输入您要创建工作区的位置。 该位置确定 Schematics 操作的运行位置以及工作空间数据的存储位置。 该位置独立于要在其中创建 IBM Cloud 服务的区域。 description
输入工作空间的描述。 github_source_repo_url
输入存储Terraform配置文件GitHub 或 GitLab 仓库URL variable_name
可选,输入您在Terraform配置文件中声明的输入变量的名称。 variable_value
可选,输入输入变量的值。 variable_type
可选,输入输入变量的数据类型。 有关受支持的数据类型,请参阅 ibmcloud schematics workspace new
命令。 -
确认工作区已成功创建。
curl -X GET https://schematics.cloud.ibm.com/v1/workspaces -H "Authorization: <iam_access_token>"
-
请通过 Schematics 管理云资源,更新或删除云资源。
使用 Terraform 创建工作空间
-
遵循 为 Schematics 中的步骤以使用 Terraform 创建工作空间。
-
请通过 Schematics 管理云资源,更新或删除云资源。
后续步骤
使用工作区的下一阶段是 部署工作区。