GCE環境で複数のProjectで仕事しているのだが、切り替える為のgcloudコマンドを打つのが面倒になってきたので、こんな感じで~/.zshrcに忍ばせています。
(動作確認してないけどbashでも動くと思います。)
# ssh VM instance: gssh <VM instance>
## defautl zone set : gcloud config set compute/zone <ZONE>
alias gssh='gcloud compute ssh '
# show config: gcfg
alias gcfg='gcloud config list'
# show current project_id: gpj
alias gpj='gcfg | grep project'
# GCE set current project: <PROJECT_NAME>
alias <PROJECT_NAME>='gcloud config set project <PROJECT_ID> && gpj'
難しい事はしてないので見れば分かるかと思いますが、以下解説。
1. gssh: VM instance への接続
Usage: gssh << VM instance >>
gcloud compute ssh
のalias。
注意点として通常作成時のgcloud auth login
しただけではconfigに[compute:zone]が作成されないのでgcloud config set compute/zone <ZONE>
を実行して普段VM構築時に使用しているzoneを設定しておく必要がある。
設定していないと毎回zoneを聞かれる。正直うざい。聞かれるのはgcloudコマンドの仕様。
For the following instances:
- [<VM isntance>]
choose a zone:
[1] asia-east1-b
[2] asia-east1-c
[3] asia-east1-a
[4] europe-west1-b
[5] europe-west1-a
[6] us-central1-f
[7] us-central1-b
[8] us-central1-a
Please enter your numeric choice:
ちなみにgcutil ssh
はzoneを設定せずとも聞かれることなく適切なzoneを自動で判断してssh接続ができる。やっぱりgcutilの方が使い勝手いいのになんで無くす方向なのかなぁ。
2. gcfg: gcloud configの設定値確認
Usage: gcfg
gcloud config list
のalias。
設定値がずらっと出ます。
3. gpj: gcloud confg で設定されているproject-id設定値確認
Usage: gpj
gcfg | grep project
のalias。
projectの切り替えが多いためproject-idだけを確認できるようコマンドを別出しした。
4. < PROJECT_NAME >: project-idの切り替え
Usage: <PROJECT_NAME>
gcloud config set project <PROJECT_ID>
のalias。
現在PROJECT_NAMEからPROJECT_IDを取得する術がgcloudコマンドにはない為、仕方なくPROJECT数分直接PROJECT_NAMEとPROJECT_IDを記載して設定している。
正直ダサい。
実行後にgpj
を実行させ切り替わり後のproject-idを表示させている。
今後
プロンプト等にPROJECT_IDかPROJECT_NAMEが出ればもっと幸せかな、と思いました。