LoginSignup
13
6

More than 1 year has passed since last update.

Oracle Cloud InfrastructureでCloud Shellがリリースされたよ

Last updated at Posted at 2020-02-12

2023/04 Cloud Shellにチュートリアル機能が搭載されました。久しぶりに触ってみると、いろいろ機能拡張されていてビックリ。

Cloud Shellがリリース!

Oracle Cloud InfrastructureでCloud Shellがリリースされた。ブラウザ・ベースのターミナルで、AWSのSession ManagerやAzure Cloud Shellに相当するものだ。PuTTYやTera Termを使わずにOCI上のインスタンスに接続したり、すぐにOCI CLIを実行したりできる。

マニュアルから主要な項目をピックアップしたのが次のとおり。

おもな特徴

  • OCI CLIやTerraform、SQL*Plusなどの開発者ツールがセットアップ済み
  • 1ユーザーあたり5GBの永続的なストレージを利用可能。つまりファイルを保存可能
  • Cloud Shellからインターネットにアクセスできる。つまり、パブリックIPを持ったOCI Computeにssh接続できる
  • 無料で使用可能

※ユーザーとは、OCI管理コンソールにログインできるユーザーアカウントのこと。

おもな制限事項

  • ~~有償アカウントのみ利用可能。~~2020/03/10現在Always Freeでも使用可能
  • 利用可能な数はサービス・リミットで制限される
  • セッションは最長24時間。20分間使っていないと切断される
  • 半年間使用しないとメール通知され、60日以内にストレージが削除される
  • 外部からCloud Shell自体にssh接続できない
  • Cloud Shellを使うには以下のポリシーが必要
allow group <GROUP-NAME> to use cloud-shell in tenancy

※インターネットへのアクセスを許可しないときは、Cloud Shellのポリシーを与えないこと。

Cloud Shellをさわってみる

実際にCloud Shellを利用して、どのようなことができるのか確認する。

  1. 管理コンソール右上のアイコンをクリックする。
    cloudshell01.PNG

  2. ブラウザの下にコンソールが表示される。
    cloudshell02.PNG

  3. dfコマンドを実行すると、ホームディレクトリが5GBあることがわかる。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          39G  6.3G   33G  17% /
tmpfs            64M     0   64M   0% /dev
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/sdb1       5.0G   33M  5.0G   1% /home/yamadas ★ここ
/dev/sda3        39G  6.3G   33G  17% /etc/hosts
shm              64M     0   64M   0% /dev/shm

4.コンテナで動いている。Katacodaのような、コンテナ型のハンズオン環境と似た仕組みなのだろう。こちらは永続的なストレージ付き。

$ id
uid-1101(yamadas) gid=1101(oci) groups=1101(oci),995(docker)

$ ls -la /
total 32
drwxr-xr-x.   1 root root   73 Feb 12 08:16 .
drwxr-xr-x.   1 root root   73 Feb 12 08:16 ..
lrwxrwxrwx.   1 root root    7 Jan 27 21:59 bin -> usr/bin
dr-xr-xr-x.   2 root root    6 Apr 11  2018 boot
drwxr-xr-x.  15 root root 2940 Feb 12 08:16 dev
-rwxr-xr-x.   1 root root    0 Feb 12 08:16 .dockerenv ★これがdockerコンテナの証拠

5.sudoコマンド自体が無く、root権限が必要な操作は実行できない。sudo以外にも、いくつかのシステム系コマンドは利用できない。

$ sudo su -
bash: sudo: command not found

6.コピー&ペーストは「Ctrl-c」or「Ctrl+Insert」と「Shift-Insert」を使える。Mac OSでは「Cmd-C」と「Cmd-V」。「Ctrl-c」が使えないときは「Ctrl+Insert」を試してみること。
cloudshell04.PNG

7.パブリックIPを持っているOCI Computeにssh接続できる。/var/log/secureでアクセス元IPを確認したところAshburnのパブリックIPだった。ホームリージョンのIPアドレスレンジが使用されるのかもしれない。

$ ssh -i ~/.ssh/private-key.pem <PublicIP> -l opc

8.通常OCI CLIを使用するには、インストールと設定ファイルの構成が必要だ。しかし、Cloud Shellでは何もしなくても利用できる。

$ oci iam region list
$ oci iam availability-domain list

9.tmux(terminal multiplexer)がインストールされているので、20分間のセッションインアクティブ時間を気にしないで実行できる。tmuxの詳細は検索のこと。

$ which tmux
/usr/bin/tmux

10.OCI CLIでアクセスするリージョンを切り替えるときは、管理コンソールで切り替える必要はあるが、ストレージは共有されている。

★プロンプトが現在のリージョン
(ap-tokyo-1)$ touch region
(ap-tokyo-1)$ ls
region

★管理コンソールでリージョンを変更してCloud Shellを再起動する
★phoenixに切り替えても、tokyoで作成したファイルを参照できる
(us-phoenix-1)$ ls
region

11.設定ファイルは/etc/oci/config/etc/bashrc.cloudshellにある。

/etc/oci/config
[DEFAULT]
tenancy=ocid1.tenancy.oc1..aaaaaaaadncnkgbka335dzmirsejerkp7vsyfw445mt7x43ea3qf3oktfrma
authentication_type=instance_principal
delegation_token_file=/etc/oci/delegation_token

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

[ap-mumbai-1]
tenancy=ocid1.tenancy.oc1..aaaaaaaadncnkgbka335dzmirsejerkp7vsyfw445mt7x43ea3qf3oktfrma
region=ap-mumbai-1
delegation_token_file=/etc/oci/delegation_token
★以降続く
/etc/bashrc.cloudshell
export PATH=/home/oci/bin:${PATH}
export OCI_CLI_AUTH=instance_obo_user
export OCI_ANSIBLE_AUTH_TYPE=instance_obo_user
export LANG="${LANG:-en_US.UTF-8}"
export OCI_obo_token=`cat /etc/oci/delegation_token`
alias help='cat /etc/cloudshell-help.txt'
★以降続く

12.以下のような環境変数が定義されている。

$ env | grep OCI
OCI_ANSIBLE_AUTH_TYPE=instance_obo_user
OCI_CLI_AUTH=instance_obo_user
OCI_AUTH=InstancePrincipal
OCI_CONFIG_PROFILE=ap-tokyo-1
OCI_use_obo_token=true
OCI_CONFIG_FILE=/etc/oci/config
OCI_obo_token=xxxxxxxxx
OCI_CLI_CONFIG_FILE=/etc/oci/config
OCI_CLI_PROFILE=ap-tokyo-1

13.OCI CLIをカスタマイズするときは設定ファイルを作成する。

$ oci setup oci-cli-rc --file path/to/target/file

14.利用可能な最大数はサービス・リミットで制限される。マニュアルの記載は以下のとおり。

Resource Monthly or Annual Universal Credits Pay-as-You-Go or Promo
Active User Count 75 50
Usage Hours Count 400 240

まとめ

冒頭に一通りまとめを書いているので、ここでは検証結果を中心に記す。

  • Cloud Shellを利用するとブラウザ・ベースのターミナルを利用できる
  • OCI CLIやTerraformなどがセットアップ済みで、すぐに利用できる
  • インターネットにアクセスできるので、パブリックIPを持ったインスタンスにssh接続できる(要SSH秘密鍵)
  • 外部にSSHできないネットワークでも、OCIコンソールに接続できればSSHを利用できる
  • ユーザーごとに5GBの永続的ストレージを利用できる
  • Cloud Shellはコンテナとして実装され、ホームリージョンで起動する。インスタンスにはroot権限がなく、利用できないコマンドもある
  • 20分以上インアクティブだとセッションは切断されるがtmuxで回避できる
  • コピー&ペースト機能はあるが、実際に使えるかはブラウザに依存する

ぼやき
Azure Cloud Shellにはファイルのアップロード/ダウンロード機能があるのでOCIにも実装してほしいところ。TerraformのファイルをやりとりするのにObject Storageを経由するのは面倒。
2021/3/23 ファイル転送機能が追加されました

13
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
6