😀

GCP 事始め Cloud SDKの導入

2022/11/28に公開

GCPを再入門するためのメモ

GCPをつかうにあたりまずはGCloud CUIの使い方を学んで行こうと思っています。

対象者

  • GCPにまだ慣れていない方

環境

  • mac osx catalina

参考にしたサイト

GCloud SDKとは?

公式から引用

Google Cloud SDK は、Google Cloud Platform にホストされているリソースとアプリケーションの管理に使用できるツールセットです。gcloud、gsutil、bq などのコマンドライン ツールもその一部です。

つまりGCPを使うにあたって必要なCUIツール群のことですね。

GCloud SDKのインストール

公式では別の方法ですが、基本gcloud本体がバージョンアップ等も含めて教えてくれるので
自分はbrewで入れてしまっています。

brew cask install google-cloud-sdk

SDKの初期化設定

これで対話式で勧めてください。

gcloud init

詳細は公式のチュートリアルに譲ります。

gcloud init を実行するとAWS SDKと同様にHOME以下のドットファイルが作成されます

$HOME/.config/gcloud
gcloud
├── access_tokens.db
├── active_config
├── config_sentinel
├── configurations
│   ├── config_default
│   └── config_{your_project}
├── credentials.db
├── gce
└── logs
    ├── 2019.12.27
    │   └──  23.11.41.499803.log
    ├── 2020.01.16
    │   └──  14.53.29.471200.log
    └── 2020.01.18
        └──  14.11.47.394124.log

$HOME/.config/gcloud/configurations 以下がAWSでいうprofileの部分になります。

ではdefaultの中身を見てみましょう

$HOME/.config/gcloud/configurations/config_default
$ cat $HOME/.config/gcloud/configurations/config_default

[compute]
region = asia-northeast1
zone = asia-northeast1-a

[core]
account = {your account}@gmail.com
project = {your default project}

デフォルトのregionとzoneが [compute] セクションにあり
core の部分にaccountとprojectの設定があります。

つまりdefaultでgcloudを実行した場合は上記の設定(リージョンやaccount,project)で実行されることになります。

Project毎にアカウントやprojectを切り替える方法

複数のプロジェクトをまたがる作業をするときにdefaultのProjectで実行されると困る事が多々あると
思います。ではどうすればいいか?となりますが、これは gcloud config configurations で解決ができます。

Google Cloud SDK reference

gcloud configuration listで現在設定されているconfigの設定を確認する

$ gcloud config configurations list

NAME              IS_ACTIVE  ACCOUNT                   PROJECT           DEFAULT_ZONE       DEFAULT_REGION
default           False      {your account}  {デフォルトで設定したproject}

となっていますのでこれに新たにconfig(hoge)を追加したいと思います

$ gcloud config configurations create hoge

Created [hoge].
Activated [hoge].

新たなconfigが作成されたみたいなので確認します

$ gcloud config configurations list

gcloud config configurations list
NAME              IS_ACTIVE  ACCOUNT                   PROJECT           DEFAULT_ZONE       DEFAULT_REGION
default           False      {your account}  {デフォルトで設定したproject}
hoge              True

hogeが IS_ACTIVATE True になったのでhogeが現在のconfigの設定になりました。

他の設定を追加する

config hogeに対してaccount,project,region,zoneを追加していきます

gcloud config set core/project {config hogeに追加したいproject}
gcloud config set core/account {config hogeに追加したいaccount}
# config hogeに追加したいzone
gcloud config set compute/zone asia-northeast1-a
# config hogeに追加したいregion
gcloud config set compute/region asia-northeast1

では再度 gcloud config configurations list で確認してみましょう

 gcloud config configurations list
NAME              IS_ACTIVE  ACCOUNT                   PROJECT           DEFAULT_ZONE       DEFAULT_REGION
default           False      {your account}  {デフォルトで設定したproject}
hoge              True       {your account}  {hogeに追加したproject}  asia-northeast1-a  asia-northeast1

となります。

特定のディレクトリに移動したら勝手にconfigを変えてもらいたい

自分はdirenvを使用して切り替えてしまいます。

direnvのinstall

brew install direnv

.zshrcにdirenvの設定を追加する

echo 'eval "$(direnv hook zsh)"' >> $HOME/.zshrc
source $HOME/.zshrc

対象のProjectに移動して.envrcを記載する

$ cd path/to/project
$ echo "gcloud config configurations activate hoge" > .envrc
$ direnv allow

direnv: loading .envrc
Activated [hoge].

Activated [hoge].とでれば次回以降は対象のprojectに移動したタイミングでconfigの設定が自動に変わります。

最後に

GoogleはAPIも含めてほぼどのサイトでも設定を追加しますので逆に間違えて違うprojectの設定に追加してしまったとか。。とか事故が起こりやすいので自動でprojectの切替え迄ワンセットで設定したほうが事故にならずにおすすめです。

Discussion