Créer une configuration Terraform

Lors de l'organisation des solutions Service Catalog de votre organisation, vous pouvez créer une configuration Terraform, ou configuration, que vos utilisateurs déploient à l'aide de Terraform. Une fois la configuration créée, vous pouvez la partager avec des utilisateurs en l'attribuant aux catalogues.

Dans ce guide, vous utilisez Cloud Build pour exécuter des commandes Terraform dans la dernière version de l'image Docker de Terraform, et vous utilisez Cloud Storage pour stocker et gérer les ressources Terraform, telles que les modules et les fichiers d'état.

Pour obtenir des ressources et des conseils sur l'utilisation de Terraform, consultez Utiliser Terraform avec Google Cloud.

Avant de commencer

  • Vous devez disposer des rôles IAM (Identity and Access Management) suivants :

    • Administrateur du catalogue OU Gestionnaire du catalogue pour l'organisationGoogle Cloud associée au projet Google Cloud pour lequel catalogue de services est activé. Si vous ne disposez pas de ce rôle, contactez l'administrateur de votre organisation pour demander l'accès.
    • Administrateur de l'espace de stockage pour le projet Google Cloud dans lequel vous souhaitez créer votre solution. Si votre configuration Terraform se trouve dans un autre projet, vous devez également disposer du rôle Administrateur de l'espace de stockage pour le projet contenant votre configuration Terraform.
    • Éditeur Cloud Build pour le projet Google Cloud dans lequel vous souhaitez créer la solution.

    Si vous prévoyez d'utiliser votre propre compte de service, vous devez également disposer du rôle Utilisateur du compte de service pour le projet Google Cloud contenant le compte de service que vous prévoyez d'utiliser.

    Si vous ne disposez pas de ces rôles, contactez l'administrateur de votre organisation pour demander l'accès.

  • Si vous prévoyez d'utiliser votre propre compte de service, celui-ci doit disposer des rôles IAM suivants :

    Si vous ne disposez pas de ces rôles, contactez l'administrateur de votre organisation pour demander l'accès.

  • Configurez Cloud Build dans le projet dans lequel vous créez la configuration :

    1. Activez l'API Cloud Build.

      Rôles requis pour activer les API

      Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin), qui contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.

      Activer l'API

      L'activation de l'API crée automatiquement un compte de service Cloud Build que vous utiliserez à l'étape suivante.
    2. Accédez à la page Cloud Build.
    3. Dans le panneau de gauche, sélectionnez Paramètres.
    4. Utilisez le compte de service fourni dans la section Adresse e-mail du compte de service.
    5. Si vous n'utilisez pas votre propre compte de service, accordez les rôles IAM suivants au compte de service. Pour savoir comment attribuer des rôles, consultez Configurer l'accès pour le compte de service Cloud Build.

Importer des fichiers de configuration dans Cloud Storage

Vous utilisez Cloud Storage pour gérer vos fichiers de configuration Terraform pour Service Catalog.

Créer un bucket Cloud Storage

Pour configurer Cloud Storage, créez un bucket dans le projet où vous avez activé Service Catalog pour votre organisation :

  1. Dans la console Google Cloud , accédez à la page Buckets Cloud Storage.

    Accéder à la page "Buckets"

  2. Cliquez sur  Créer.
  3. Sur la page Créer un bucket, saisissez les informations concernant votre bucket. Pour passer à l'étape suivante, cliquez sur Continuer.
    1. Dans la section Premiers pas, procédez comme suit :
    2. Dans la section Choisir l'emplacement de stockage de vos données, procédez comme suit :
      1. Sélectionnez un type d'emplacement.
      2. Choisissez un emplacement où les données de votre bucket seront stockées de manière permanente dans le menu déroulant Type d'emplacement.
        • Si vous sélectionnez le type d'emplacement birégional, vous pouvez également choisir d'activer la réplication turbo à l'aide de la case à cocher correspondante.
      3. Pour configurer la réplication entre buckets, sélectionnez Ajouter une réplication entre buckets via le service de transfert de stockage et suivez ces étapes :

        Configurer la réplication entre buckets

        1. Dans le menu Bucket, sélectionnez un bucket.
        2. Dans la section Paramètres de réplication, cliquez sur Configurer pour configurer les paramètres du job de réplication.

          Le volet Configurer la réplication entre buckets s'affiche.

          • Pour filtrer les objets à répliquer en fonction du préfixe de leur nom, saisissez le préfixe avec lequel vous souhaitez inclure ou exclure des objets, puis cliquez sur Ajouter un préfixe.
          • Pour définir une classe de stockage pour les objets répliqués, sélectionnez-en une dans le menu Classe de stockage. Si vous ignorez cette étape, les objets répliqués utiliseront la classe de stockage par défaut du bucket de destination.
          • Cliquez sur OK.
    3. Dans la section Choisir comment stocker vos données, procédez comme suit :
      1. Sélectionnez une classe de stockage par défaut pour le bucket ou classe automatique pour gérer automatiquement les classes de stockage des données de votre bucket.
      2. Pour activer l'espace de noms hiérarchique, dans la section Optimiser l'espace de stockage pour les charges de travail utilisant beaucoup de données, sélectionnez Activer l'espace de noms hiérarchique sur ce bucket.
    4. Dans la section Choisir comment contrôler l'accès aux objets, indiquez si votre bucket applique ou non la protection contre l'accès public et sélectionnez une méthode de contrôle des accès pour les objets de votre bucket.
    5. Dans la section Choisir comment protéger les données d'objet, procédez comme suit :
      • Sous Protection des données, sélectionnez les options que vous souhaitez définir pour votre bucket.
        • Pour activer la suppression réversible, cochez la case Règle de suppression réversible (pour la récupération de données), puis spécifiez le nombre de jours pendant lesquels vous souhaitez conserver les objets après leur suppression.
        • Pour configurer la gestion des versions d'objets, cochez la case Gestion des versions des objets (pour le contrôle des versions), puis spécifiez le nombre maximal de versions par objet et le nombre de jours après lesquels les versions obsolètes expirent.
        • Pour activer la règle de conservation sur les objets et les buckets, cochez la case Conservation (pour la conformité), puis procédez comme suit :
          • Pour activer le verrou de conservation des objets, cochez la case Activer la conservation des objets.
          • Pour activer le verrou de bucket, cochez la case Définir une règle de conservation du bucket, puis choisissez une unité de temps et une durée pour votre période de conservation.
      • Pour choisir comment vos données d'objet seront chiffrées, développez la section Chiffrement des données (), puis sélectionnez une méthode de chiffrement des données.
  4. Cliquez sur Créer.

Activer la gestion des versions d'objets

Vous devez utiliser la fonctionnalité de gestion des versions d'objets dans votre bucket pour éviter que votre configuration Terraform ne soit supprimée ou écrasée. Pour activer la gestion des versions d'objets, consultez la documentation Cloud Storage sur l'utilisation de la gestion des versions d'objets.

Accorder l'accès à votre bucket

Lorsque les utilisateurs de votre organisation déploient la configuration, leur compte de service Cloud Build doit disposer d'un accès en lecture à votre bucket. Si votre bucket est stocké dans le même projet Google Cloud dans lequel les utilisateurs déploient la configuration, le compte de service dispose déjà de cet accès.

Si vos utilisateurs déploient la configuration dans un autre projetGoogle Cloud , accordez l'accès au bucket en utilisant l'une des méthodes suivantes :

  • Attribuez le rôle Lecteur des objets de l'espace de stockage (roles/storage.objectViewer) aux comptes de service Cloud Build de vos utilisateurs ou à une ressource Google Cloud dans laquelle vos utilisateurs déploient des configurations Terraform, telle qu'un projet, un dossier ou une organisation.

  • Utilisez une liste de contrôle d'accès (LCA) pour gérer l'accès au bucket.

Pour en savoir plus sur la gestion des accès aux buckets, consultez la page Présentation du contrôle des accès de Cloud Storage.

Créer et importer un module Terraform

Après avoir configuré votre bucket Cloud Storage, vous devez créer et importer un module Terraform, qui est un conteneur de tous vos fichiers de configuration. Service Catalog utilise le module pour générer automatiquement un fichier de schéma JSON afin de définir les variables de votre configuration.

Lorsque vous appelez des modules en dehors du répertoire actuel, utilisez le chemin d'accès distant au lieu d'un chemin d'accès relatif. Par exemple, au lieu de source = "../../", utilisez source = "GoogleCloudPlatform/cloud-run/google".

Pour obtenir les modules correspondant aux cas d'utilisation courants de Google Cloud , consultez Plans et modules Terraform pour Google Cloud.

L'exemple de code suivant illustre un fichier de configuration Terraform main.tf :


variable "machine_type" {
  type    = string
  default = "n1-standard-1"
}

variable "zone" {
  type    = string
  default = "us-central1-a"
}

variable "deployment_identifier" {
  description = "The unique name for your instance"
  type        = string
}

resource "google_compute_instance" "default" {
  name         = "vm-${var.deployment_identifier}"
  machine_type = var.machine_type
  zone         = var.zone

  boot_disk {
    device_name = "boot"
    auto_delete = true
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network = "default"
    access_config {
      // Ephemeral IP
    }
  }
}

Après avoir créé votre module, compressez le ou les fichiers dans un fichier ZIP. Assurez-vous que le module est stocké à la racine du fichier ZIP.

Pour vous assurer que le module est correctement stocké lorsque vous compressez vos fichiers Terraform, exécutez la commande suivante : none zip solution.zip file1.tf file2.tf file3.tf

Importez ensuite le fichier ZIP dans votre bucket. Pour savoir comment importer un fichier ZIP, consultez la documentation de Cloud Storage sur l'importation d'objets.

Créer la configuration dans le catalogue de services

Après avoir configuré un bucket Cloud Storage avec votre module Terraform, vous créez une solution Service Catalog qui inclut le bucket.

Pour créer la configuration Terraform en tant que solution Service Catalog, procédez comme suit :

  1. Accédez à la page Solutions de l'administration Service Catalog dans la console Google Cloud .
    Accéder à la page Solutions

  2. Pour choisir le projet Google Cloud , cliquez sur Sélectionner.

  3. Cliquez sur Créer une solution. Dans la liste déroulante, sélectionnez Créer une configuration Terraform.

  4. Saisissez un nom, une description et un slogan pour votre configuration Terraform. Le slogan est une brève description d'une solution que les utilisateurs voient lorsqu'ils parcourent Service Catalog.

  5. Dans le champ Lien vers la configuration Terraform, indiquez le lien vers le bucket Cloud Storage contenant le fichier ZIP du module Terraform, par exemple gs://my-terraform-bucket/my-zip-file.zip.

  6. Si vous le souhaitez, importez une icône pour la solution. Les dimensions recommandées pour une icône sont de 80 x 80 pixels.

  7. Si vous le souhaitez, indiquez un lien vers l'assistance et les coordonnées pour le créateur.

  8. Si vous le souhaitez, ajoutez un lien vers la documentation de la solution.

  9. Sélectionnez la version de Terraform que vous souhaitez utiliser pour déployer la solution.

  10. Vous pouvez également fournir votre propre compte de service en cochant la case à côté de Sélectionner ou indiquer votre propre compte de service. Si votre compte de service se trouve dans le même projet Google Cloud que celui dans lequel vous créez votre solution, sélectionnez Sélectionner un compte de service du projet actuel, puis sélectionnez votre compte de service dans le menu déroulant. Si votre compte de service se trouve dans un projet Google Cloud différent de votre solution, sélectionnez Saisir l'adresse e-mail d'un compte de service associé à un projet, puis saisissez l'adresse e-mail de votre compte de service.

  11. Cliquez sur CRÉER.

La solution est créée et apparaît sur la page Solutions de l'administrateur Service Catalog.

La capture d'écran suivante illustre la création d'une configuration Terraform :

Créer une configuration Terraform

Étapes suivantes