Cloud Shell 入門

tora470
google-cloud-jp
Published in
9 min readDec 24, 2019

--

元クリスマスとBQとBBQとワタシ

はじめに

メリクリ!肉、食べてますか?この記事は Google Cloud Japan Customer Engineer Advent Calendar 2019 の 24日目の記事です。

バーベキュー、いいですよね。楽しいですよね。BigQuery は BQ と呼ばれることが多いんですが、BBQ と似てますよね。はい、そんなわけで今回は無理やり BigQuery と BBQ をこじつけたネタをやっていこうと思います。

と思ったんですが、BBQとBQを組み合わせてのネタがどうしても思いつかなかったのでCloud Shellのお話になりました。

Cloud Shellとは

GCP コンソール上で無料で使える、 Linux Shell 環境です。GCP を操作、 GCP における開発をする上で必要な環境と周辺ツールが整っています。通常、 GCP の各種リソースを操作するには 以下の方法があります。

  • GCP の Web コンソールでボタンポチポチしながら操作する
  • Cloud SDK をインストールして各種 CLI ツール (gcloud, bq など) を実行する
  • クライアントライブラリを利用してプログラムから実行する

Cloud Shell だと最初から Cloud SDK がインストールされているため、2番目の実行方法については準備が不要です。しかも環境は Google が最新のコマンドを用意していてくれるので更新も不要です(正確に言うと使っている最中にアップデートがあり自発的に更新したい場合などはこの限りではありません)。

環境

  • Machine Type : g1-small
  • ストレージ : 5GB ( HOME 領域)

Cloud Shell でできること

  • CLI 操作
  • Web エディタ環境でファイル編集

Cloud Shell 環境には Java や Go 、 Python などの開発言語や周辺ツールがインストール済みです。こちらに利用できるツールが掲載されています。また、 Cloud SDK でのコマンドはコンソールにログインしているユーザーで認証済みの状態ですぐに使えます。

Cloud Shell が向いていないこと

  • CPU 、メモリを大量に使う処理
  • 大きなファイルの操作
  • デスクトップ環境で GUI アプリケーションを実行する
  • HOME 領域以外は変更を維持できない

Cloud Shell は Google Compute Engine (GCE)で言うところのマシンタイプが g1-small です。メモリも 1.7GB で CPU も 1コアです。後述の Boost Mode を使うことで n1-standard-1 で動かすことができます。ストレージについても自由に使える HOME 領域が 5GB 割り当てられてますがそれを超える容量のファイルをローカルにダウンロードしてなにかすることはできません。可能なら Google Cloud Storage (GCS) を使いましょう。

デスクトップ環境はありませんが、 Web エディタ環境があります。 vim などでファイル編集・操作が苦手な人はこちらを使うと良いかもしれません。

HOME 領域以外は基本的に起動するたびにリセットされます。Root 権限があるのでそれを利用して変更することは可能ですが、リセットされます。必要なコンポーネントは HOME 領域の使用がおすすめです。もしくは後述のカスタムスクリプトを使用することができます。

使い方

使い方は簡単です。 GCP のコンソールの右上にあるボタンをポチっと押すだけ。

Cloud Shell の起動ボタン

すると下の方にウィンドウが出てきてプロビジョニングが開始します。数秒〜数分待つと黒い画面が表示されます。

プロビジョニング中

カスタマイズ

シェルのテキストサイズやカラーテーマなどの変更ができます。シェルの左上にある歯車マークからターミナルの設定を変更できます。

カスタムスクリプト

カスタムスクリプトが Cloud Shell 起動時に動くようになりました。これで必要なコンポーネントを事前にインストールした状態で Cloud Shell を使用できます。

使い方は $HOME/.customize_environment に起動時に実行したいスクリプトを書いておくだけです。 $HOME/.bashrc とかに書くのとの違いは、こっちだと Cloud Shell インスタンスを起動する時に一度だけ実行されます。

Note: If you would like to see a specific package included with Cloud Shell by default, submit your suggestion as feedback.

また、上記の通り Cloud Shell に含めておいてほしいパッケージなどがあれば上記のフォームからフィードバックを遅れます。

開発してみる

先述のとおり、ファイルの編集はエディタ画面を使うこともできます。

Editor

Cloud Shell の右上にある鉛筆マークのボタンをポチッとするとこんな感じのエディタ画面が出てきます。

ファイルの編集、追加、フォルダの操作などできます。

通常のローカル開発などでは localhost 8080 ポートでアクセスをおこなうことが多いかと思います。 Cloud Shell では同様に、 Cloud Shell の 8080 ポートで起動したアプリケーションにアクセス可能なプロキシが構成され手元のブラウザよりアクセスが可能です。

実行しているアプリケーションを 8080 ポートを変えたい場合は右上のひし形みたいなボタンから Change port で変更してください。ここに並んでない場合は…、実行アプリ側のポートを合わせましょう。

Preview on Port xxxx を押すと別タブが開いて Cloud Shell で動いているアプリケーションを確認できます。

セーフモード

.bashrc を変更したりすることでシェル環境をカスタマイズできますが、環境を破壊してしまう可能性もあります。その場合どうするか?メニューから Safe Mode を選んで起動することで root ユーザーでログインし、初期状態で Cloud Shell を起動できます。その状態で問題を解決すると良いでしょう。誤って HOME 以外の領域を消してしまった場合などは単純に Restart するといいでしょう。

Boost Mode

Cloud Shell のマシンタイプが g1-small であることは前述の通りですが、24時間の間 n1-standard-1 で動かすことができます。なお、 Boost したとしても無料のまま使えます。

チュートリアル機能

Cloud Shell には、用意した Markdown ファイルを読み込んで右サイドバーにガイドを表示してステップバイステップでチュートリアルを進められる機能があります。サンプルとして Github のリポジトリがあるので、こちらの turtorial.md を参考に作成するといいかと思います。ハンズオンをするような場合に使えます。Github に OPEN IN CLOUD SHELL ボタンを表示して直接ボタンから Cloud Shell を開くこともできます。

Cloud Shell からチュートリアルを起動した状態

cloudshell コマンド

Cloud Shell 環境には cloudshell というコマンドがあります。Cloud Shell でファイルを編集したりチュートリアルを動かしたりできます。

  • チュートリアル機能を起動する
  • Cloud Shell 上に置いてあるファイルをブラウザからダウンロードする
  • エディタ画面で対象ファイルを開く

前述のチュートリアルを途中で右上の×ボタンを押して閉じてしまった場合再度開く時に cloudshell launch-tutorial が使えます。

Cloud Shell 環境にコマンドラインでアクセス

ローカルなどから gcloud コマンドで Cloud Shell 環境に接続できます。ローカルのファイルをコマンドラインで送ったり、 SSH 接続したりできます。詳しくはこちらを参照ください。

制限について

さて、前述のとおりにコンピュートリソースとしての制限やストレージの制限の他にいくつかあるので記載しておきます(2019年 12月24 日現在)。すべての制限についてはこちらをご確認ください。

  • 稼働は週に80時間まで。超えたらリセットまで待つか時間延長をリクエストするフォームのリンクが出てくるのでそこからリクエストする。
  • 120日間全く使わないと HOME 領域は消える。メールで使ってないから消すぜって連絡が来ます。
  • 連続したセッションは12時間。12時間で切れるけどまた再度接続できます。

通知のメールについてですが、以下のようなメールが来ます。(2019年11月18日時点)文面などは最新だと変わっている可能性がありますが、内容としては HOME 領域を消す旨の通知になります。

まとめ

こんな感じで、Cloud Shell でけっこう色々とできます。

実は Cloud Shell 、シェル環境として地味にじわじわと機能が追加されていっています。きっと来年もパワーアップしていくと思うので、今後の Cloud Shell 先生の成長に期待していてください。

まじめに全部書こうと思ったらけっこうな分量になりそうだったのでちょっと端折った箇所もあります。わかりづらかったらいつでもコメントください。

--

--

tora470
google-cloud-jp

Customer Engineer, Google Cloud. All views and opinions are my own.