Pour utiliser Infrastructure Manager afin de créer, de mettre à jour ou de supprimer un déploiement, vous devez utiliser un compte de service. Infra Manager exécute Terraform à l'aide de l'identité de ce compte de service.
Vous n'avez pas besoin de compte de service pour afficher des informations sur les déploiements Infra Manager.
Cette page explique comment configurer un compte de service pour pouvoir déployer des ressources avec Infrastructure Manager.
Avant de commencer
- Activez le service Infra Manager.
- Créez un compte de service ou identifiez un compte de service existant à utiliser avec Infra Manager.
Accorder l'accès au compte de service
Pour qu'un utilisateur puisse créer, modifier ou supprimer un déploiement à l'aide d'Infrastructure Manager, il doit avoir accès au compte de service.
Attribuez à l'utilisateur le rôle IAM Utilisateur du compte de service (roles/iam.serviceAccountUser) pour le compte de service.
Accorder des autorisations pour Infra Manager
Pour utiliser Infra Manager, le compte de service doit disposer du rôle Agent Infra Manager (roles/config.agent).
Cela accorde à Infra Manager les autorisations nécessaires pour créer, mettre à jour et supprimer des ressources :
gcloud projects add-iam-policy-binding INFRA_MANAGER_PROJECT_ID \
--member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
--role="roles/config.agent"
Remplacez :
INFRA_MANAGER_PROJECT_ID : ID du projet dans lequel vous créez des déploiements.
SERVICE_ACCOUNT_EMAIL : adresse e-mail du compte de service.
Pour savoir comment accorder des autorisations aux comptes de service, consultez Gérer l'accès aux comptes de service.
Accorder l'autorisation de lecture pour le bucket de stockage
Vous pouvez utiliser un bucket de stockage pour stocker les configurations Terraform déployées par Infra Manager.
Si vous utilisez un bucket de stockage pour les configurations et que ce bucket de stockage se trouve dans un projet différent de celui dans lequel vous exécutez Infra Manager, vous devez vous assurer que le compte de service que vous utilisez pour appeler Infra Manager dispose de l'autorisation de lecture pour le bucket. Pour en savoir plus sur les autorisations Cloud Storage, consultez Autorisations IAM pour Cloud Storage.
Si le bucket de stockage se trouve dans le même projet qu'Infra Manager et que vous avez accordé roles/config.agent au compte de service, l'autorisation de lecture du bucket est déjà activée.
Pour savoir comment importer une configuration dans un bucket de stockage, consultez Importer une configuration Terraform.
Accorder des autorisations pour les ressources définies dans la configuration
Pour créer et gérer les ressources Google Cloud définies dans la configuration Terraform, le compte de service a besoin d'autorisations spécifiques à ces ressources.
Autorisations spécifiques aux ressources Google Cloud définies dans la configuration Terraform que vous déployez. Par exemple, l'autorisation permettant de créer une instance de VM Compute Engine est
compute.instances.create.Autorisations spécifiques aux ressources Google Cloud définies dans la configuration Terraform du déploiement que vous mettez à jour.
Par exemple, supposons que votre déploiement provisionne une VM Compute Engine, puis que vous mettez à jour le déploiement à l'aide d'une configuration qui n'inclut pas de VM Compute Engine. Dans ce cas, lorsque vous mettez à jour la révision, le compte de service a besoin des éléments suivants :
Autorisations pour les ressources définies dans la nouvelle configuration.
Autorisations pour les ressources en cours de suppression, telles que la VM Compute Engine dans cet exemple.
Pour identifier les autorisations nécessaires pour les ressources dans les configurations Terraform, consultez Choisir des rôles prédéfinis.
Pour savoir comment accorder des autorisations aux comptes de service, consultez Gérer l'accès aux comptes de service.
Accorder l'accès à plusieurs projets
Des autorisations supplémentaires sont requises si le compte de service indiqué se trouve dans un projet différent de celui dans lequel le service Infra Manager est exécuté.
Pour accorder ces autorisations supplémentaires :
Assurez-vous que le compte de service dispose du rôle Agent Infra Manager (
roles/config.agent) dans le projet exécutant Infra Manager. Pour savoir comment accorder des autorisations, consultez Accorder des autorisations pour Infra Manager.Facultatif : Si vous utilisez Developer Connect pour déployer une configuration Terraform, accordez le rôle
roles/iam.serviceAccountTokenCreatorau compte de service.Dans le projet contenant le compte de service, assurez-vous que la contrainte de règle d'administration
iam.disableCrossProjectServiceAccountUsagen'est pas appliquée. Cette contrainte est appliquée par défaut.Pour désactiver cette contrainte de règle d'administration, exécutez la commande suivante :
gcloud resource-manager org-policies disable-enforce iam.disableCrossProjectServiceAccountUsage --project=SERVICE_ACCOUNT_PROJECT_IDRemplacez SERVICE_ACCOUNT_PROJECT_ID par l'ID du projet contenant le compte de service.
Dans le projet qui possède le compte de service, attribuez le rôle
roles/iam.serviceAccountUserà l'agent de service Infra Manager du projet dans lequel vous créez des déploiements :gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser"Remplacez :
- SERVICE_ACCOUNT_PROJECT_ID : ID du projet contenant le compte de service.
- INFRA_MANAGER_PROJECT_NUMBER : numéro du projet dans lequel vous créez des déploiements. L'adresse e-mail de l'agent de service est donc la suivante :
service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-config.iam.gserviceaccount.com
Attribuez le rôle Créateur de jetons du compte de service (
roles/iam.serviceAccountTokenCreator) à l'agent de service Cloud Build dans le projet où vous créez des déploiements. Pour permettre à Infra Manager d'exécuter Terraform à l'aide de Cloud Build, l'agent de service Cloud Build du projet contenant le compte de service a besoin d'autorisations supplémentaires dans le cadre de la configuration multiprojet :gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member="serviceAccount:service-INFRA_MANAGER_PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountTokenCreator"
Étapes suivantes
- Apprenez-en davantage sur IAM
- En savoir plus sur Terraform avec Google Cloud
- Déployez l'infrastructure à l'aide d'Infra Manager.
- Mettre à jour un déploiement
- Affichez l'état d'un déploiement.