OCI Cloud Shell: 브라우저 기반 가상 터미널

OCI Cloud Shell: 브라우저 기반 가상 터미널

OCI 브라우저 기반 가상 터미널

2020년 2월 11일 OCI(Oracle Cloud Infrastructure)는 Cloud Shell을 새롭게 공개했습니다. Cloud Shell은 OCI Console(OCI 관리 콘솔)에서 실행되는 브라우저 기반 터미널입니다. OCI Cloud Shell은 GCP의 Google Cloud Shell, Azure의 Cloud Shell 및 AWS의 Session Manager와 같은 서비스입니다. OCI Cloud Shell를 이용하면 PuTTY를 사용하지 않고 OCI VM 인스턴스에 접속하거나 별도의 소프트웨어와 계정 설정 작업 없이 즉시 OCI CLI와 같은 툴을 사용할 수 있습니다.

Cloud Shell 과금정책과 사용 권한

OCI Cloud Shell은 Free 서비스입니다. 서비스 비용이 발생하지 않습니다. OCI Cloud Shell은 현재 유료 Tenancy와 Free Trial(Always Free) 모두 이용 가능합니다. 추가로 OCI 사용자가 Cloud Shell을 사용하기 위해서는 OCI 사용자 그룹에 다음 Policy Statement가 설정돼야 합니다. OCI Cloud Shell 권한 부여 Policy Statement는 다음과 같습니다.

allow group <GROUP-NAME> to use cloud-shell in tenancy

위 Policy Statment가 적용된 OCI 사용자 그룹의 OCI 사용자는 OCI Cloud Shell을 사용할 수 있습니다. 이 권한을 갖는 OCI 사용자가 OCI Console에 로그인하면, Console 오른쪽 위 메뉴에 Cloud Shell 아이콘이 나타납니다. 이 Cloud Shell 아이콘을 클릭하면 OCI Consle 아래쪽에 Cloud Shell이 열립니다.

Cloud Shell은 브라우저 기반 리눅스 접속 터미널입니다. Cloud Shell은 OCI가 OCI 사용자에게 제공하는 리눅스 VM에 접속합니다. Cloud Shell이 접속한 리눅스 VM은 현재 OCI Console이 사용하고 있는 Region을 터미널 세션 환경 변수로 설정합니다. OCI CLI와 같은 툴이 실행될 때, 이 환경 변수를 사용합니다. 그리고 별도 설정 없이 바로 OCI CLI를 실행할 수 있습니다.

Cloud Shell 창 크기는 브라우저 전체로 확대할 할 수 있습니다.

Cloud Shell 특징과 제약

OCI Cloud Shell의 주요 특징은 다음과 같습니다.

  • 리눅스 배포판: Oracle Linux Server release 7.7
  • OCI Cloud Shell은 VM 형태로 제공1
  • CPU 타입 (#Core): AMD EPYC 7551 32-Core Processor (1 Core)로 추정2
  • OCI Tenancy(계정)의 사용자는 OCI Console(OCI 관리 콘솔)에 로그인
  • OCI CLI 및 Terraform, SQL*Plus와 같은 개발자 도구가 설치되어 있음
  • 사용자 별로 5GB의 영구 저장소를 사용할 수 있고, 이 곳에 파일을 저장 가능.
  • Cloud Shell에서 인터넷에 접속할 수 있음(Public IP를 가진 OCI Compute에 ssh)

2020년 3월 6일 현재 OCI Cloud Shell에는 다음과 같은 제약이 있습니다.

  • 세션은 최대 유지 시간은 24시간
  • OCI Cloud Shell을 20분간 사용하지 않으면 세션 종료
  • OCI Cloud Shell에 할당된 5GB 스토리지를 반년 동안 사용하지 않으면 메일 통지되고 60일 이내에 스토리지가 제거됨
    • 최대 8개월간 사용되지 않으면 5GB 스토리지에 저장된 데이터는 유실될 수 있음
  • 외부에서 Cloud Shell에 ssh 접속할 수 없음

OCI Cloud Shell 둘러보기

OCI Cloud Shell을 주요 특징을 살펴보겠습니다.

1. OCI Cloud Shell 시작

OCI Console에서 Cloud Shell 아이콘을 클릭하면 현재 사용 중인 Region이 활성화된 Cloud Shell이 브라우저에 열립니다. Cloud Shell의 입력 프롬프트를 보면 현재 리전이 활성화된 것을 확인할 수 있습니다.

Cloud Shell의 오른쪽 위 메뉴 창에는 창 크기를 조절하는 아이콘과 재접속, 종료 아이콘이 있습니다. 20분간 Cloud Shell을 사용하지 않으면 세션은 종료됩니다.

Cloud Shell 세션이 종료되면 해당 세션 설정은 초기화됩니다. 아래 이미지는 test 변수를 터미널에서 설정한 후 재접속하여 이전 변수를 확인하는 테스트입니다. 이전 세션 설정은 초기화됨을 알 수 있습니다.

2. Cloud Shell 설치 소프트웨어

OCI Cloud Shell에는 다음과 같은 소프트웨어가 기본 설치되어 있습니다. 소프트웨어 설치 버전은 2020년 3월 6일 기준입니다. 시점에 따라서 달라질 수 있습니다.

Software 버전
ansible ansible 2.8.4
Docker Docker version 19.03.1-ol
helm v3.0.1
Git git version 1.8.3.1
gradle Gradle 6.0
Java OpenJDK Runtime Environ
jq jq-1.5
kubectl Major:“1”, Minor:“14”
maven Apache Maven 3.5.0
Python 2 Python 2.7.5
Python 3 Python 3.6.8
SQL*Plus Release 19.0.0.0.0
terraform v0.12.21

3. Cloud Shell 리전 활성화

Cloud Shell은 터미널이 열리는 시점에 OCI Console이 사용하는 Region을 활성화합니다. 다음 이미지는 OCI Console이 Phoenix, Seoul 및 Ashburn Region을 사용하도록 차례로 변경하면서, 각 리전에서 Cloud Shell을 접속한 이미지입니다. 현재 OCI Console이 사용하는 Region은 OCI Cloud Shell이 시작될 때 환경 변수 OCI_CLI_PROFILE에 설정됩니다.

4. OCI CLI 설정

OCI Cloud Shell에는 여러 소프트웨어가 설치돼 있습니다. 특히 OCI CLI(Oracle Cloud 명령어 관리 툴)는 완전한 사용자 설정이 구성되어 있습니다. 이 설정 지원은 사용자 편의성을 크게 높이는 기능입니다. 다음과 같은 OCI CLI 관련 환경 변수가 설정되어 있습니다.

taewan_kim@cloudshell:~ (us-ashburn-1)$ env | grep OCI_CLI
OCI_CLI_AUTH=instance_obo_user
OCI_CLI_CONFIG_FILE=/etc/oci/config
OCI_CLI_PROFILE=us-ashburn-1
taewan_kim@cloudshell:~ (us-ashburn-1)$ 

OCI CLI 설정 파일인 /etc/oci/config파일에는 모든 리전에 대한 설정이 구성되어 있습니다.

taewan_kim@cloudshell:~ (us-ashburn-1)$ cat /etc/oci/config
[eu-amsterdam-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=eu-amsterdam-1
delegation_token_file=/etc/oci/delegation_token

[ap-mumbai-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=ap-mumbai-1
delegation_token_file=/etc/oci/delegation_token

[eu-frankfurt-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=eu-frankfurt-1
delegation_token_file=/etc/oci/delegation_token

[sa-saopaulo-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=sa-saopaulo-1
delegation_token_file=/etc/oci/delegation_token

[ap-hyderabad-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=ap-hyderabad-1
delegation_token_file=/etc/oci/delegation_token

[us-ashburn-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=us-ashburn-1
delegation_token_file=/etc/oci/delegation_token

[ap-seoul-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=ap-seoul-1
delegation_token_file=/etc/oci/delegation_token

[me-jeddah-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=me-jeddah-1
delegation_token_file=/etc/oci/delegation_token

[ap-osaka-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=ap-osaka-1
delegation_token_file=/etc/oci/delegation_token

[uk-london-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=uk-london-1
delegation_token_file=/etc/oci/delegation_token

[ap-melbourne-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=ap-melbourne-1
delegation_token_file=/etc/oci/delegation_token

[ap-tokyo-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=ap-tokyo-1
delegation_token_file=/etc/oci/delegation_token

[us-phoenix-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=us-phoenix-1
delegation_token_file=/etc/oci/delegation_token

[ap-sydney-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=ap-sydney-1
delegation_token_file=/etc/oci/delegation_token

[ap-chuncheon-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=ap-chuncheon-1
delegation_token_file=/etc/oci/delegation_token

[ca-montreal-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=ca-montreal-1
delegation_token_file=/etc/oci/delegation_token

[ca-toronto-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=ca-toronto-1
delegation_token_file=/etc/oci/delegation_token

[eu-zurich-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaa6ma7aaaasif76uzqidv22cajs3fpesgpqmmsgxihlbcemkklrsqa
region=eu-zurich-1
delegation_token_file=/etc/oci/delegation_token


taewan_kim@cloudshell:~ (us-ashburn-1)$ 

OCI CLI가 실행될 때, /etc/oci/config에 설정된 프로파일 중에서 환경 변수 OCI_CLI_PROFILE에 설정된 값의 프로파일을 기본 로딩합니다. 따라서 별도의 프로파일을 지정하는 귀차니즘을 피할 수 있습니다.

5. Cloud Shell 스토리지 구성

Cloud Shell은 OCI 사용자별로 5GB 스토리지가 할당되어 있습니다. 이 스토리지는 $HOME에 마운트됩니다.

6. sudo 사용 제한

Cloud Shell에서는 sudo 명령을 사용할 수 없습니다.

7. help 명령

Cloud Shell을 소개하는 help 명령을 제공합니다. 이 메시지에서 주요 관련 문서를 확인할 수 있습니다.

taewan_kim@cloudshell:~ (us-ashburn-1)$ help

Welcome to Oracle Cloud Infrastructure Cloud Shell. Your Cloud Shell machine comes with the Oracle
Cloud Infrastructure Command Line Interface (CLI) tools pre-installed and authenticated for your user,
as well as other useful tools, utilities, and language runtimes. Oracle Cloud Shell comes with 5GB of
persistent storage for your home directory, so any modifications you make to your home directory while
using Cloud Shell will be saved between sessions.

For online help with the OCI CLI, type `oci --help`. For more detailed help, see
https://docs.cloud.oracle.com/iaas/tools/oci-cli/latest/oci_cli_docs/ for a detailed command reference.

For Windows users, use Ctrl-C or Ctrl-Insert to copy, and Shift-Insert to paste. For Mac OS users, use
Cmd-C to copy and Cmd-V to paste.

Your use of Oracle Cloud Infrastructure Cloud Shell is limited to a set number of hours per month. If
you hit the hourly limit for your tenancy, you will receive a notification in Cloud Shell. You can
view your tenancy limit and current usage on the Oracle Cloud Limits page, where you can request an
increase in you monthly Cloud Shell hours limit.

For more information about Cloud Shell, refer to the documentation:
https://docs.cloud.oracle.com//iaas/Content/API/Concepts/cloudshellintro.htm

To provide feedback about Cloud Shell, please open a new issue in the OCI-CLI GitHub project: https://github.com/oracle/oci-cli/issues

taewan_kim@cloudshell:~ (us-ashburn-1)$ 

8. 외부 공개 IP 서버 접근

OCI CLI에서 공개 IP를 갖는 서버에 ssh 접근을 할 수 있습니다.

9. 리전 변경에도 스토리지 유지

OCI 콘솔에서 리전을 변경하더라도, Clodu Shell의 스토리지는 유지됩니다.

10. tmux 지원

tmux(terminal multiplexer)가 설치돼 있습니다. tmux를 사용하면 20분 세션 비활성이 적용되지 않습니다.

Cloud Shell 데모

다음과 같은 작업을 Cloud Shell을 사용할 수 있습니다.

이 부분은 다음에 링크된 Blog에서 발취하였습니다. ([Oracle Blog]Announcing Oracle Cloud Shell[↗NW] )

  1. OCI Console에서 Container Cluster 이동 (Developer Services > Container Clusters).
  2. 클러스터 선택, Access Kuberconfig 선택
  3. oci ce cluster 명령 복사
  4. cloud shell 오픈
  5. Cloud Shell 명령 붙여넣기
  6. kubectl로 클러스터 접근 확인
    • $ kubectl get nodes

위 작업 데모는 다음 이미제에서 확인할 수 있습니다.

요약

  1. Cloud Shell을 사용하면 브라우저 기반의 터미널을 사용할 수 있습니다.
  2. OCI CLI 및 Terraform 등이 설치되어 있고 즉시 사용할 수 있습니다.
  3. 인터넷에 접근 할 수 있습니다. 공개 IP를 가진 인스턴스에 ssh 연결 수 있습니다.
    • 물론 비밀키를 갖고 있다는 전제가 있죠.
  4. 사용자당 5GB의 저장소를 사용할 수 있습니다.
  5. Cloud Shell은 VM이며 홈 지역에서 시작됩니다.
  6. 인스턴스는 root 권한 없이 획득할 수 없습니다.
  7. 20분 이상 사용하지 않으면 세션은 종료됩니다.
  8. tmux를 사용하면 이 제한을 극복할 수 있습니다.
  9. 복사 및 붙여넣기가 기능이지만, 이것은 브라우저의 영향을 받습니다.
    • 지원 브라우져: Chrome, FireFox

참고자료


  1. OCI Cloud Shell에서 cat /sys/class/dmi/id/product_name을 실행하면 Standard PC (i440FX + PIIX, 1996)이 출력됩니다. 이것은 KVM/QEMU의 VM임을 의미합니다. [return]
  2. 공식 자료에서 확인한 것은 아닙니다. 제가 사용하는 Cloud Shell에서 cat /proc/cpuinfo 명령으로 확인한 사항입니다. [return]
김태완 avatar
작성자: 김태완
1999년 부터 Java, Framework, Middleware, SOA, DB Replication, Cache, CEP, NoSQL, Big Data, Cloud를 키워드로 살아왔습니다. 현재는 빅데이터와 Machine Learning을 중점에 두고 있습니다.
E-mail: taewanme@gmail.com

이 저작물은 Oracle과 관계없이 개인으로서 개인의 시간을 할애하여 작성된 글 입니다. 본 글의 내용, 입장, 예측은 Oracle을 공식적으로 절대 대변하지 않습니다.