Alibaba CloudのCloud Shellでは何ができるか

あけましておめでとうございます。森(@mosuke5)です。 今年もたくさんの情報を発信していくことがんばりますのでよろしくおねがいします。

新年1発目は、ゆるい話題ですが、Alibaba CloudにはCloudShellについてです。 Alibaba CloudにはCloudShellと呼ばれる、Alibaba Cloudコンソールから利用できるターミナルのサービスがあります。日本サイトにはまだ正式にはローンチしていないのですが、少し先取りしてお知らせします。

CloudShellとは

CloudShellは下記のスクリーンショットのようにAlibaba CloudのWebコンソール画面からターミナルを実施できるサービスです。もちろんこの環境内での自由度は低いが、Alibaba Cloudを操作するのに必要なソフトウェアなどが事前に入っていて気軽に使うのに非常に便利です。

※現状だとこちらか、Alibaba Cloud Container Serviceのクラスターの基本情報画面からCloudShellお試しできます。

環境の中身はどうなっているか

ではこの環境がどんな状態か簡単にみてみます。

aliyun CLI

まずAlibaba Cloud扱いたいのでCLIをいじってみます。 現時点での、最新版のCLIがインストールされていますね。

shell@Alicloud:~$ aliyun version
3.0.7

リージョン情報取得してみます。 結果が見づらいので、クセでパイプでjqしてみましたが、なんとjqがプリインストールされていました。

shell@Alicloud:~$ aliyun ecs DescribeRegions
{"RequestId":"761022E3-1040-4394-8B65-B8DD78227AC3","Regions":{"Region":[{"RegionId":"cn-qingdao","RegionEndpoint":"ecs.aliyuncs.com","LocalName":"华北 1"},{"RegionId":"cn-beijing","RegionEndpoint":"ecs.aliyuncs.com","LocalName":"华北 2"},{"RegionId":"cn-zhangjiakou","RegionEndpoint":"ecs.cn-zhangjiakou.aliyuncs.com","LocalName":"华北 3"},{"RegionId":"cn-huhehaote","RegionEndpoint":"ecs.cn-huhehaote.aliyuncs.com","LocalName":"华北 5"},{"RegionId":"cn-hangzhou","RegionEndpoint":"ecs.aliyuncs.com","LocalName":"华东 1"},{"RegionId":"cn-shanghai","RegionEndpoint":"ecs.aliyuncs.com","LocalName":"华东 2"},{"RegionId":"cn-shenzhen","RegionEndpoint":"ecs.aliyuncs.com","LocalName":"华南 1"},{"RegionId":"cn-hongkong","RegionEndpoint":"ecs.aliyuncs.com","LocalName":"香港"},{"RegionId":"ap-northeast-1","RegionEndpoint":"ecs.ap-northeast-1.aliyuncs.com","LocalName":"亚太东北 1 (东京)"},{"RegionId":"ap-southeast-1","RegionEndpoint":"ecs.aliyuncs.com","LocalName":"亚太东南 1 (新加坡)"},{"RegionId":"ap-southeast-2","RegionEndpoint":"ecs.ap-southeast-2.aliyuncs.com","LocalName":"亚太东南 2 (悉尼)"},{"RegionId":"ap-southeast-3","RegionEndpoint":"ecs.ap-southeast-3.aliyuncs.com","LocalName":"亚太东南 3 (吉隆坡)"},{"RegionId":"ap-southeast-5","RegionEndpoint":"ecs.ap-southeast-5.aliyuncs.com","LocalName":"亚太东南 5 (雅加达)"},{"RegionId":"ap-south-1","RegionEndpoint":"ecs.ap-south-1.aliyuncs.com","LocalName":"亚太南部 1 (孟买)"},{"RegionId":"us-east-1","RegionEndpoint":"ecs.aliyuncs.com","LocalName":"美国东部 1 (弗吉尼亚)"},{"RegionId":"us-west-1","RegionEndpoint":"ecs.aliyuncs.com","LocalName":"美国西部 1 (硅谷)"},{"RegionId":"eu-west-1","RegionEndpoint":"ecs.eu-west-1.aliyuncs.com","LocalName":"英国 (伦敦)"},{"RegionId":"me-east-1","RegionEndpoint":"ecs.me-east-1.aliyuncs.com","LocalName":"中东东部 1 (迪拜)"},{"RegionId":"eu-central-1","RegionEndpoint":"ecs.eu-central-1.aliyuncs.com","LocalName":"欧洲中部 1 (法兰克福)"}]}}
shell@Alicloud:~$
shell@Alicloud:~$
shell@Alicloud:~$ aliyun ecs DescribeRegions | jq .
{
  "RequestId": "49C9499C-E168-486C-96B1-56275550CF4B",
  "Regions": {
    "Region": [
      {
        "RegionId": "cn-qingdao",
        "RegionEndpoint": "ecs.aliyuncs.com",
        "LocalName": "华北 1"
      },
      {
        "RegionId": "cn-beijing",
        "RegionEndpoint": "ecs.aliyuncs.com",
        "LocalName": "华北 2"
      },
      {
        "RegionId": "cn-zhangjiakou",
        "RegionEndpoint": "ecs.cn-zhangjiakou.aliyuncs.com",
        "LocalName": "华北 3"
      },
      {
        "RegionId": "cn-huhehaote",
        "RegionEndpoint": "ecs.cn-huhehaote.aliyuncs.com",
        "LocalName": "华北 5"
      },
      {
        "RegionId": "cn-hangzhou",
        "RegionEndpoint": "ecs.aliyuncs.com",
        "LocalName": "华东 1"
      },
      {
        "RegionId": "cn-shanghai",
        "RegionEndpoint": "ecs.aliyuncs.com",
        "LocalName": "华东 2"
      },
      {
        "RegionId": "cn-shenzhen",
        "RegionEndpoint": "ecs.aliyuncs.com",
        "LocalName": "华南 1"
      },
      {
        "RegionId": "cn-hongkong",
        "RegionEndpoint": "ecs.aliyuncs.com",
        "LocalName": "香港"
      },
      {
        "RegionId": "ap-northeast-1",
        "RegionEndpoint": "ecs.ap-northeast-1.aliyuncs.com",
        "LocalName": "亚太东北 1 (东京)"
      },
      {
        "RegionId": "ap-southeast-1",
        "RegionEndpoint": "ecs.aliyuncs.com",
        "LocalName": "亚太东南 1 (新加坡)"
      },
      {
        "RegionId": "ap-southeast-2",
        "RegionEndpoint": "ecs.ap-southeast-2.aliyuncs.com",
        "LocalName": "亚太东南 2 (悉尼)"
      },
      {
        "RegionId": "ap-southeast-3",
        "RegionEndpoint": "ecs.ap-southeast-3.aliyuncs.com",
        "LocalName": "亚太东南 3 (吉隆坡)"
      },
      {
        "RegionId": "ap-southeast-5",
        "RegionEndpoint": "ecs.ap-southeast-5.aliyuncs.com",
        "LocalName": "亚太东南 5 (雅加达)"
      },
      {
        "RegionId": "ap-south-1",
        "RegionEndpoint": "ecs.ap-south-1.aliyuncs.com",
        "LocalName": "亚太南部 1 (孟买)"
      },
      {
        "RegionId": "us-east-1",
        "RegionEndpoint": "ecs.aliyuncs.com",
        "LocalName": "美国东部 1 (弗吉尼亚)"
      },
      {
        "RegionId": "us-west-1",
        "RegionEndpoint": "ecs.aliyuncs.com",
        "LocalName": "美国西部 1 (硅谷)"
      },
      {
        "RegionId": "eu-west-1",
        "RegionEndpoint": "ecs.eu-west-1.aliyuncs.com",
        "LocalName": "英国 (伦敦)"
      },
      {
        "RegionId": "me-east-1",
        "RegionEndpoint": "ecs.me-east-1.aliyuncs.com",
        "LocalName": "中东东部 1 (迪拜)"
      },
      {
        "RegionId": "eu-central-1",
        "RegionEndpoint": "ecs.eu-central-1.aliyuncs.com",
        "LocalName": "欧洲中部 1 (法兰克福)"
      }
    ]
  }
}

他ソフトウェア

ほかどんなソフトウェア入っているのかと思って見てみますが、kubectlやhelm, わたしの好きなTerraform、Function Compute(イベントドリブンコンピューティングのサービス)を操作するためのfcliなど一通りはいってますね。もちろんgitも入ってます。

shell@Alicloud:~$ ll /usr/local/bin/
total 277484
drwxr-xr-x    1 root     root          4096 Jan  8 07:14 ./
drwxr-xr-x    1 root     root          4096 Nov 28 06:54 ../
-rw-r--r--    1 root     root          6148 Nov  2 05:32 .DS_Store
-rwxr-xr-x    1 501      dialout   27768735 Dec 26 06:06 aliyun*
-rwxr-xr-x    1 root     root          1367 Dec 26 03:42 cloudshell-git-open*
-rwxr-xr-x    1 root     root      16033662 Nov 15 02:15 fcli*
-rwxr-xr-x    1 root     root      56689729 Dec 29 08:17 fun*
-rwxr-xr-x    1 501      dialout   36844864 Dec 19 23:09 helm*
-rwxr-xr-x    1 501      dialout   57356334 Dec 25 03:23 kubectl*
-rwxr-xr-x    1 root     root           638 Dec 26 03:07 teachme*
-rwxr-xr-x    1 root     root      89397536 Nov  7 05:57 terraform*
-rwxr-xr-x    1 root     root          1113 Dec 14 06:49 try-sdk*
-rwxr-xr-x    1 root     root          1225 Dec 26 03:07 use-k8s-cluster*

shell@Alicloud:~$ git version
git version 2.18.1

OSやプロセス、リージョンなど

プロセスはまあ普通です。

shell@Alicloud:~$ ps -ef
PID   USER     TIME  COMMAND
    1 root      0:00 {entrypoint.sh} /bin/sh /cloudshell/linux/entrypoint.sh
   15 root      0:03 /cloudshell/daemon/ttyd --max-connection 5 -w /cloudshell/linux/start.sh
  125 root      0:00 {start.sh} /bin/sh /cloudshell/linux/start.sh
  127 shell     0:02 bash
  183 root      0:00 {start.sh} /bin/sh /cloudshell/linux/start.sh
  186 shell     0:01 bash
  610 shell     0:00 ps -ef

shell@Alicloud:~$ pstree -p
entrypoint.sh(1)---ttyd(17)---start.sh(45)---bash(55)---pstree(84)

OSはalpine linuxですね。

shell@Alicloud:~$ uname -a
Linux 225185389655867230 4.15.5-257.kvm #2 SMP Fri Dec 21 11:21:01 CST 2018 x86_64 Linux
shell@Alicloud:~$ 
shell@Alicloud:~$ cat /etc/alpine-release 
3.8.1

ふつうにCloudShell内のデータは一度exitすれば消えてしまいますが、NASを使ってデータを保存することができます。そのモードを有効にすると/home/shellにNASがマウントされています。

shell@Alicloud:~$ df -h
Filesystem                Size      Used Available Use% Mounted on
overlay                  38.3G      2.7G     33.8G   7% /
tmpfs                    64.0M         0     64.0M   0% /dev
shm                      64.0M         0     64.0M   0% /dev/shm
tmpfs                     1.9G         0      1.9G   0% /sys/fs/cgroup
/dev/root                38.3G      2.7G     33.8G   7% /etc/resolv.conf
shm                      64.0M         0     64.0M   0% /dev/shm
3086f4aceb-yxn33.cn-shanghai.nas.aliyuncs.com:/
                          1.0P         0      1.0P   0% /home/shell
/dev/root                38.3G      2.7G     33.8G   7% /etc/hosts
tmpfs                    64.0M         0     64.0M   0% /proc/timer_list
tmpfs                    64.0M         0     64.0M   0% /proc/sched_debug
tmpfs                     1.9G         0      1.9G   0% /sys/firmware

NASのコンソール画面を見に行くと上海リージョンで購入されていました。

ということは、このインスタンスは上海にあるのだろうか。 はい、そのようです。 実際にネットワーク的にもgoogle.comへはアクセスできませんでした。

shell@Alicloud:~$ curl -I https://blog.mosuke.tech
HTTP/2 200 
date: Tue, 08 Jan 2019 07:55:36 GMT
content-type: text/html; charset=utf-8
set-cookie: __cfduid=db8ff6b0fa67e637557d64ac3f1d7ec221546934136; expires=Wed, 08-Jan-20 07:55:36 GMT; path=/; domain=.mosuke.tech; HttpOnly; Secure
last-modified: Tue, 08 Jan 2019 04:27:46 GMT
vary: Accept-Encoding
access-control-allow-origin: *
expires: Wed, 16 Jan 2019 07:55:36 GMT
cache-control: public, max-age=691200
x-github-request-id: BF1E:1E5F:3B1CDC:53508C:5C345778
cf-cache-status: MISS
x-content-type-options: nosniff
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
server: cloudflare
cf-ray: 495d1a532ec59396-SJC

shell@Alicloud:~$ curl -I https://google.com
(応答なし)

プログラミング言語

プログラミング言語はPythonが入っている程度でほとんどサポートされていないません。下の写真のようにエディタの機能があるのですが、プログラミング言語があまりサポートされていないので、どちらかというと設定ファイルなど少しいじるようでしょうか。あるいはvimなど使いたくない人向けに。

shell@Alicloud:~$ python
python      python3     python3.6   python3.6m

さいごに

現状では、プログラミング言語がほとんど入っていないので、開発用途よりは、気軽にCLIを使ったり、terraformを試してみたりするのに向いています。FunctionComputeを操作するコマンドラインツールも入っているので、プログラミング言語がサポートされてくると、よりユースケースが広がってくると思います。そのあたりはまた情報が入り次第お知らせしたいと思います。