一般常见问题
有关 IBM Cloud Schematics 的常见问题解答如下。
什么是 IBM Cloud Schematics?它是如何运作的?
IBM Cloud Schematics 提供强大的工具,使您的云基础设施配置和管理流程自动化。 以及云资源的配置、操作和应用工作负载的部署。
为此,Schematics 使用开放式源代码项目,例如 Terraform,Ansible,Red Hat OpenShift,Operators 和 Helm,并将这些功能作为受管服务提供给您。 而不是在系统上安装每个开放式源代码项目,而是学习 API 或 CLI。 您可以声明要在 IBM Cloud 中运行的任务,并观看 Schematics 为您运行这些任务。
有关 Schematics 如何工作的更多信息,请参阅 关于 IBM Cloud Schematics。
什么是基础架构即代码?
基础架构即代码 (IaC) 可以帮助您对云环境进行编码,以便可以在云中自动供应和管理资源。 使用高级脚本语言指定资源及其配置,而不是手动调配和配置基础设施资源或使用脚本调整云环境。 然后,使用 Terraform 等工具,通过其 API 在云中调配资源。 基础架构代码的处理方式与应用程序代码的相同,因此您可以应用 DevOps 核心实践,例如版本控制、测试和持续监视。
使用 Schematics 需要付费吗?
IBM Cloud Schematics 工作空间免费提供。 但是,当您决定在 IBM Cloud 中应用 Terraform 模板时,请单击工作区详细信息页面中的 Apply plan
或运行 ibmcloud schematics apply
命令,您将为 Terraform 模板中描述的云资源付费。 请查看即将创建的每个资源的可用服务套餐和定价信息。 某些服务随附取决于 IBM Cloud 帐户的限制。 如果您即将达到帐户的服务限制,那么在您增加服务配额或首先除去现有服务之前,不会供应资源。
Schematics ibmcloud terraform
命令的使用会显示警告和弃用信息,如 Alias Terraform are deprecated. Use schematics or sch
出现在您的命令中。
如何在操作之间保存文件?
Schematics 在操作和工作空间操作期间持久存储写入路径 /tmp/.schematics
的文件。 在工作空间上运行下一个操作时,这些文件将复原到同一路径。 文件大小限制为10MB。
由于从工作空间或操作 (Ansible) 模板存储库中除去或缺少文件而导致作业失败
导入或克隆 Schematics 中的文件后,Git 模板库中的文件被删除或丢失,从而导致工作失败。
文件在执行时丢失可能有几个原因:
- 文件可通过文件系统
symlinks
引用到资源库中的不同文件或文件夹,或外部文件系统。 - 回购内容已作为
TGZ
上传,Git 子模块或symlinks
引用的文件未包含在TGZ
中。 - Schematics 认为这些文件是易受攻击的或恶意的。
使用Terraform或 Ansible 模板库删除的文件
为了保护用户免受恶意攻击,Schematics 会从用户克隆的 Git 存储库中删除可能影响服务安全或完整性的文件。 此举旨在保护用户免受未经授权的模块或运行的影响,以免影响服务。 打包为压缩文件的文件,例如 zip
或 tar
文件,会自动从用户资源库中排除。 tar
文件内容未经检查。 同样,模板库不支持(允许)使用大于 500KB 的文件,典型的 IaC 配置文件大小为KB。
如果需要处理文件,可以在运行时将文件导入到 Schematics,导入到 /tmp
,或者保存在 /tmp/.schematics
中。 只有小于10MB的文件才能在两次任务运行之间保留。
创建 Schematics 工作空间或操作 IBM Cloud Schematics 时,会从 Git 存储库克隆 Terraform 或 Ansible 模板的副本并将其存储在安全位置。 在保存模板文件之前,Schematics 会分析被视为恶意或易受攻击的内容和文件。 允许列表仅允许授权文件。 文件除去基于以下条件:
- 允许的文件扩展名为
.cer, .cfg, .conf, .crt, .der, .gitignore, .html, .j2, .jacl, .js, .json, .key, .md, .netrc, .pem, .properties, .ps1, .pub, .py, .service, .sh, .tf, .tf.json, .tfvars, .tmpl, .tpl, .txt, .yaml, .yml, .zip, _rsa, license
。 - 允许的映像扩展为
.bmp, .gif, .jpeg, .jpg, .png, .so .tif, .tiff
。 - 明确删除的文件是
.asa, .asax, .exe, .php5, .pht, .phtml, .shtml, .swf, .tfstate, .tfstate.backup, .xap, .zip, .tar
。 - 将除去所有大于 500 KB 的文件。 此文件限制不适用于允许的图像文件类型。
- 如果文件夹名称以(句点)
.
开头,则会被视为恶意文件并删除。
在每个发行版中持续监视和更新允许的扩展列表。 您可以使用向列表添加文件扩展名的理由提出 支持凭单。
Git 存储库中是否支持使用 symlinks
?
不支持在执行时在 Git 存储库中使用文件系统 symlinks
。 在作业执行时,Schematics 不会在克隆的 Git 存储库中遍历 symlinks
。
在创建工作区或操作时,使用 symlinks
引用允许克隆的存储库中的可变文件或 Ansible 剧本。
Git 存储库或TGZ文件是否支持使用 Git 子模块?
仅支持将 Git 子模块用于克隆的 Git 存储库。 当 Schematics 克隆 Git 存储库时,将导入 Git 子模块。 当资源包以TGZ文件的形式上传时,Schematics 不会使用克隆操作,并且 Git 子模块引用的文件或文件夹也不会被包含在内。 使用 TGZ 文件时,Git 子模块或 symlinks
所需的所有文件都必须包含在 TGZ 中。
是否存在速率限制?
IBM Cloud Schematics 支持每分钟,每个区域和每个用户 50 个 API 请求。 区域为 us-east
,us-south
,eu-gb
或 eu-de
。 等待再次调用命令。
为什么作业在运行队列中等待?
IBM Cloud Schematics 将所有用户作业排队到单个队列中。 根据用户的工作量和运行作业的时间,用户可能会遇到延迟。 有关更多信息,请参阅 作业队列状态。
如果使用客户机标识 bx
,如何生成 IAM 访问令牌?
要创建 IAM 访问令牌,请使用 export IBMCLOUD_API_KEY=<ibmcloud_api_key>
并运行命令。
curl -X POST "https://iam.cloud.ibm.com/identity/token" -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=urn:ibm:params:oauth:grant-type:apikey&apikey=$IBMCLOUD_API_KEY" -u bx:bx.
有关更多信息,请参阅 IAM 访问令牌 和 创建 API 密钥。 您可以设置环境值 export ACCESS_TOKEN=<access_token>
和 export REFRESH_TOKEN=<refresh_token>
。
如何纠正克隆 Git 仓库失败的问题,因为可能找不到远程引用或头部或主版本,很可能传递了无效的分支名称?
2020年10月1日后使用分支 https://github.com/guruprasad0110/tf_cloudless_sleepy_13/
存储库时,会出现此错误信息。
如果在 1 2020 年 10 月之后创建存储库,那么主分支语法需要为 https://github.com/username/reponame/tree/main
。 例如, https://github.com/guruprasad0110/tf_cloudless_sleepy_13/tree/main
能否延长空执行和远程执行资源的超时时间?
不,null-exec( null_resources
)和remote-exec资源的最大超时时间为 60 minutes
。 需要将较长的作业分解为较短的块,以更快地供应基础结构。 否则,执行将在 60 minutes
之后自动超时。
如何通过 Terraform 模块保存用户定义文件,并在多个 Terraform 命令中使用?
IBM Cloud Schematics 已经存储并安全管理了Terraform引擎在 工作区中生成的状态文件。会定期将状态文件保存在安全的位置。Schematics Schematics 此外,在执行 Schematics 作业或运行计划、应用、销毁、刷新或导入等 Terraform 命令之前,会自动恢复状态文件。
通过相同的方式,IBM Cloud Schematics 支持存储由 Terraform 模板或模块生成的用户定义的文件。Schematics 期望用户定义的 Terraform 模板或模块生成文件并将其放置在预定义的位置。Schematics 会在运行 Schematics 作业或 Terraform 命令之前和之后自动保存和复原这些作业。
您的文件必须放在 /tmp/.schematics
文件夹中,并且限制设置为 10 MB
。Schematics 备份并复原 /tmp/.schematics
文件夹中的所有文件。
如何确定将已删除的资源与 Terraform 状态同步的最佳方法?
目前,IBM Cloud Schematics 服务不支持将云资源状态导入或同步到 Schematics 工作区。 它是在未来的路线图中规划的。
如何克服任何地区账户集群资源配额超过“100”的要求?
Error: Request failed with status code: 403, ServerErrorResponse: {"incidentID":"706efb2c-3461-4b9d-a52c-038fda3929ea,706efb2c-3461-4b9d-a52c-038fda3929ea","code":"E60b6","description":"This request exceeds the 'Cluster' resource quota of '100' for the account in this region. Your account already has '100' of the resource in the region, and the request would add '1'. Revise your request, remove any unnecessary resources, or contact IBM support to increase your quota.","type":"General"}
超过此区域中帐户的 Cluster
资源配额 100
时,您会看到此配额验证错误。 您可以考虑删除现有资源,然后重试运行操作。
在创建 Red Hat OpenShift 或 Kubernetes 资源时,我可以将90分钟的时间限制调高吗?
是,可以增加 Red Hat OpenShift 或 Kubernetes 资源的超时。 更多信息,请参阅 ibm_container_vpc_cluster 提供了以下t配置选项。
如何在验证全局目录帐户中的位置时纠正 403 错误?
您可以在帐户的目录设置中验证位置或访问权限,以便创建或查看资源。 更多信息,请参阅 全球目录中的管理位置设置。
我是否可以在现有工作程序节点池中创建工作程序节点?
是,您可以通过 Schematics在 Kubernetes 集群中使用 IBM 容器工作程序池资源在现有工作程序节点池中创建或添加工作程序节点。 或者使用 IBM 容器工作程序池区域连接资源的 Terraform。 有关更多信息,请参阅 ibm_container_worker_pool_zone_attachment
。
在何处可以查看 us-south
,us-east
,eu-gb
和 eu-de
区域的公共和专用允许 IP 地址列表?
您可以在 Schematics 允许的 IP 地址 中查看 us-south
,us-east
,eu-gb
和 eu-de
区域的公共和专用允许的 IP 地址列表。
我是否可以手动添加资源,或者直接从服务仪表板中除去资源?
使用 IBM Cloud Schematics 供应资源时,资源的状态会存储在本地 IBM Cloud Schematics 状态文件中。 此状态文件是 IBM Cloud Schematics 的单一事实源,可确定在 IBM Cloud 帐户中供应的资源。 如果在没有 IBM Cloud Schematics 的情况下手动添加资源,则该资源不会存储在 IBM Cloud Schematics 状态文件中,因此无法使用 IBM Cloud Schematics 进行管理。
手动除去使用 IBM Cloud Schematics 供应的资源时,状态文件不会自动更新,并且会变为不同步。 当您创建下一个 Terraform 执行计划或应用新的模板版本时,Schematics 会验证状态文件中的云资源是否存在于您的 IBM Cloud 账户中,并与状态文件中捕获的状态一致。 如果找不到资源,则更新状态文件并更改 Terraform 执行计划。
要保持 IBM Cloud Schematics 状态文件和账户中的云资源同步,请使用 IBM Cloud Schematics 来调配或删除资源。
我可以对我的资源进行哪些更改?
你可以选择通过 GitHub, 添加、修改或删除 Terraform 模板中的基础架构代码,或从 Schematics 工作区仪表板更新变量值。
如何将云资源的所需状态与资源的实际状态进行比较?
创建偏差报告并查看您在 Terraform 配置文件中指定的基础结构与平台服务之间的更改。 您可以使用 Terraform 执行计划。 Terraform 执行计划概述了 Schematics 需要执行哪些操作来供应 Terraform 配置文件中描述的云环境。 这些操作可能包括添加、修改或删除云资源。
哪些偏差是无法检测到的?
- Terraform 执行计划基于在运行第一个 Schematics 应用操作时创建的 Terraform 状态文件。
- 您在其他 Schematics 工作区中通过自动化工具(如
Ansible
或Chef
)配置的资源,如果添加时未使用 Schematics,则不会包含在Terraform执行计划中。
必须如何使用 IBM Cloud Schematics除去资源?
您可以使用 IBM Cloud Schematics 控制台或 CLI 删除用 Schematics 配置的所有资源。 要与 Terraform 模板保持同步,请确保从 Terraform 模板中除去关联的基础结构代码。 这样,当您应用新版Terraform模板时,您的资源就不会被重复添加。
如果我选择直接从资源控制面板删除资源,会发生什么情况?
手动除去使用 IBM Cloud Schematics 供应的资源时,状态文件不会自动更新,并且会变为不同步。 创建下一个 Terraform 执行计划时,或应用新的模板版本。 Schematics 验证状态文件中的云资源是否存在于您的 IBM Cloud 账户中,并捕获状态。 如果未找到资源,则更新状态文件并更改 Terraform 执行计划。
虽然状态文件会在应用云资源的新更改之前更新,但请不要手动从资源控制面板中删除资源,以免出现意外结果。 请改为使用 IBM Cloud Schematics 控制台或 CLI 来除去资源,或者从 Terraform 模板中除去关联的基础架构代码。
Schematics 是否支持 ibmcloud terraform
命令?
从 CLI 发行版 v1.8.0 使用 ibmcloud terraform
命令时,会将警告消息显示为 Alias Terraform are deprecated. Use schematics or sch in your commands
。 有关更多信息,请参阅 CLI 版本历史记录。
我可以通过 Schematics 访问专用网络吗?
是,从 CLI 发行版 v1.8.0 Schematics 支持专用 Schematics 端点访问专用网络。 更多信息,请访问 私人 Schematics 终端。
通过 IBM Cloud Schematics连接到堡垒主机 IP 地址时,如何解决错误消息?
错误
timeout - last error: Error connecting to bastion: dial tcp
2022/03/02 03:59:37 Terraform apply | 52.118.101.204:22: connect: connection timed out
2022/03/02 03:59:37 Terraform apply |
2022/03/02 03:59:37 Terraform apply | Error: file provisioner error
您可以访问 Schematics 工作区,并通过使用专用或公用端点地址,按地区或区域连接到 Bastion 主机 IP。 有关更多信息,请参阅 在防火墙中打开 IBM Cloud Schematics 的 IP 地址。
如何在 IBM Cloud 环境上使用 Terraform 创建集群?
请参阅 单个和多区域 Red Hat OpenShift on IBM Cloud 和 Kubernetes Service 集群 教程。
我是否可以始终设置 Terraform 以使用当前版本或缺省版本?
是的,在有效负载或JSON文件中,如果在运行时未声明 type
和 template_type
参数的值,则使用默认的Terraform版本。 有关更多信息,请参阅 指定 Terraform 的版本约束。 您可以使用 type
或 template_type
参数在有效内容中指定 Terraform 版本。 但是,请检查 type
和 template_type
的版本值是否包含相同的版本。
如果我在 JSON 文件中设置 type: = terraform_v1.4
(如代码块所示),那么即使 Terraform version 2.0
或更高版本发布,Terraform version 1.4
是否也会继续使用?
//Sample JSON file
{
"name": "<workspace_name>",
"type": "terraform_v1.4",
"resource_group": "<resource_group>",
"location": "",
"description": "<workspace_description>",
"template_repo": {
"url": "http://xxxxx.git",
"branch": "main"
},
"template_data": [{
"folder": "",
"type": "terraform_v1.4"
}]
}
否,如果在有效内容或模板中指定了 Terraform 版本,那么在供应期间仅考虑 versions.tf
中指定的版本。 要考虑当前 Terraform 版本,可以将 required_version
参数配置为 required_version = ">=1.4 <2.0"
。 有关更多信息,请参阅 Terraform 的版本约束。
可以在版本参数中仅指定提供程序版本吗? 还是必须在 versions.tf 文件中提供 required_version 参数?
是,您需要指定 version = "x.x.x"
,因为它表示 IBM Cloud 提供者版本。 而 required_version = ">1.4, <2.0"
表示要供应的 Terraform 版本。 有关更多信息,请参阅 Terraform 的版本约束。
如果未在 versions.tf
文件中声明版本参数,那么将在 Schematics中自动使用提供程序插件的当前版本。 有关更多信息,请参阅 Terraform 提供程序的版本约束。
在 Schematics 中,delete 和 destroy 有什么区别?
从工作空间中删除关联的云资源。 删除工作空间用于删除工作空间。 建议先从工作区中删除资源,然后再删除工作区。 有关更多信息,请参阅 删除工作空间
我能否作为一个步骤删除和销毁操作?
什么是资源组,如何帮助我组织团队?
分配对特定 IBM Cloud 服务的访问权是允许用户使用帐户中的特定服务的好方法。 但是,在云中构建生产工作负载时,您很可能拥有多个由不同团队使用的 IBM Cloud 服务和资源。 通过资源组,您可以在帐户中组织多个服务,并将其捆绑在一个公共视图和计费过程中。 要允许您的团队使用这些资源,您可以将 IAM 访问策略分配给允许他们查看和管理资源组中的资源的资源组。
例如,您有一个负责管理 IBM Cloud Kubernetes Service 集群的团队 A 和另一个使用 IBM Cloud® Functions开发无服务器应用程序的团队 B。 两个团队都使用 IBM Cloud Schematics 工作区来管理他们的云资源。 要确保工作空间和资源隔离,请为每个团队创建一个资源组。 然后,将所需的许可权分配给每个资源组。 例如,管理者 服务对资源组 A 中所有工作空间的访问角色,但对资源组 B 中的工作空间的 读者 访问权。
使用 IAM 访问组有什么好处?
为了减少分配给单个用户的 IAM 访问策略的数量,可以为每个团队创建一个 IAM 访问组,并授予该组所有必要的权限来使用资源组中的资源。
下图显示了如何使用IAM访问组和资源组来组织您的 IBM Cloud 账户中的权限。

- 帐户所有者或授权管理员定义团队,并为每个团队创建 IAM 访问组。
- IAM 访问组被分配对特定资源组中的资源的访问权。 例如,访问组 A 接收资源组 A 中所有资源的编辑者许可权,但仅接收资源组 B 中资源的查看者许可权。
- 帐户所有者或授权管理员将用户添加到 IAM 访问组。 所有用户都会自动继承 IAM 访问组的许可权。
创建和限制细粒度经典个人访问令牌 (PAT) 的步骤是什么?
要启动 GitHub API并通过HTTPs建立 Git 连接,并创建快速脚本和测试集成,可使用PAT。 有关更多信息,请参阅 关于 PAT。
GitHub 目前支持两种类型的个人访问令牌,组织所有者可以设置策略,限制个人访问令牌对组织的访问:
- 细颗粒度个人访问令牌
- 个人访问令牌 (经典)。 GitHub 建议您尽可能使用细颗粒度的个人访问令牌,而不是个人访问令牌 (经典)。
以下是创建和限制 PAT 令牌的步骤。
我能否通过 CLI 运行 terraform init -backend-config="KEY=VALUE"
选项?
Schematics 不支持您编辑 Terraform 后端配置。Schematics } 在其自己的 IBM Cloud Object Storage 存储桶中内部管理 状态文件,该文件使用 信封加密 进行加密。
何时指定 GitHub 主分支或子目录分支?
创建工作空间
在工作空间创建页面中,针对 Repository URL
。 该链接可以指向 master
分支、其他任何分支或子目录。 在工作空间的“设置”页面上,输入“编辑”图标以编辑 Repository URL
。 有关创建工作空间的更多详细信息,请参阅 创建工作空间。
该链接可以指向 master
分支、其他任何分支或子目录。
master
分支机构示例:https://github.com/myorg/myrepo
- 其他分支机构的例子:
https://github.com/myorg/myrepo/tree/mybranch
- 子目录示例
https://github.com/mnorg/myrepo/tree/mybranch/mysubdirectory
不支持包含 /
(反斜杠)的分支名称。
操作创建
在操作创建页面,URL 可以指向主分支、任何其他分支或子目录。 如果资源库存储了多个游戏本,请选择要运行的游戏本。 Schematics 操作一次只能指向一个游戏本。 有关使用操作的更多详情,请参阅 创建一个 操作来运行多个游戏本,你必须为每个游戏本创建一个单独的操作。
- 主分支示例
https://github.com/myorg/myrepo
- 其他分支机构的范例
https://github.com/myorg/myrepo/tree/mybranch
- 子目录示例 -
https://github.com/mnorg/myrepo/tree/mybranch/mysubdirectory
没有可以使用的游戏本吗? 试用其中一个 样本运行手册。
在工作区设置页面,输入编辑后的图标,即可编辑您的 Repository URL
。 该链接可以指向 master
分支、其他任何分支或子目录。
master
分支机构示例:https://github.com/myorg/myrepo
- 其他分支机构的例子:
https://github.com/myorg/myrepo/tree/mybranch
- 子目录示例
https://github.com/mnorg/myrepo/tree/mybranch/mysubdirectory
是否可以配置 Schematics API 调用的活动性?
通过 Schematics 插件,您可以将 Schematics API 调用的超时配置为 30 seconds
。ibmcloud config --http-timeout
标志。 例如,ibmcloud config --http-timeout=30
。 HTTP 请求的默认值为 60 seconds
。
Schematics 是否支持基于区域的访问?
是,Schematics 支持基于区域的访问。 有关更多信息,请参阅 基于区域的访问,以及 设置基于区域的访问以邀请用户的 步骤。
Workspace and Action是否支持 Secrets Manager?
是的,当您 创建工作区 并 更新输入变量 工作区时,Workspace和Action会支持 Secrets Manager。 此外,您还 可以在创建剧本 和 编辑动作设置 时设置 Secrets Manager。
您可以输入个人访问令牌,也可以使用 Open reference picker
中的 Secrets Manager 选择您的 Secrets Manager 密钥参考。 更多信息,请参阅 创建 Secrets Manager 实例。 Secrets Manager 的关键值在运行时用于从 Git 存储库克隆模板。
eval
和 uname
命令限制对现有脚本和自动化有何影响?
如果您的脚本或自动化工作流程依赖于 eval
或 uname
命令,则在 2025 年 4 月 16 日后会失效。 您需要修改脚本,删除或用其他方法替换这些命令。
有哪些替代解决方案可以取代 eval
和 uname
命令?
eval
,而不是使用条件语句、参数替换或内置命令执行方法等更安全的方法来执行命令。 相反,
uname
使用预定义的环境变量或 IBM Cloud 提供的系统元数据服务来检索必要的系统信息。 如果您有问题、意见或疑虑,可以随时通过 IBM Cloud® 支持 与团队联系。
使用 eval
命令的示例
command="ls -l /home/user"
eval $command
不含 eval
命令的示例
command="ls -l /home/user"
$command
eval
和 uname
命令的更改是否会影响 Schematics 中 Terraform 的执行?
除非脚本或模块明确使用 eval
或 uname
等命令,否则 Terraform 的执行不会产生直接影响。 如果明确使用,则必须进行 修改。