web-dev-qa-db-ja.com

gcloudで複数のサービスアカウントを使用する方法

2つのGoogle Cloudサービスアカウントがあります。 2つのプロジェクトごとに1つ。

# ACCOUNTS
[email protected]
[email protected]

コマンドを実行する前に、使用する必要があるアカウントをgcloudに伝えることができます。

gcloud set account [ACCOUNT]

質問:gcloudgsutilを設定して、それらを切り替えることなくそれぞれのプロジェクトで実行される操作に使用できるようにする方法はありますか常に手動でアカウント?


1つのプロジェクトでインスタンスを管理しており、別のプロジェクトのバケットからファイルをアップロード/ダウンロードしています。コマンドの合間に常にgcloud set_account [ACCOUNT]を実行しなければならないのは非常に退屈です。

両方のプロジェクトで長時間実行されるコマンドを同時に実行する必要があるため、これらのコマンドに使用されるアカウントをアクティブ化/非アクティブ化すると、ピットに落ちると思われます。

おそらく私の唯一のオプションは、2つの異なるDockerコンテナからgoogle-cloud-sdkを実行することですか?

22
fredrik

ここにはいくつかのオプションがあります:

  • Cloud SDKは、プロパティを指定する環境変数を尊重します。 gcloud config set accountgcloud config set core/accountの省略形であるため、対応するプロパティはCLOUDSDK_CORE_ACCOUNTです。

    次のようなことができます:

    $ [email protected] gcloud ...
    $ [email protected] gcloud ...
    

    興味のある結果が得られるはずです。

  • 複数のプロパティを変更する必要がある場合、Cloud SDKは named configuration abstractionを提供します。詳細についてはドキュメントをご覧ください。ただし、次を実行できます。

    $ gcloud config configurations create my-project1-config
    $ gcloud config configurations activate my-project1-config
    $ gcloud auth login  # or activate-service-account
    $ gcloud config set project project1  # and any other configuration you need to do
    $ 
    $ gcloud config configurations create my-project2-config
    $ gcloud config configurations activate my-project2-config
    $ gcloud auth login  # or activate-service-account
    $ gcloud config set project project2  # and any other configuration you need to do
    $
    $ CLOUDSDK_ACTIVE_CONFIG_NAME=my-project1-config gcloud ...
    $ CLOUDSDK_ACTIVE_CONFIG_NAME=my-project2-config gcloud ...
    
  • 最も極端な場合、個別のCloud SDK構成ディレクトリを維持できます。デフォルト(* nix)は~/.config/gcloudです:

    $ CLOUDSDK_CONFIG=/tmp/tmpconfig1 gcloud auth login
    $ CLOUDSDK_CONFIG=/tmp/tmpconfig2 gcloud auth login
    
35
Zachary Newman

Zacharyの答えは非常に便利ですが、gcloudの構成を使用する簡単な方法があります。

gcloud config configurations listを実行して、構成のリストを表示します。まだ作成していない場合は、アクティブな現在のアカウント、プロジェクトなど、defaultがリストされます。

gcloud config configurations create [config name]を使用して新しい構成を作成します。

> gcloud config configurations create testconfig
Created [testconfig].
Activated [testconfig].

これで新しい構成がアクティブになるので、gcloud initを使用してセットアップします。

> gcloud init
Welcome! This command will take you through the configuration of gcloud.

その後、一連の質問が表示されます。

  • 使用する構成を選択するように求められたら、[1] Re-initialize this configuration [testconfig] with new settingsを選択します。
  • 次に、アカウントを選択またはログインするように求められます。
  • 次に、プロジェクトを選択または作成するように求められます。
  • 最後に、プロジェクトのデフォルトゾーンを設定するかどうかを尋ねられます。それはあなた次第です;すべてが同じゾーンにあるプロジェクトでは、先に進んで設定してください。

Your Google Cloud SDK is configured and ready to use!

gcloud config configurations activate [config name]を使用してアカウントを切り替えます。

15
mbuc91