2023/04 Cloud Shellにチュートリアル機能が搭載されました。久しぶりに触ってみると、いろいろ機能拡張されていてビックリ。
Cloud Shellがリリース!
Oracle Cloud InfrastructureでCloud Shellがリリースされた。ブラウザ・ベースのターミナルで、AWSのSession ManagerやAzure Cloud Shellに相当するものだ。PuTTYやTera Termを使わずにOCI上のインスタンスに接続したり、すぐにOCI CLIを実行したりできる。
- Announcing Oracle Cloud Shell
- OCI Manual: Cloud Shell
- Developer Guide: SDK Quick Starts with Cloud Shell
- Developer Guide: Cloud Shell
マニュアルから主要な項目をピックアップしたのが次のとおり。
おもな特徴
- 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を利用して、どのようなことができるのか確認する。
$ 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」を試してみること。
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
にある。
[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
★以降続く
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 ファイル転送機能が追加されました