GCP 事始め Cloud SDKの導入
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以下のドットファイルが作成されます
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の中身を見てみましょう
$ 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
で解決ができます。
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