Oracle Cloud Infrastructureコマンドライン・インタフェースを使用したOracle Exadata Database Service on Cloud@Customerの管理

はじめに

Oracle Cloud Infrastructureコマンドライン・インタフェース(OCI CLI)は、Oracle Exadata Database Service on Cloud@Customerリソースなど、OCIでリソースを管理するための優れたツールです。OCI CLIを使用すると、OCI操作を簡単かつ効率的に調整および自動化できます。OCI CLIはOCI REST APIを呼び出すため、構文が異なる場合でも、OCI CLIとOCI REST APIに互換性があることを意味します。トライアルとエラーのためにOCI REST API自動化の開発中にOCI CLIを使用し、より少ない労力で自動化をデプロイできます。

これは2つのパート・シリーズで、この最初の部分ではOCI CLIの基本を紹介し、2番目の部分ではOracle Exadata Database Service on Cloud@Customer固有のコマンドおよびワークフローに重点を置いています。

ノート:リモート・プラグインで動的スケーリングを使用する場合は、OCI CLIも必要ですが、動的スケーリング自体についてはこのチュートリアルでは説明しません。

目的

前提条件

タスク1: OCI CLIのインストール

OCI CLIは、Python用のOCIソフトウェア開発キット(SDK)上に構築され、Mac、WindowsまたはLinux上で実行されます。Pythonコードは、Oracle Exadata Database Service on Cloud@CustomerやOracle Autonomous Database on Exadata Cloud@Customerなど、様々なサービスに実装された機能を提供するためにOCI APIを呼び出します。

  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サブコマンドは1つの結果のみを返します。

    • JSONレスポンスでは、データが[で指定されたリストまたは配列であることが示されます。

      [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 Help Centerを参照してください。