gcloudコマンドをCygwin+TeraTerm環境で利用しよう!
こんにちは、京セラコミュニケーションシステム櫻木 (@kccs_nobuaki-sakuragi)です。
Google Cloudを利用する際に、今まで利用していたターミナルソフトを活用したいと思っている方はいませんか?
たとえば、Google CloudでGCEを使う場合は、使い慣れたSSHクライアントを使いたいやLinuxのオペレーションをした際のターミナルLogを保存したい方を想定しています。
Google CloudはCloud IAPを利用するとVPNフリーでGCEへアクセスする事ができますが、前提条件としてgcloudCLI(以降gcloudコマンド)を利用する必要があります。しかし、Windowsの場合、ドキュメント通りに進めるとgcloudコマンドはDOS画面から実行する方になります。その為、ログ保管が大変だったり、Linux系のシェルに慣れているとターミナル感覚で利用しにくく使い勝手がわるくなってしまいます。
そこで、使い慣れたターミナルソフトで、Google Cloudを操作したい方への参考になればと考え、私自身の環境設定をBlog記事にしてみました。
今回は、Windowsでよく利用されているターミナルソフト(Tera Term)と疑似Linux(Cygwin)をインストールした環境でgcloudコマンドを利用する方法を紹介したいと思います。
環境を作成すれば、Cygwin内のCloud Identity-Aware Proxy(以降Cloud IAP)機能を使い、GCE上のMySQLへA5:SQL Mk-2へも接続ができます。もちろん、Cloud IAP経由でGCEへSSH接続も可能です。
Windowsを利用していて、Tera Term経由でオンプレのLinuxや他クラウドのLinuxOSをオペレーションに慣れ親しんだ方は一度設定してみてください。
きっとターミナルを利用したオペレーションを大幅に変更する事なくGoogle Cloudが活用できると思います。
本記事の対象者
- Windowsクライアントを利用して、Tera Termを使い慣れている方
- gcloudコマンドは使いたいが、DOSプロンプトでは使いたくない方
- さまざまな理由で、WSL2環境でgcloudCLIを利用できない方
gcloud コマンドとは?
コマンドラインで直接、または Google Cloud CLI のスクリプトを使用して、Google Cloud のリソースとサービスを作成し、管理できます。
幅広いプラットフォームとの互換性とサービスの対象範囲により、一般的なプラットフォーム タスクをより高速に実行したり、クラウドリソースを大規模に制御したりできます。
Google CloudではConsoleを利用し、GUIでリソース作成も可能ですが、gcloudコマンドを使いVPCリソースやGCEリソースを作成する事もできます。
たとえば、Cloud Skill Boostの次のコースでは、gcloud コマンドを利用し、Google Cloudリソースを起動していくラボになっています。このラボを実施するとgcloud コマンドでどのようなオペレーションができるのかイメージがつくかと思います。
Cloud Shell と gcloud のスタートガイド | Google Cloud Skills Boost(有償:1クレジット)
クレジットを比較的安価に入手する方法を紹介しています。
興味のある方は参考にしてください。
Cloud Skill Boost用のクレジットを安価に入手する方法
上記のラボでは、GCEの起動がメインですが、他のリソースの起動・停止・削除も可能です。gcloudがどのようなリソースに対応しているか詳しく知りたい方は次のドキュメントも見ると参考になると思います。
gcloud | Google Cloud CLI Documentation
gcloudコマンドを利用するメリットは再現性が高まることと考えています。
GUIの場合は、画面のオペレーションを表現しておく必要がありますが、gcloudコマンドを利用すると同じ環境が別のプロジェクトでも比較的簡単に構築できます。
たとえば、CI/CD環境を作るほどでない物の場合は、gcloudコマンドで環境構築のテンプレートとして保存しています。
私が考えるgcloudコマンドを活用するメリットは次の3つになります。
- 他のリソース作成ツール(TeraformやAnsible等)とは異なり、Google Cloudがメンテナンスしている
- 環境構築の準備がしやすい(googleが準備しているインストールを実行するだけ)
- CloudShell、ローカルのPC(Windows・Mac・Linux)・GCE上でも利用可能
Cygwinとは
Cygwinは、LinuxのコマンドをWindows環境で利用できるようにコンパイルしなおしたソフトウェア群です。
例えば、bash,csh,zsh等があり、ls,sed,echo等が標準で利用できます。
仮想OSではなく、コマンドを移植している為、Windows内のファイルシステムにアクセスしやすいのが特徴です。
コンパイラやライブラリをそろえるとLinuxのソフトウェアソースコードをCygwin環境でコンパイルし動作させる事もできます。
なお、WSL2との違いは、仮想環境上のLinuxとWindows上にLinuxコマンドを配置した物かの違いです。仮想化したOS環境はホストOSとゲストOS間でアクセスする場合、仮想OS設定が必要になります。Cygwinは、同じOS上で実行される為、共有設定などをせずファイルシステムにシームレスアクセス可能です。※Windows OS側で制限がかかっている場合はその限りではありません。
Cygwinの詳細は次のドキュメントを参照ください。
CygwinはWindows上に簡単にLinuxコマンド環境を実装できちょっとしたLinuxコマンドを利用する場合は非常に便利です。しかしながら、万能ではありませんので使い方は工夫し、用途に合わせて使ってもらうのがオススメです。
事前準備
OS:Windows10環境
次のソフトウェアをインストール可能な環境・権限がある事
- Tera Term(ターミナルソフト)
- Cygwin(疑似Linux環境)
環境構築
それでは、CygwinとTera Termをインストールします。
Cygwin環境とTera Termを既にインストールされている環境を持っている場合は、Python3.8環境を動作させる場合は、項番3のgcloudコマンドのインストールへすすんでください。
1. Cygwinインストール
- Cygwin公式サイトより、setup-x86_64.exeをダウンロードし保存してください。
setup-x86_64.exeを実行しCygwinをセットアップします。
基本的に、標準の設定で次へボタンを押していくとインストール可能です。
Pythonは標準設定ではインストールされません。パッケージ選択しPython3.8をインストールしてください。
インターネットからダウンロードしインストールする場合は、標準設定で次へを押していくとインストールは完了します。
ネットワーク接続環境に合わせ設定項目を変更しインストールしてください。
インストールディレクトリを指定します。
インストールドライブやディレクトリに指定が無ければ、標準設定のC:¥cygwin64を使ってください。
ここで指定したディレクトリが、Cygwin接続時の「/」ディレクトリになります。
標準から変更した場合は、適時読み替えながら設定してください。
選択したパッケージファイルを一時的に保管するディレクトリを指定します。
今回は、WindowsOS側のホームディレクトリにtmpディレクトリを作成し一時ファイルを保存する設定にしています。HDDの空容量が少なくなった場合にすぐに消せるファイルとして扱えるようにtmpディレクトリとしています。
インターネットへの接続設定になります。
画面ではWindowsのProxy設定に準拠するようしています。環境に合わせ設定変更してください。
ここでは、ダウンロードするサイトを選択します。
私はいつも、日本のjpドメインで大学以外のサイトを選びダウンロードしています。
今回は、ftp.iij.ad.jpを選びました。
パッケージの選択画面がでます。
今回は、[Python38]と[Gitコマンド]をインストールします。
はじめに、Python3.8をインストールします。
赤枠の[View]を[Full]に選択し、[Serche]の文字列に[Python38]と入力してください。
これで、Python3.8に関するパッケージ一覧が表示されます。
[New]カラムが[Skip]になっている場合はインストール対象になっていません。
▼ボタンを押すと、画面の様にバージョンを選択できるようになりますので、任意のバージョンを選択してください。
つぎに、GitコマンドもPython38と同様にインストールしてください。なお、Gitを利用しない場合は不要です。
赤枠の[View]を[Full]に選択し、[Serche]の文字列に[git]と入力してください。
これで、gitに関するパッケージ一覧が表示されます。
[New]カラムが[Skip]になっている場合はインストール対象になっていません。
▼ボタンを押すと、画面の様にバージョンを選択できるようになりますので、任意のバージョンを選択してください。
選択後、次へボタンを押すとパッケージのダウンロードとインストールが始まります。
インストールが完了するとDesktopとStartメニューへアイコンを作成にチェックが入っている事を確認し[完了]ボタンを押してください。
これでCygwinのインストールは完了しました。
次にインストールパッケージの確認をします。
Cygwinの起動確認とパッケージでインストールしたPython3.8がインストールされているか確認します。
Desktop上のCygwin64 Terminalアイコンをクリックし、Cygwin Terminalを起動してください。
標準で背景が黒のターミナルソフト(Cygiwin64 Terminal)が起動します。
次のコマンドを入力し、PythonのバージョンがCygwinでインストールしたバージョンである事とPythonのインストールディレクトリがCygwin上のファイルである事を確認してください。
python -V
wich python
git -v
もし、バージョンが違ったり、Pythonのインストールディレクトリが異なる場合は、Cygwinのインストールが正常にできていない可能性があります。再度、Cygwinのインストールをしてください。
Pythonのバージョンならびに、Pythonインストールディレクトリが「/usr/bin/python」になっていたら、Tera Termのインストールにすすんでください。
すでにTera Term利用しているがCygwinが入っていない方は、Cygwinをインストール後、Tera Termを上書きインストールし、Tera TermからCygwinへ接続できるようにする必要があります。
既存のTera Term環境が変更される事も想定されます。必要に応じインストール環境をわける、もしくは設定ファイルをバックアップするなどをしインストールをしてください。
2. Tera Termインストール
Tera Termのサイトより、インストーラーをダウンロードしてください。
teraterrm-4XXX.exeを実行してください。
コンポーネント選択の画面になったら、[CygTerm+]にチェックが入っている事を確認してください。CygTerm+をインストールする事により、Tera TermからCygwinへ接続する事ができます。
インストールが終了したら、Tera Termを起動し、[ファイル]-[Cygwin接続]を選択しCygwinへ接続してください。
これで、Tera Term経由でCygwinへ接続できるようになりました。
3.gcloud コマンドのインストール
Cygwin+Tera Termのインストールが完了したら、gcloudコマンドをインストールします。
Google Cloudのヘルプから、Linux用のモジュールをダウンロードしてください。
Cloud SDK のインストール | Google Cloud
ダウンロードしたファイルは、ExploreなどでCygwinのホームディレクトリへコピーしてください。
コピー先のディレクトリは、標準設定時は次のディレクトリになります。
C:¥Cygwin64¥home¥[ユーザ名]
もしくは、CygwinへTera Termから接続し、Cygwinのhomeディレクトリ上で、次のコマンドを実行してください。
pwd コマンドでホームディレクトリである事を確認してから実行してください。
pwd
/home/[ユーザ名]
curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-370.0.0-linux-x86_64.tar.gz
※上記URLは22年9月末時点の為、ダウンロードするSDKのバージョンが新しくなっている事が考えられます。ダウンロード用のコマンドはドキュメントから都度確認してください。
Cygwinのホームディレクトリへファイルコピーもしくは、curlコマンドでCloudSDKのファイルがダウンロードできたら、Cygwin環境で利用できるようにtar.gzファイルを解凍し、インストールシェルを実行します。オペレーションはCygwinにターミナで接続し、ホームディレクトリ内で次のコマンドを実行します。
tar -xvf google-cloud-sdk-370.0.0-linux-x86_64.tar.gz
./google-cloud-sdk/install.sh
※370.0.0はダウンロードしたファイルに合わせて変更してください。
install.shを実行します。
数回キーボード入力をする必要があるので赤枠の所を入力してください。
標準で推奨されている設定がアルファベット大文字で記載されています。
指定がなければ推奨されている指定のアルファベット大文字を入力してください。
また、Path設定の箇所([/home/[ユーザ名]/.bashrc])の箇所はそのままブランクで[Enter]を入力してください。
.bashrcが上書きされているかを確認します。
google-cloud-sdkのパスが自身のhomeディレクトリ上に設定されている事を確認してください。
cat ~/.bashrc
gcloudコマンドが正常に起動するか、gcloudコマンドを実行し確認してください。
追記された[.bashrc]を読み込ませてから、gcloudコマンドを実行します。
source ~/.bashrc
gcloud -v
※うまくgcloudコマンドが実行できない場合は、Tera Termを終了し、再度Cygwinへ接続してください。
利用可能なコマンドのバージョンが表示されれば正常にインストールできています。
次に、gclouのコンポーネントを最新にアップデートします。
gcloud components update
標準で推奨されている設定がアルファベット大文字で記載されています。
指定がなければ推奨されている指定のアルファベット大文字を入力してください。
今回のcomponentsアップデートでは、Cloud SDK 370.0.0 のバージョンから、403.0.0へバージョンアップされています。
正しくバージョンがアップデートしている事を確認します。
gcloud -v
4.gcloud コマンドの初期設定
gcloudコマンドのインストールが完了しました。次からはgcloudコマンドを利用する為の初期設定をします。
この設定を進めるには、WorkspaceやCloud IdentityのID/PWが必要になります。これらの設定はGoogle認証が可能なネットワーク環境で実施してください。
初期設定コマンド
gcloud init
標準で推奨されている設定がアルファベット大文字で記載されています。
指定がなければ推奨されている指定のアルファベット大文字を入力してください。
みどり色の枠のURLが表示されたら、ターミナルソフト上のURLをダブルクリックしブラウザを起動してください。
起動するとログイン画面が表示されますので、gcloudコマンドを利用するユーザIDとパスワードで認証してください。
パスワードの認証が完了すると、Google Cloud SDKにアクセス許可する権限が表示されます。
内容を確認し、ポリシー上懸念事項が無ければ許可をしてください。
認証が完了すると、Credentialコードが発行されます。
[Copy]ボタンを押し、クリップモードへコードを保存後Tera Termへ戻ってください。
先ほどコピーしたコードを黄色の枠[Enter authorization code:]の行へペーストし、[Enter]を押してください。
ログインした、ユーザIDが表示されます。
もし、想定しているログインID(WorkspaceやCloud IdentityのユーザID)と異なる場合は終了し、再度ログインしてください。
次に、gcloudコマンドで利用するプロジェクトを指定します。今回は、任意のプロジェクトを指定する為、[1]Enter a project IDを指定します。
選択番号[1]を入力し、[Enter]キーを入力します。
Project ID入力画面が表示されますので、gcloudコマンドを利用するProject IDを入力し、[Enter]を押してください。
指定したProject IDが表示されます、Project IDが正しいことを確認し、次に進んでください。
次にCompute Engineを標準で起動するリージョン・ゾーン指定します。
今回は、[us-central1-a]、[8]を指定しました。
もし指定しない場合は、gcloudコマンド実行時にオプションでリージョンやゾーンを指定する必要があります。
普段利用するゾーンが決まっている場合は登録しておくと便利になります。
設定が完了しましたら、認証設定が正常に完了しているかgsutilコマンドを使って確認します。
gsutil ls
プロジェクト内にある、gcsリストが表示されたら、正常に設定が完了しています。
gcloudコマンドを使ってつないでみる
使い慣れたTera Termでgcloudコマンドを利用できます。
GoogleCloudのIAPの設定方法並びに利用の仕方は、こちらのQiita記事を参照してください。
gcloud compute ssh [GCEインスタンス名] --tunnel-through-iap
gcloud compute start-iap-tunnel [MySQLインストールしたGCEインスタンス名] 3306 --local-host-port=localhost:3306
参考:MySQLのユーザ情報を見るためにA5M2をつないでみた。
接続先のMySQLを127.0.0.1に指定し接続してみました。
Tera Term経由でgcloudコマンドを使ってCloudIAPの機能でMySQLへ接続しています。
上記の例では、MySQLへ接続しGUIのDB管理ツールを操作していますが、大量データの操作をした場合
利用環境によっては通信エラーなどが発生する事もあります。
本番運用で利用する場合は、事前にレスポンスやデータ量などを考慮しテストをしてから導入するようにしてください。
最後に
Cygwin+TeraTerm環境でgcloudコマンドを活用できるようにしてみました。
gcloudコマンドはGCEへのSSH接続以外でもGoogle Cloud全般の操作に活用可能です。みなさん是非活用してみてください。
本記事は2022年10月に作成しております。よって、引用している文章やオペレーション方法などはこの時点での最新となります。ご了承ください。