使用 Oracle Cloud Infrastructure 命令行界面管理 Oracle Exadata Database Service on Cloud@Customer

简介

Oracle Cloud Infrastructure 命令行界面 (OCI CLI) 是用于管理 OCI 中资源的绝佳工具,包括 Oracle Exadata Database Service on Cloud@Customer 资源。OCI CLI 支持您轻松、高效地编排和自动执行 OCI 操作。在 OCI REST API 上调用 OCI CLI 时,这意味着 OCI CLI 和 OCI REST API 兼容,尽管语法不同。您可以在开发 OCI REST API 自动化过程中使用 OCI CLI 进行试错,然后轻松部署自动化。

这是一个由两部分组成的系列,在此第一部分中,我们将向您介绍 OCI CLI 的基础知识,而在第二部分中,我们将重点介绍特定于 Oracle Exadata Database Service on Cloud@Customer 的命令和工作流。

注:将动态缩放与远程插件一起使用时,还需要使用 OCI CLI,但本教程将不介绍动态缩放本身。

目标

Prerequisites

任务 1:安装 OCI CLI

OCI CLI 构建在适用于 Python 的 OCI 软件开发工具包 (SDK) 上,并在 Mac、Windows 或 Linux 上运行。Python 代码调用 OCI API 以提供为各种服务实施的功能,包括 Oracle Exadata Database Service on Cloud@Customer 和 Oracle Autonomous Database on Exadata Cloud@Customer。

  1. 从此处下载适用于 OS 的 OCI CLI: OCI CLI GitHub 系统信息库

  2. 按照操作系统的安装说明进行操作。

  3. 运行以下命令以验证您的安装。

    $ oci --version
    
  4. 使用设置对话框设置配置,该对话框包含使用 OCI 所需的身份证明。

    $ oci setup config
    
  5. 验证配置文件。

    例如:

    [DEFAULT]
    user=ocid1.user.oc1..<unique_ID>
    fingerprint=<your_fingerprint>
    key_file=~/.oci/oci_api_key.pem
    tenancy=ocid1.tenancy.oc1..<unique_ID>
    # Some comment
    region=us-ashburn-1
    
  6. 运行以下命令检查连接,这将显示租户的名称空间。

    $ oci os ns get
    
  7. 运行以下命令列出可用的区间。

    $ oci iam compartment list
    

    这将生成以下 JSON 响应:

    {
     "data": [
    {
           "compartment-id": "ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx5xlq",
           "defined-tags": {
                     "Oracle-Tags": {
                                    "CreatedBy": "default/some-email@oracle.com",
                                    "CreatedOn": "2023-11-10T13:27:32.885Z"
    }
    },
    "description": "Compartment for Exadata Infrastructure",
    "freeform-tags": {},
    "id": "ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdh7q",
    "inactive-status": null,
    "is-accessible": null,
    "lifecycle-state": "ACTIVE",
    "name": "ExaInfra",
    "time-created": "2023-11-10T13:27:32.945000+00:00"
         }
         ]
    }
    

    注:请注意,输出已被截断,以仅显示第一个区间。

  8. 运行以下命令以列出区间中的所有工作请求。

    $ oci work-requests work-request list --compartment-id ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdh7q
    

使用输出格式来过滤和格式化命令输出以满足您的需求

正如您在前面的示例中所看到的,OCI CLI 命令的 JSON 响应可能非常广泛、难以遵循并且不易阅读。

例如,在 Linux 中的命令提示符下,您可以始终将输出管道传输到像 grep 这样的电源工具来过滤响应。

使用以下命令列出特定区间中的所有 VM 集群并筛选 id

$ oci db vm-cluster list --compartment-id <OCID> | grep \"id\"

这将生成以下响应:

"id":"ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq"
"id":"ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz5ra"

但是,OCI CLI 使用 --query 参数内置了查询功能,您可以在其中指定要查询的字段。

  1. 使用 --query 参数运行以下命令。

    $ oci db vm-cluster list --compartment-id <OCID> --query "data[].[\"id\"]"
    

    JSON 响应将为:

    [
         [
    "ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq"
         ],
         [
    "ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz5ra"
          ]
    ]
    
  2. 您可以轻松地在 --query 之后指定其他字段,以构建更复杂的查询。

    $ oci db vm-cluster list --compartment-id <OCID> --query "data[].[\"hostname\" , \"id\"]"
    

    JSON 响应将为:

    [
         [
    "fraexaclu1-uvlkz",
    "ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq"
         ],
         [
    "fraexaclu2-2uyfk",
    "ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz5ra"
         ]
        ]	
    
  3. 可以使用 --output 表参数获取更用户友好的输出。

    $oci db vm-cluster list --compartment-id <OCID> --query "data[].[\"hostname\" , \"id\"]" --output table
    

    响应为:

    +----------------------------------------------------------------------------------------------------------------------+
    | Column1          |  Column2                                                                                          |
    +----------------------------------------------------------------------------------------------------------------------+
    | fraexaclu1-uvlkz | ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq |
    | fraexaclu2-2uyfk | ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz5ra |
    +------------------+---------------------------------------------------------------------------------------------------+
    
  4. 还可以使用 --query 参数指定列的标题。

    $ oci db vm-cluster list --compartment-id <OCID> --query "data[].{\"Hostname\" : \"hostname\" , \"OCID\" : \"id\" }" --output table
    

    响应为:

    +----------------------------------------------------------------------------------------------------------------------+
    | Hostname          | OCID                                                                                             |
    +----------------------------------------------------------------------------------------------------------------------+
    | fraexaclu1-uvlkz | ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx2tkq |
    | fraexaclu2-2uyfk | ocid1.vmcluster.oc1.eu-frankfurt-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz5ra |
    +------------------+---------------------------------------------------------------------------------------------------+
    

    注:了解与 --query 参数一起使用的语法与 JSON 响应之间的相关性非常重要。list 等 OCI CLI 子命令通常会返回许多结果,而 get 等 OCI CLI 子命令仅返回一个结果。

    • 其中,JSON 响应显示数据是 [ 指定的 listarray

      [opc@jens-oci-1 ~]$ oci db vm-cluster list
      {
           "data": [
                {
      

      查询语法如下所示:

      --query "data[].[ field1 , field2 ]"
      
    • 其中 JSON 响应显示数据是单个对象。

      [opc@jens-oci-1 ~]$ oci db vm-cluster get
      {
           "data": {
      

      然后,get 命令的语法如下所示:

      --query "data.[ field1 , field2 ]"
      

使用输入帮助简化 OCI CLI 的使用

在 OCI CLI 中,您可以通过多种不同的方式获取即时和自动化用例的输入帮助。

确认

更多学习资源

通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心