web-dev-qa-db-fra.com

Comment utiliser plusieurs comptes de service avec gcloud?

J'ai deux comptes de service Google Cloud; un pour chacun de mes deux projets.

# ACCOUNTS
[email protected]
[email protected]

Je peux dire à gcloud quel compte je dois utiliser avant d'exécuter une commande:

gcloud set account [ACCOUNT]

Question: Existe-t-il un moyen de configurer gcloud et gsutil afin qu'ils soient utilisés pour les opérations effectuées dans leur projet respectif sans que je doive basculer entre ces comptes manuellement tout le temps?


Je gère des instances dans un projet et je télécharge/télécharge des fichiers à partir de compartiments dans un autre projet. Il devient assez fastidieux de devoir effectuer gcloud set_account [ACCOUNT] toutes les commandes intermédiaires.

J'ai besoin d'exécuter des commandes de longue durée dans les deux projets en même temps, ce qui me fait penser que je tomberai dans une fosse si j'active/désactive les comptes utilisés pour ces commandes.

Peut-être que ma seule option est d'exécuter google-cloud-sdk à partir de deux conteneurs Docker différents?

22
fredrik

Vous avez plusieurs options ici:

  • Le SDK Cloud respecte les variables d'environnement spécifiant les propriétés. gcloud config set account est un raccourci pour gcloud config set core/account, donc la propriété correspondante est CLOUDSDK_CORE_ACCOUNT.

    Vous pouvez faire quelque chose comme:

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

    Ce qui devrait vous donner le résultat qui vous intéresse.

  • Si vous avez besoin de modifier plus d'une propriété, le SDK Cloud propose une abstraction configuration nommée . Consultez la documentation pour plus de détails, mais vous pouvez exécuter:

    $ 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 ...
    
  • Dans le cas le plus extrême, vous pouvez gérer des répertoires de configuration Cloud SDK distincts. La valeur par défaut (sur * nix) est ~/.config/gcloud:

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

La réponse de Zachary est assez utile, mais il existe un moyen plus simple d'utiliser les configurations de gcloud.

Courir gcloud config configurations list pour afficher une liste de vos configurations. Si vous n'en avez pas créé, il vous suffit de lister default avec tous vos comptes, projets, etc. actifs.

Créez une nouvelle configuration avec gcloud config configurations create [config name]:

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

La nouvelle configuration sera maintenant active, alors allez-y et configurez-la avec gcloud init:

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

Il vous posera ensuite une série de questions:

  • Lorsqu'il vous demande de choisir une configuration à utiliser, choisissez [1] Re-initialize this configuration [testconfig] with new settings.
  • Il vous demandera ensuite de choisir ou de vous connecter à un compte.
  • Il vous demandera alors de choisir ou de créer un projet.
  • Enfin, il vous demandera si vous souhaitez définir une zone par défaut pour votre projet. C'est à vous; sur des projets où tout est dans la même zone, allez-y et définissez-le.

Your Google Cloud SDK is configured and ready to use!

Changer de compte à l'aide de gcloud config configurations activate [config name].

15
mbuc91