申请试用

创建工作空间


通过 IBM Cloud® Schematics 工作空间,您可以管理基于 Terraform 的模板,以创建和管理 IBM Cloud 资源。 工作空间允许您查看和更新配置属性,查看通过工作空间供应的资源列表,以及在需要时清除资源。

 

1、使用 UI 创建工作空间

(1)使用唯一凭证登录到 IBM Cloud 目录 。 


(2)在 软件 部分中,选择 计算 ,然后选择 IBM Spectrum LSF 磁贴


(3)在 配置工作空间 部分中:

  • 指定 Schematics 工作空间的 名称

  • 选择 资源组

  • 定义要与通过产品供应的资源相关联的任何 标记 。 稍后可以使用这些标记来查询 IBM Cloud 控制台中的资源。


(4)在 设置部署值 部分中,指定所需属性的值: api_key, ibm_customer_number, remote_allowed_ips, ssh_key_name和 zone。


(5)展开 具有缺省值的参数 部分,并查看该部分以确定是否需要覆盖为配置属性提供的任何缺省值。


(6)请查看并接受订单摘要中的 IBM Spectrum LSF 许可条款和条件。


(7)单击安装。 将使用您指定的名称创建 Schematics 工作空间。 您可以在 _查看现有安装_中查看工作空间列表。 如果工作空间创建成功,那么将启动 应用计划 操作以触发与 api_key链接的 IBM Cloud 帐户中相应 IBM Cloud VPC 资源的部署。


(8)您还可以通过在 查看现有安装 部分中标识工作空间名称来查看部署过程的状态。 单击 查看现有安装 部分中的记录时,将转至 Schematics 工作空间视图。

 

2、使用 CLI 创建工作空间

 

准备工作

开始之前,请确保已完成 设置 IBM Cloud Schematics CLI中找到的先决条件。


使用 Schematics 时的第一步是使用相应的 Terraform 源代码中定义的特定配置参数创建工作空间。


使用以下 CLI 命令可使用 config.json 文件创建工作空间。 确保 config.json 文件存在于运行该命令的目录中。


ibmcloud schematics workspace new -f hpc_workspace_config.json
 --github-token GITHUB_TOKEN

  

  请注意:--github-token 参数是可选的,仅当您使用专用 Git 存储库时才需要此参数。 如果您正在使用 IBM Cloud 公用 GitHub 存储库,那么无需提供该存储库。

 

列出可用工作空间

您可以使用以下命令列出帐户中的工作空间:


ibmcloud schematics workspace list


包含工作空间详细信息的示例响应:

  

Name                     ID                                                                  Description                 Status         Frozen
spectrum-lsf-test   us-east.workspace.bcc-lsf-test.7cbc3f6b      Sample workspace      INACTIVE       False


正在检索工作空间详细信息

您可以通过运行以下命令来检索现有工作空间的详细信息,包括所有输入变量的值:

  

ibmcloud schematics workspace get --id WORKSPACE_ID [--output 
OUTPUT][--json]


更新工作空间

您可以通过运行以下命令来更新现有工作空间的详细信息,例如工作空间名称,变量或源代码控制 URL:

ibmcloud schematics workspace update --id WORKSPACE_ID --file 
FILE_NAME [--github-token GITHUB_TOKEN]


要供应或修改 IBM Cloud 资源,可以运行命令 ibmcloud schematics plan 命令。 有关更多信息,请参阅 IBM Cloud Schematics CLI 参考。

 

3、使用 API 创建工作空间


准备工作

开始之前,请确保已完成 设置 IBM Cloud Schematics API中找到的先决条件。


(1)要使用 IBM Cloud Schematics Python API 创建工作空间,请创建 Python 文件并提供您选择的名称,例如 schematics_create_workspace.py。


(2)将 使用 Python API 创建 Schematics 工作空间 示例请求复制并粘贴到 Python 文件。


(3)在请求中更改以下参数:

  • 将 IBM Cloud API 密钥替换为 authenticator = IAMAuthenticator('') 变量。

  • 根据您希望 Schematics 工作空间驻留的位置 (例如 schematics_service.set_service_url('https://us.schematics.cloud.ibm.com')) ,将 API 端点更改为 API 端点 中提到的端点。

  • 以键/值对的形式提供要具有的环境值,例如 [{ 'Environment': 'hpc-dev-cluster' }]

  • 将文件夹位置变量 template_source_data_request_model['folder'] 更改为您的 Terraform 文件所在的 GitHub 存储库中的文件夹名称。 如果存储库的基本位置中存在 Terraform 文件,请将此变量设置为 template_source_data_request_model['folder'] = ' '; 否则,请在 template_source_data_request_model['folder'] 变量中提及文件夹名称。

  • 将 template_source_data_request_model['type'] 变量更改为用于创建 IBM Cloud 资源 (例如 terraform_v0.13) 的 Terraform 版本。 确保 Terraform 模板与此字段中提到的版本兼容。

  • 提供 GitHub 或 GitLab 存储库 HTTPS URL ,其中 Terraform 文件位于 template_repo_request_model['url'] 变量中。 如果您正在使用 IBM Cloud提供的 公共存储库 ,请将此变量设置为 template_repo_request_model['url'] = 'https://github.com/IBM-Cloud/hpc-cluster-lsf'; 否则,请将其设置为您正在使用的专用存储库。


(4)在 schematics_service.create_workspace 函数中,提供以下参数:

  • 提供可选描述。

  • 提供用于标识 Schematics 工作空间的名称,例如 terraform-dev-workspace。

  • 将 type 参数更改为要用于创建 IBM Cloud 资源的 Terraform 版本,例如 terraform_v0.13。

  • 将位置更改为需要创建 Schematics 工作空间的区域,例如 us-south。

  • 将资源组更改为应将资源分组到的资源组,例如,缺省资源组的 Default 。

  • 如果您正在使用专用 GitHub 存储库,请在 x_github_token= "" 参数中提供在 设置 IBM Cloud Schematics 先决条件中设置的个人 GitHub 访问令牌。 如果您正在使用 IBM Cloud提供的公共存储库,那么不需要指定此参数。

  • 可选: 如果要使用标记来过滤资源,请提供标记。


(5)通过使用 python3在 IBM Cloud中创建 Schematics 工作空间,运行 Python 脚本。


(6)如果作为请求的一部分传递的参数有效,并且您应该能够看到在 IBM Cloud 控制台中创建的 Schematics 工作空间,那么您将获得成功响应。 如果未获得成功响应,那么错误响应包含需要解决的错误。 解决这些错误并运行脚本,直到您能够获取有效响应并创建工作空间为止。


(7)可选: 如果要在创建工作空间时添加其中一个变量 (例如值为 lsf-test 的 base_name ) ,请提供以下参数中的值:

  workspace_variable_request_model = {}

  workspace_variable_request_model['name'] = 'base_name'

  workspace_variable_request_model['value'] = 'lsf-test'


(8)如果要同时更新多个值,请遵循 使用 Schematics API 更新变量的步骤。


示例 Python 请求

    请注意:Python 请求是一个通用示例。 由于频繁的代码更新,可能会更改版本控制和部署值。

# Create a Schematics workspace using Python APIimport json, loggingfrom ibm_cloud_sdk_core.authenticators import IAMAuthenticatorfrom ibm_schematics.schematics_v1 import SchematicsV1

logging.basicConfig()
logging.root.setLevel(logging.NOTSET)
logging.basicConfig(level=logging.NOTSET)

authenticator = IAMAuthenticator('')

schematics_service = SchematicsV1(authenticator = authenticator)

schematics_service.set_service_url('https://us.schematics.cloud.ibm.com')

template_source_data_request_model = {}
template_source_data_request_model['env_values'] = [
{"name": "TF_CLI_ARGS_plan","value": "-parallelism=250",
},
{"name": "TF_CLI_ARGS_apply","value": "-parallelism=250"}
]
template_source_data_request_model['folder'] = ''template_source_data_request_model['type'] = 'terraform_v0.14.11'template_source_data_request_model['variablestore'] = [
{"name": "ssh_key_name","value": "lsf-bcc-key",
},
{"name": "ibm_customer_number","value": ""}]

template_repo_request_model = {}
template_repo_request_model['url'] = 'https://github.com/
IBM-Cloud/hpc-cluster-lsf'logging.info("Started Creating Schematic Workspace")

workspace_response = schematics_service.create_workspace(
description="HPC Cluster schematic workspace using API",
name="Sample Schematic API workspace",
template_data=[template_source_data_request_model],
template_repo=template_repo_request_model,type=['terraform_v0.14.11'],
location="us-south",
resource_group="Default",
tags=[""]
).get_result()print(json.dumps(workspace_response, indent = 2))


示例 Python 响应


    请注意:Python 响应是一个通用示例。 由于频繁的代码更新,可能会更改版本控制和部署值。


INFO:root:Started Creating Schematic Workspace
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): iam.cloud.ibm.com:443
DEBUG:urllib3.connectionpool:https://iam.cloud.ibm.com:443 "POST /identity/token HTTP/1.1" 200 1086
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): us.schematics.cloud.ibm.com:443
DEBUG:urllib3.connectionpool:https://us.schematics.cloud.ibm.com:443 
"POST /v1/workspaces HTTP/1.1" 201 1974
INFO:root:Completed Creating Schematic Workspace
{"id": "us-south.workspace.Sample-Schematic-API-workspace.341cedd5",
"name": "Sample Schematic API workspace",
"crn": "crn:v1:bluemix:public:schematics:us-south:a/
77efe1030c00b5c89cfd08648d3480bf:6f457fa4-4c59-4a8d-be69-483f16f8f200:
workspace:us-south.workspace.Sample-Schematic-API-workspace.341cedd5",
"type": [
"terraform_v0.14.11"
],
"description": "HPC Cluster schematic workspace using API",
"resource_group": "Default",
"location": "us-south",
"tags": [
""
],
"created_at": "2021-09-15T13:01:19.944980389Z"
,"created_by": "xxxxxx",
"status": "DRAFT",
"failure_reason": "",
"workspace_status_msg": {
"status_code": "",
"status_msg": ""
},
"workspace_status": {
"frozen": false,
"locked": false
},"template_repo": {
"url": "https://github.com/IBM-Cloud/hpc-cluster-lsf",
"commit_id": "",
"full_url": "https://github.com/IBM-Cloud/hpc-cluster-lsf",
"has_uploadedgitrepotar": false
},
"template_data": [
{
"id": "3e68db7f-0bea-4d",
"folder": "",
"compact": false,"type": "terraform_v0.14.11",
"values_url": 
"https://us.schematics.cloud.ibm.com/
v1/workspaces/us-south.workspace.Sample-Schematic-API-workspace.341cedd5/
template_data/3e68db7f-0bea-4d/values","values": "","variablestore": [
{"name": "ssh_key_name",
"secure": false,
"value": "lsf-bcc-key",
"type": "",
"description": ""},
{"name": "ibm_customer_number","secure": true,"value": "","type": "","description": ""}
],"has_githubtoken": false
}
],"runtime_data": [
{"id": "3e68db7f-0bea-4d",
"engine_name": "terraform",
"engine_version": "v0.14.11",
"state_store_url": "https://us.schematics.cloud.ibm.com/
v1/workspaces/us-south.workspace.Sample-Schematic-API-workspace.341cedd5/
runtime_data/3e68db7f-0bea-4d/state_store",
"log_store_url": "https://us.schematics.cloud.ibm.com/v1/workspaces/
us-south.workspace.Sample-Schematic-API-workspace.341cedd5/
runtime_data/3e68db7f-0bea-4d/log_store"
}
],
"shared_data": {
"resource_group_id": ""
},
"applied_shareddata_ids": null,
"updated_at": "0001-01-01T00:00:00Z","
last_health_check_at": "0001-01-01T00:00:00Z",
"cart_id": ""
    }
 INFO:root:Completed Creating Schematic Workspace


后续步骤

成功创建工作空间后,可以开始 生成计划 以验证所有配置属性。