IBM Cloud Docs
使用 CLI 回滚更新

使用 CLI 回滚更新

本教程将指导您使用 CLI 回滚部署。 完成本教程后,您将学会如何将已部署的更改还原到项目中的可部署架构配置。 本教程结束时,您的可部署架构配置将与上次成功部署的版本相匹配。

想象一下,你是 Example Corp 企业的软件开发人员。 您的基础架构架构师发现了 Code Engine 可部署架构的云自动化,您的云自动化工程专业人员对其进行了定制,以充分满足您的业务需求。 您在两个地区部署了名为 Example Corp's infrastructure 的定制架构。 然后,您的云自动化工程专业人员发布了 Example Corp's infrastructure 的新版本,因此您更新了正在运行的部署以使用最新版本。 最近,您的团队在 us-south 区域发现了一个错误。 该错误是新出现的,因此您想将 us-south 区域的部署回滚到之前的状态,因为您知道该部署不包括该错误。

本教程使用一个虚构的场景,帮助您了解如何将已部署的更改回滚到项目中的可部署架构配置。 在完成本教程的过程中,请根据贵组织的需求调整每个步骤。

准备工作

  1. 创建一个名为Example Corp's infrastructure 并将其添加到名为 Example Corp catalog

  2. 使用名为 Example Corp infrastructure 的项目 将 Example Corp 的基础设施部署到两个区域。

  3. 用私有目录中的新版本更新示例公司的基础架构,并添加两个数据库选项供用户选择。 验证私有目录中的版本,以便新版本位于 Validated draft 状态。

  4. 更新项目 以使用 Example Corp's infrastructure 的最新版本,并部署更改。

    Example Corp's infrastructure 的最新版本包含可从 Example Corp infrastructure 项目部署的数据库选项。 除了 example-corp-us-south 配置外,完成本教程不会影响项目中的任何内容。 如果需要,可以单独撤销部署项目中的其他配置,包括任何数据库。

  5. 要完成本教程,请 安装 IBM Cloud CLI

查找项目 ID、配置 ID 和要恢复的版本

在运行 CLI 命令将更改恢复到先前部署的版本之前,您需要 example-corp-us-south 配置的 ID 和包含该配置的 Example Corp infrastructure 项目的 ID。

要使用 CLI 查找这些 ID 和版本,请运行以下命令:

  1. 运行以下命令登录 IBM Cloud ibmcloud login 命令登录。 如果您有多个账户,系统会提示您选择使用哪个账户:

    ibmcloud login \
        --sso
    

    使用 --sso 选项通过控制台登录。 如果这样做,控制台就会在网络浏览器中打开,供您登录。 然后,系统会生成一个代码,供您粘贴到 CLI 中。

  2. 运行以下命令,在您的账户中找到 Example Corp infrastructure 项目的 ID ibmcloud project list 命令:

    ibmcloud project list \
        --all-pages
    

    使用 --all-pages 选项检索账户中的所有项目。

  3. 使用 Example Corp infrastructure 项目 ID 和配置名称查找配置 ID。 运行以下 ibmcloud project configs 命令来执行:

    ibmcloud project configs \
        --project-id <Example-Corp-infrastructure-project-id> \
        --all-pages
    
  4. 使用 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

复制输出 JSONdefinition 块的内容,并将其保存到 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 命令:

  1. 运行以下命令验证 example-corp-us-south ibmcloud project config-validate 命令进行验证:

    ibmcloud project config-validate \
        --project-id <Example-Corp-infrastructure-project-id> \
        --id <example-corp-us-south-id>
    
  2. 运行以下命令批准 example-corp-us-south ibmcloud 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>
    
  3. 运行以下命令部署 example-corp-us-south ibmcloud 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 发布更新。