IBM Cloud Docs
创建工作空间并导入 Terraform

创建工作空间并导入 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 模板来创建工作空间。

准备工作

在创建或更新 Schematics 工作空间和操作时,请确保 locationurl 端点指向同一区域。 有关位置和端点的更多信息,请参阅 信息存储位置?

使用用户界面创建工作区

  1. 登录 IBM Cloud控制台
  2. 单击菜单图标汉堡包图标>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 时,表示用户可以具有 Terraform v1.5.0v1.5.1v1.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 将根据可用性确定位置。 如果选择大城市,那么将在此位置创建工作空间。 有关数据存储位置的更多信息,请参阅 信息存储位置? 您选择的地点与您想要配置云资源的区域无关。 控制台不支持所有可用位置。 要在其他位置创建工作空间,请改为使用 CLIAPI
      • 可选,请为您的工作区输入一个描述性名称。
      • 单击 Next
    • 单击 Create。 将创建处于 草稿 状态的工作空间,并且将打开工作空间的“设置”页面。

导入 Terraform 模板

如果要上载磁带归档文件 (.tar) 而不是将工作空间导入到 Git 存储库,那么必须使用 ibmcloud schematics workspace upload 命令并查看 将 tar 文件上载到工作空间 API。

  1. 在工作空间的“设置”页面上,输入“编辑”图标以编辑 Repository URL。 该链接可以指向 master 分支、其他任何分支或子目录。

    • master 分支的示例:https://github.com/myorg/myrepo
    • 其他分支的示例:https://github.com/myorg/myrepo/tree/mybranch
    • 子目录示例:https://github.com/mnorg/myrepo/tree/mybranch/mysubdirectory
  2. 如果您想使用私人 Git 资料库,请输入您的个人访问令牌。 个人访问令牌用于通过您的 Git 存储库进行身份验证,以访问您的Terraform模板。 您可以点击 Open reference picker 来选择您的 Secrets Manager 密钥参考。 更多信息,请参阅 为命令行创建个人访问令牌。 为了安全验证和克隆模板,您可以点击 Open reference picker 选择您的 Secrets Manager 密钥参考。 更多信息,请参阅 创建 Secrets Manager 实例

  3. 选择要写入 Terraform 配置文件的 Terraform version

  4. 点击复选框 I understand the changes that could happen if I edit this URL and I agree to these happening 选项。

  5. 单击 保存。IBM Cloud Schematics 会自动从存储库下载 Terraform 配置文件,扫描它们以查找语法错误,并检索您在配置文件中声明的所有输入变量。 成功下载所有配置文件并且未找到语法错误时,工作空间状态将更改为 不活动

    扫描 Terraform 配置文件后,可以在工作空间的“活动”页面上查看结果。 在源存储库中扫描的文件总数显示为 scanned。 易受攻击的文件 (例如不受支持的文件扩展名) 总数显示为 discarded。 单击 作业 以查找已扫描和废弃的文件的详细信息。 有关查看日志的更多信息,请参阅 查看 Schematics 作业详细信息

  6. 查看 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 创建工作空间

  1. 在本地工作站上创建 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.5terraform_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 命令
  2. 创建工作空间。

    ibmcloud schematics workspace new --file workspace.json
    
  3. 请确认您的工作区已创建。 确保工作空间处于 不活动 状态。

    ibmcloud schematics workspace list
    
  4. 请参阅 《 使用 Schematics 管理云资源 》,了解如何使用Terraform更新或删除云资源。

使用 API 创建工作空间

  1. 执行 步骤 以检索 IAM 访问令牌并使用 API 向 IBM Cloud Schematics 进行认证。

  2. 使用 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.5terraform_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 命令
  3. 确认工作区已成功创建。

    curl -X GET https://schematics.cloud.ibm.com/v1/workspaces -H "Authorization: <iam_access_token>"
    
  4. 请通过 Schematics 管理云资源,更新或删除云资源。

使用 Terraform 创建工作空间

  1. 遵循 为 Schematics 中的步骤以使用 Terraform 创建工作空间。

  2. 请通过 Schematics 管理云资源,更新或删除云资源。

后续步骤

使用工作区的下一阶段是 部署工作区