Oracle Cloud Infrastructure 명령행 인터페이스를 사용하여 Cloud@CustomerOracle Exadata Database Service on Cloud@Customer의 Oracle Exadata Database Service 관리

소개

OCI CLI(Oracle Cloud Infrastructure Command Line Interface)는 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를 사용하여 체험판 및 오류를 생성한 후 적은 노력으로 자동화를 배포할 수 있습니다.

이 두 부분 시리즈로, 첫 번째 부분에서는 OCI CLI의 기본 사항을 소개하고 두 번째 부분에서는 Oracle Exadata Database Service on Cloud@Customer 특정 명령 및 워크플로우에 대해 자세히 다룹니다.

주: OCI CLI는 원격 플러그인에서 동적 스케일링을 사용할 때도 필요하지만 이 자습서에서는 동적 스케일링 자체에 대해 다루지 않습니다.

목표

필수 조건

작업 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. OCI CLI GitHub 저장소에서 OS용 OCI CLI를 다운로드합니다.

  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 응답에서 데이터가 [으로 지정된 list 또는 array임을 표시하는 경우

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

      그런 다음 query 구문은 다음과 유사합니다.

      --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를 참조하십시오.