👋
Google Cloud CLI インストール後に実施している設定
プロジェクト作成
Google Cloud プロジェクトを作成し、設定を行います。
gcloud config configurations create hoge-project
gcloud config set project hoge-project
gcloud config set account hoge@example.com
複数回コマンド実行するのが大変なので、以下のようなシェルスクリプトを準備して登録しています。
#!/bin/bash
# 引数チェック
if [ $# -ne 2 ]; then
echo "Usage: $0 <project-name> <account-name>"
exit 1
fi
PROJECT_NAME="$1"
ACCOUNT_NAME="$2"
# プロジェクトが既に存在するかどうかをチェック
gcloud config configurations list --filter="NAME=${PROJECT_NAME}" --format="value(NAME)" | grep -q "^${PROJECT_NAME}$"
if [ $? -eq 0 ]; then
echo "Configuration '${PROJECT_NAME}' already exists."
exit 1
fi
# 新しい設定を作成
gcloud config configurations create "${PROJECT_NAME}"
if [ $? -ne 0 ]; then
echo "Failed to create configuration '${PROJECT_NAME}'."
exit 1
fi
# プロジェクトを設定
gcloud config set project "${PROJECT_NAME}"
if [ $? -ne 0 ]; then
echo "Failed to set project '${PROJECT_NAME}'."
exit 1
fi
# アカウントを設定
gcloud config set account "${ACCOUNT_NAME}"
if [ $? -ne 0 ]; then
echo "Failed to set account '${ACCOUNT_NAME}'."
exit 1
fi
echo "-------------------------------"
gcloud config configurations list
使用例
-
シェルスクリプトをファイルに保存します。例えば
create_gcp_config.sh
という名前にします。 -
ファイルに実行権限を付与します。
chmod +x create_gcp_config.sh
-
シェルスクリプトを実行して、新しいGCPプロジェクト設定を作成します。以下の例では、プロジェクト名を
my-new-project
、アカウント名をmy-email@example.com
としています./create_gcp_config.sh my-new-project my-email@example.com
実行後、新しいGCPプロジェクト設定が作成され、設定リストが表示されます。
初回認証
ユーザアカウント認証
gcloud auth login
- 認証情報は
~/.config/gcloud/credentials.db
に保存されます。 -
gcloud
、gsutil
、bq
などのツールで使用されます。
以下のコマンドで保存された認証情報を確認できます。
sqlite3 ~/.config/gcloud/credentials.db "SELECT * FROM credentials;"
xxxxxxxx@hogehoge.co.jp|{
"client_id": "xxxxxxxxxxxx.apps.googleusercontent.com",
"client_secret": "xxxxxxxxxxxxxxxxxxxx",
"refresh_token": "1//xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"revoke_uri": "https://accounts.google.com/o/oauth2/revoke",
"scopes": [
"openid",
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/appengine.admin",
"https://www.googleapis.com/auth/sqlservice.login",
"https://www.googleapis.com/auth/compute",
"https://www.googleapis.com/auth/accounts.reauth"
],
"token_uri": "https://oauth2.googleapis.com/token",
"type": "authorized_user",
"universe_domain": "googleapis.com"
}
アプリケーションデフォルト認証
gcloud auth application-default login
- 認証情報は
~/.config/gcloud/application_default_credentials.json
に保存されます。 - Terraformなどの外部アプリケーションがGoogle Cloudリソースにアクセスするための認証情報です。
-
application-default login
は1つのアカウントに対してのみ認証情報を保持します。そのため、異なるアカウントを使用する場合は都度gcloud auth application-default login
を実行して認証情報を更新する必要があります。
以下のコマンドで認証情報を確認できます。
cat ~/.config/gcloud/application_default_credentials.json
{
"client_id": "xxxx.apps.googleusercontent.com",
"client_secret": "xxx",
"quota_project_id": "xxxx",
"refresh_token": "xxxx",
"type": "authorized_user"
}
fzfとの連携
fzf
を使用して、簡単にGCPの設定を切り替えることができます。
以下のエイリアスを追加することで、設定リストをインタラクティブに選択し、アクティブ化できます。
alias gc="
gcloud config configurations list \
| awk '{ print \$1,\$3,\$4 }' \
| column -t \
| fzf --header-lines=1 \
| awk '{ print \$1 }' \
| xargs -r gcloud config configurations activate
"
使用例
- 上記のエイリアスを~/.bashrcや~/.zshrcに追加します。
- ターミナルを再起動するか、source ~/.bashrcまたはsource ~/.zshrcを実行して設定を反映させます。
- gcコマンドを実行して、プロジェクト設定を選択します。
gc
fzf
でプロジェクト設定を選択し、Enterキーを押すと、選択した設定がアクティブ化されます。
ターミナルにGCP情報を表示
アクティブなGCPプロジェクト情報をターミナルに表示するための関数を作成します。
これにより、作業中のプロジェクトを確認できるようになります。
gcp_info() {
local gcp_profile gcp_project
local active_config_file="$HOME/.config/gcloud/active_config"
if [ -f "$active_config_file" ]; then
gcp_profile=$(<"$active_config_file")
gcp_project=$(awk '/project/ {print $3}' "$HOME/.config/gcloud/configurations/config_$gcp_profile")
if [ -n "$gcp_project" ]; then
echo "%F{33}[${gcp_project}]%f"
fi
fi
}
PROMPT='$(gcp_info) %~ %(!.#.$) '
Discussion