使用 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 发布更新。