使用 CLI 回滚更新
本教程将指导您使用 CLI 回滚部署。 完成本教程后,您将学会如何将已部署的更改还原到项目中的可部署架构配置。 本教程结束时,您的可部署架构配置将与上次成功部署的版本相匹配。
想象一下,你是 Example Corp 企业的软件开发人员。 您的基础架构架构师发现了 Code Engine 可部署架构的云自动化,您的云自动化工程专业人员对其进行了定制,以充分满足您的业务需求。 您在两个地区部署了名为 Example Corp's infrastructure 的定制架构。 然后,您的云自动化工程专业人员发布了 Example Corp's infrastructure 的新版本,因此您更新了正在运行的部署以使用最新版本。
最近,您的团队在 us-south 区域发现了一个错误。 该错误是新出现的,因此您想将 us-south 区域的部署回滚到之前的状态,因为您知道该部署不包括该错误。
本教程使用一个虚构的场景,帮助您了解如何将已部署的更改回滚到项目中的可部署架构配置。 在完成本教程的过程中,请根据贵组织的需求调整每个步骤。
准备工作
-
创建一个名为
Example Corp's infrastructure并将其添加到名为Example Corp catalog。 -
使用名为
Example Corp infrastructure的项目 将 Example Corp 的基础设施部署到两个区域。 -
用私有目录中的新版本更新示例公司的基础架构,并添加两个数据库选项供用户选择。 验证私有目录中的版本,以便新版本位于
Validated draft状态。 -
更新项目 以使用
Example Corp's infrastructure的最新版本,并部署更改。Example Corp's infrastructure的最新版本包含可从Example Corp infrastructure项目部署的数据库选项。 除了example-corp-us-south配置外,完成本教程不会影响项目中的任何内容。 如果需要,可以单独撤销部署项目中的其他配置,包括任何数据库。 -
要完成本教程,请 安装 IBM Cloud CLI。
查找项目 ID、配置 ID 和要恢复的版本
在运行 CLI 命令将更改恢复到先前部署的版本之前,您需要 example-corp-us-south 配置的 ID 和包含该配置的 Example Corp infrastructure 项目的 ID。
要使用 CLI 查找这些 ID 和版本,请运行以下命令:
-
运行以下命令登录 IBM Cloud
ibmcloud login命令登录。 如果您有多个账户,系统会提示您选择使用哪个账户:ibmcloud login \ --sso使用
--sso选项通过控制台登录。 如果这样做,控制台就会在网络浏览器中打开,供您登录。 然后,系统会生成一个代码,供您粘贴到 CLI 中。 -
运行以下命令,在您的账户中找到
Example Corp infrastructure项目的 IDibmcloud project list命令:ibmcloud project list \ --all-pages使用
--all-pages选项检索账户中的所有项目。 -
使用
Example Corp infrastructure项目 ID 和配置名称查找配置 ID。 运行以下ibmcloud project configs命令来执行:ibmcloud project configs \ --project-id <Example-Corp-infrastructure-project-id> \ --all-pages -
使用
Example Corp infrastructure项目的 ID 和example-corp-us-south配置的 ID 查找项目中该配置的版本。 运行以下ibmcloud project config-versions命令:ibmcloud project config-versions \ --project-id <Example-Corp-infrastructure-project-id> \ --id <example-corp-us-south-id>应列出
example-corp-us-south配置的两个版本。 版本二处于deployed状态,而版本一处于superseded状态。 最早的版本是部署的第一个版本。 该版本就是你要回滚到的版本。
读取要回滚到的版本
现在,您已经有了要回滚到的 ID 和版本,运行以下 ibmcloud project config-version 命令来获取 example-corp-us-south 的特定版本。 确保包含以 JSON 格式返回输出结果的参数:
ibmcloud project config-version \
--project-id <Example-Corp-infrastructure-project-id> \
--id <example-corp-us-south-id> \
--version 1 \
--output json
复制输出 JSON 中 definition 块的内容,并将其保存到 definition.json 文件中。 definition 的内容包括您提供的输入值、用于授予项目访问权限以将其部署到目标账户的授权、配置名称以及 Example Corp's infrastructure 的定位器 ID(用于在专用目录中标识可部署架构)。 例如,将其视为 example-corp-us-south 第 1 版的快照,其中包含您在项目中提供的所有输入和信息:
{
"authorizations": {},
"compliance_profile": {},
"description": "",
"inputs": {
"prefix": "us-south",
"region": "us-south"
},
"locator_id": "<Example-Corp-catalog-locator-id>",
"name": "example-corp-us-south",
"environment_id": "<Example-Corp-infrastructure-dev-id>"
}
更新配置以使用上一版本的定义
现在您已获得 example-corp-us-south 第 1 版的定义,请更新配置以使用该定义。 这将更新 example-corp-us-south,使其与部署版本 1 时的配置完全一致。 运行以下 ibmcloud project config-update 命令 example-corp-us-south:
ibmcloud project config-update \
--project-id <Example-Corp-infrastructure-project-id> \
--id <example-corp-us-south-id> \
--definition "$(cat definition.json)"
验证、批准和部署更改
现在,example-corp-us-south 已更新为使用第一版配置的定义,是时候验证、批准和部署更改了。 您可以 使用控制台进行操作,也可以运行以下 CLI 命令:
-
运行以下命令验证
example-corp-us-southibmcloud project config-validate命令进行验证:ibmcloud project config-validate \ --project-id <Example-Corp-infrastructure-project-id> \ --id <example-corp-us-south-id> -
运行以下命令批准
example-corp-us-southibmcloud project config-approve命令:ibmcloud project config-approve \ --project-id <Example-Corp-infrastructure-project-id> \ --id <example-corp-us-south-id> \ --comment <Rolling back to the previously deployed version> -
运行以下命令部署
example-corp-us-southibmcloud project config-deploy命令:ibmcloud project config-deploy \ --project-id <Example-Corp-infrastructure-project-id> \ --id <example-corp-us-south-id>
部署成功完成后,example-corp-us-south 现在会恢复到您从项目中部署的该配置的第一个版本。 您的团队现在可以调查该错误,并在必要时向 Example Corp's infrastructure 发布更新。