Automatisez le déploiement des ressources Google Cloud

Cette page décrit la procédure de configuration des déclencheurs Cloud Build pour automatiser les déploiements de ressources Google Cloud à l'aide de vos dépôts existants et d'Infrastructure Manager.

Une fois qu'Infra Manager se connecte à votre dépôt Git, les requêtes pull appellent un aperçu d'un déploiement, et les commits appellent la création d'un aperçu de déploiement ou la mise à jour du déploiement.

Avant de commencer

  1. Assurez-vous que Infra Manager est activé.
  2. Assurez-vous de disposer des autorisations IAM nécessaires pour créer des déploiements :
    • roles/config.admin
  3. Assurez-vous de disposer d'un compte de service disposant des autorisations nécessaires. Pour en savoir plus, consultez la section Configurer le compte de service.
  4. Identifiez le dépôt Git existant contenant la configuration Terraform. Lorsque vous configurez l'automatisation décrite sur cette page, c'est la configuration Terraform qu'Infra Manager utilise pour mettre à jour les ressources.
  5. Recommandation: Configurez la protection des branches pour votre dépôt Git.

Automatiser le déploiement des ressources Google Cloud

Les étapes suivantes décrivent la configuration requise pour automatiser l'aperçu et le déploiement d'une configuration Terraform stockée dans un dépôt Git. Un déploiement d'une configuration Terraform peut être une révision d'un déploiement existant. Les révisions peuvent supprimer ou remplacer les ressources Google Cloud provisionnées.

Une fois la configuration terminée, une demande d'extraction dans le dépôt Git entraîne la création d'un aperçu du déploiement par Infra Manager. Lorsqu'une demande d'extraction est fusionnée, Infra Manager déploie automatiquement la configuration Terraform.

Le module im_cloudbuild_workspace crée plusieurs ressources, y compris les suivantes:

  • Une connexion à un dépôt Cloud Build.
  • Déclencheur Cloud Build appelé lorsqu'une demande d'extraction est créée. Ce déclencheur permet à Infra Manager de créer un déploiement en avant-première à l'aide de la configuration Terraform du dépôt.
  • Déclencheur Cloud Build appelé lorsqu'une demande d'extraction est fusionnée avec le dépôt Git. Ce déclencheur permet à Infra Manager de créer ou de mettre à jour le déploiement à l'aide de la configuration Terraform du dépôt.

Pour automatiser les déploiements de configuration Terraform lorsque le dépôt est mis à jour:

  1. Installez l'application GitHub Cloud Build sur votre compte GitHub ou dans une organisation dont vous êtes propriétaire.
  2. Créez un jeton d'accès personnel.

    Assurez-vous de ne pas définir de date d'expiration pour votre jeton et sélectionnez les autorisations suivantes lorsque vous y êtes invité dans GitHub: repo et read:user. Si votre application est installée dans une organisation, veillez également à sélectionner l'autorisation read:org.

    Après avoir généré votre jeton d'accès personnel, enregistrez-le dans un endroit sécurisé. Vous utiliserez le jeton généré dans les étapes suivantes.

  3. Copiez le module im_cloudbuild_workspace dans le fichier main.tf de votre dépôt Git:

    module "im-workspace" {
     source = "terraform-google-modules/bootstrap/google//modules/im_cloudbuild_workspace"
     version = "~> 7.0"
    
     project_id = PROJECT_ID
     deployment_id = DEPLOYMENT_ID
     im_deployment_repo_uri = GIT_REPO
     im_deployment_ref = REF
    
     github_app_installation_id = GIT_APP_ID
     github_personal_access_token = TOKEN
    }
    

    Remplacez :

    • PROJECT_ID: ID du projet sur lequel s'exécute Infrastructure Manager.
    • DEPLOYMENT_ID: identifiant de déploiement que vous spécifiez. Pour en savoir plus sur les contraintes liées à l'identifiant de déploiement, consultez la section Nom du déploiement.
    • GIT_REPO: URI du dépôt Git.
    • REF: référence Git de la configuration. La référence est facultative. Si vous ne spécifiez pas de référence, la branche configurée par défaut du dépôt Git est utilisée.
    • GIT_APP_ID: ID d'installation de l'application GitHub Cloud Build utilisée pour les déclencheurs de requêtes d'extraction et de transfert.
    • TOKEN: jeton d'accès personnel pour un dépôt GitHub. Si fourni, crée un secret dans Secret Manager.
  4. Créez un déploiement (ou mettez à jour votre déploiement existant) avec le module im_cloudbuild_workspace:

    gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ 
       --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \
       --git-source-repo=GIT_REPO \
       --git-source-directory=DIRECTORY \
       --git-source-ref=REF
    

    Remplacez :

    • PROJECT_ID: ID du projet sur lequel s'exécute Infrastructure Manager.
    • LOCATION: emplacement où Infra Manager s'exécute. Pour obtenir la liste des emplacements, consultez la page Emplacements Infrastructure Manager.
    • DEPLOYMENT_ID: identifiant de déploiement que vous spécifiez. Pour en savoir plus sur les contraintes liées à l'identifiant de déploiement, consultez la section Nom du déploiement.
    • SERVICE_ACCOUNT: nom du compte de service que vous utilisez pour appeler Infra Manager.
    • SERVICE_ACCOUNT_PROJECT_ID correspond à l'ID du projet du compte de service. Il s'agit généralement du même projet que celui dans lequel Infrastructure Manager s'exécute.
    • GIT_REPO: dépôt Git public.
    • DIRECTORY: répertoire contenant la configuration Terraform.
    • REF: référence Git de la configuration. La référence est facultative. Si vous ne spécifiez pas de référence, la branche configurée par défaut du dépôt Git est utilisée.
  5. Pour vérifier que votre dépôt Git est correctement connecté à Infra Manager, créez une demande d'extraction sur votre dépôt.

    Pour consulter les résultats de la validation de la configuration Terraform dissociée, consultez la demande d'extraction sur GitHub.

Maintenant que cette automatisation est configurée, les déclencheurs Cloud Build provoquent les événements suivants:

  • Lorsqu'une demande d'extraction est envoyée au dépôt, Infra Manager crée un déploiement d'aperçu à l'aide de la configuration Terraform dissociée stockée dans le dépôt Git.
  • Lorsqu'une demande d'extraction est fusionnée dans le dépôt, Infra Manager met à jour le déploiement à l'aide de la configuration Terraform dissociée stockée dans le dépôt Git.

Étape suivante