Créer et importer un plan

Un blueprint est une configuration Terraform empaquetée sous la forme d'une image Open Container Initiative (OCI). La configuration Terraform spécifie l'infrastructure et l'application que SaaS Runtime déploie sur Google Cloud.

Cette page explique comment créer une image OCI à partir de configurations Terraform existantes et comment l'importer dans SaaS Runtime.

Pour en savoir plus sur ces configurations Terraform, consultez Plans dans l'environnement d'exécution SaaS.

Avant de commencer

  1. Assurez-vous d'avoir activé l'environnement d'exécution SaaS.
  2. Dans le projet que vous utilisez pour SaaS Runtime, assurez-vous de disposer d'un dépôt Artifact Registry défini au format Docker. Pour en savoir plus, consultez Créer un dépôt pour l'environnement d'exécution SaaS.
  3. Identifiez les configurations Terraform que vous souhaitez déployer à l'aide de SaaS Runtime.

Créer et importer le plan

Pour déployer les configurations Terraform sur Google Cloud à l'aide de SaaS Runtime, vous devez :

  • Empaquetez les configurations Terraform dans des images OCI. Ces images OCI sont appelées "blueprints" (plans).
  • Placez ces images OCI dans le dépôt Artifact Registry que vous avez identifié ou configuré.

Selon la façon dont vous choisissez de créer et d'importer le plan, vous pouvez effectuer toutes les étapes manuellement ou laisser SaaS Runtime en effectuer certaines.

Vous pouvez créer l'image OCI et l'importer dans le dépôt à l'aide de l'une des méthodes suivantes :

  • Importez une archive ZIP contenant la configuration Terraform. L'environnement d'exécution SaaS utilise l'archive ZIP pour créer l'image OCI.

    Pour en savoir plus, consultez la section suivante : Importer une archive ZIP.

  • Connectez un dépôt Git contenant les fichiers Terraform. L'environnement d'exécution SaaS utilise les fichiers pour créer l'image OCI. L'environnement d'exécution SaaS utilise ensuite Cloud Build pour compiler et importer le plan chaque fois que vous mettez à jour votre dépôt.

    Pour en savoir plus, consultez la section Se connecter à un dépôt Git.

  • Créez l'image OCI en local et transférez-la vers le dépôt dans Artifact Registry.

    Pour en savoir plus, consultez la section suivante : Créer et envoyer une image manuellement.

  • Automatisez la création et le transfert de l'image OCI vers un dépôt dans Artifact Registry. L'automatisation de ce processus vous aide à intégrer SaaS Runtime dans un pipeline CI/CD.

    Pour en savoir plus, consultez la section Automatiser la création de plans.

Importer une archive ZIP

Vous pouvez créer une archive ZIP des fichiers Terraform. Vous importez cette archive dans l'environnement d'exécution SaaS lorsque vous créez une version ou un genre d'unité. SaaS Runtime utilise l'archive ZIP pour créer l'image OCI requise.

Pour fournir un plan à l'aide d'une archive ZIP, procédez comme suit :

  1. Accédez au répertoire de votre projet Terraform.
  2. Créez une archive ZIP contenant la configuration Terraform.
    • Vérifiez les points suivants :
      • L'archive ZIP ne contient que vos fichiers Terraform. Par exemple, main.tf, variables.tf, outputs.tf, versions.tf et les modules.
      • L'archive ZIP ne contient pas de fichiers inutiles, par exemple des répertoires .git ou un fichier Dockerfile.
    • La commande permettant de créer une archive ZIP peut ressembler à ceci : zip terraform-files.zip main.tf outputs.tf variables.tf versions.tf
  3. Importez l'archive ZIP lorsque vous créez une version ou lorsque vous créez un type d'unité.

L'environnement d'exécution SaaS utilise l'archive ZIP pour créer l'image OCI requise et la transfère vers le dépôt Artifact Registry.

Se connecter à un dépôt Git

Si vous stockez votre configuration Terraform dans un dépôt Git, vous pouvez connecter l'environnement d'exécution SaaS à ce dépôt. SaaS Runtime utilise les fichiers pour créer l'image OCI requise lorsque vous créez un type d'unité ou une version.

Pour fournir un plan à l'aide d'un dépôt Git, procédez comme suit :

  1. Assurez-vous que vos fichiers Terraform se trouvent dans le répertoire racine de votre dépôt Git.
  2. Connectez votre dépôt Git à SaaS Runtime lorsque vous créez une version ou lorsque vous créez un genre d'unité.

L'environnement d'exécution SaaS utilise Developer Connect pour se connecter au dépôt Git. Pour en savoir plus sur Developer Connect, consultez la documentation de Developer Connect.

L'environnement d'exécution SaaS utilise les fichiers Terraform du dépôt Git pour créer l'image OCI requise et la transfère vers le dépôt Artifact Registry.

Cette intégration automatise le processus de création de plans chaque fois que vous mettez à jour votre code Terraform dans votre dépôt. Lorsque des modifications sont apportées au dépôt Git associé, SaaS Runtime utilise les fichiers modifiés pour compiler automatiquement une nouvelle image OCI, puis la transfère vers le dépôt Artifact Registry.

Créer et transférer une image manuellement

Cette méthode vous permet de contrôler précisément le processus de création de plans.

Pour créer un plan manuellement, procédez comme suit :

  1. Dans le répertoire racine de vos fichiers Terraform, créez un fichier nommé Dockerfile avec le contenu suivant :

    # syntax=docker/dockerfile:1-labs
    FROM scratch
    COPY --exclude=Dockerfile --exclude=.git --exclude=.gitignore . /
    

    Ce Dockerfile utilise une image de base minimale (scratch). Envisagez d'inclure dockerignore à la commande pour exclure les fichiers non pertinents, tels que :

    • le Dockerfile lui-même
    • le répertoire .git
    • le fichier .gitignore
  2. Si vous ne disposez pas d'un compilateur Docker, créez-en un docker-container à l'aide de docker buildx en utilisant la commande suivante :

    docker buildx create --name container --driver=docker-container
    
  3. Exécutez la commande docker buildx build suivante à partir de votre répertoire Terraform pour créer et transférer le blueprint vers Artifact Registry :

    IMAGE_NAME=us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:TAG
    ENGINE_TYPE=inframanager
    ENGINE_VERSION=TERRAFORM_VERSION
    
    docker buildx build -t $IMAGE_NAME \
      --builder=container \
      --push \
      --annotation "com.easysaas.engine.type=$ENGINE_TYPE" \
      --annotation "com.easysaas.engine.version=$ENGINE_VERSION" \
      --provenance=false .
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet
    • REPOSITORY_NAME : nom de votre dépôt Artifact Registry
    • IMAGE_NAME : nom de votre image de plan.
    • TAG : tag pour la version de votre image (par exemple, latest ou v1.0.0). Choisir un tag descriptif vous aide à gérer efficacement les versions du blueprint.
    • TERRAFORM_VERSION : version de Terraform compatible à utiliser. Pour obtenir la liste des versions Terraform compatibles avec Infrastructure Manager, consultez Versions Terraform compatibles.

    Une commande peut ressembler à l'exemple suivant :

    IMAGE_NAME=us-docker.pkg.dev/saas-docs-testing/blueprints-repo/my-terraform-blueprint:v1.0.0
    ENGINE_TYPE=inframanager
    ENGINE_VERSION=1.5.7
    
    docker buildx build -t $IMAGE_NAME \
      --builder=container \
      --push \
      --annotation "com.easysaas.engine.type=$ENGINE_TYPE" \
      --annotation "com.easysaas.engine.version=$ENGINE_VERSION" \
      --provenance=false .
    

L'image OCI se trouve dans le dépôt Artifact Registry.

Pour utiliser cette image avec SaaS Runtime, sélectionnez-la lorsque vous créez une version ou un type d'unité.

Automatiser la création de plans

Vous pouvez automatiser la création de l'image OCI et son envoi à Artifact Registry à l'aide de Cloud Build. Vous pouvez configurer un déclencheur pour que l'image OCI soit automatiquement créée et transférée vers Artifact Registry chaque fois que le code Terraform est modifié.

Pour configurer cette automatisation, procédez comme suit :

  1. À la racine de votre dépôt Terraform, créez un fichier cloudbuild.yaml avec la configuration suivante :

    steps:
    - id: 'Create Dockerfile'
      name: 'bash'
      args: ['-c', 'echo -e "# syntax=docker/dockerfile:1-labs\nFROM scratch\nCOPY --exclude=Dockerfile.Blueprint --exclude=.git --exclude=.gitignore . /" > Dockerfile.Blueprint']
    - id: 'Create docker-container driver'
      name: 'docker'
      args: ['buildx', 'create', '--name', 'container', '--driver=docker-container']
    - id: 'Build and Push docker image'
      name: 'docker'
      args: ['buildx', 'build', '-t', '${_IMAGE_NAME}', '--builder=container', '--push', '--annotation', 'com.easysaas.engine.type=${_ENGINE_TYPE}','--annotation', 'com.easysaas.engine.version=${_ENGINE_VERSION}', '--provenance=false','-f', 'Dockerfile.Blueprint', '.']
    serviceAccount: '${_SERVICE_ACCOUNT}'
    substitutions:
      _SERVICE_ACCOUNT: 'projects/PROJECT_ID/serviceAccounts/CLOUD_BUILD_SERVICE_ACCOUNT'
      _IMAGE_NAME: 'us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest'
      _ENGINE_TYPE: 'inframanager'
      _ENGINE_VERSION: 'TERRAFORM_VERSION'
    options:
      logging: CLOUD_LOGGING_ONLY
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet
    • CLOUD_BUILD_SERVICE_ACCOUNT : nom complet de votre compte de service Cloud Build. Pour en savoir plus sur l'environnement d'exécution SaaS et les comptes de service, consultez Comptes de service de l'environnement d'exécution SaaS.
    • REPOSITORY_NAME : nom de votre dépôt Artifact Registry
    • IMAGE_NAME : nom de votre image de plan.
    • TAG : tag pour la version de votre image (par exemple, latest ou v1.0.0). Choisir un tag descriptif vous aide à gérer efficacement les versions du blueprint.
    • TERRAFORM_VERSION : version de Terraform compatible à utiliser. Pour obtenir la liste des versions Terraform compatibles avec Infrastructure Manager, consultez Versions Terraform compatibles.
  2. Démarrez le job Cloud Build à l'aide de la commande gcloud builds submit à partir du répertoire contenant votre fichier cloudbuild.yaml :

    gcloud builds submit --config=cloudbuild.yaml --substitutions=_IMAGE_NAME='us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:TAG'
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de votre projet
    • REPOSITORY_NAME : nom de votre dépôt Artifact Registry
    • IMAGE_NAME : nom de votre image de blueprint
    • TAG : tag pour la version de votre image (par exemple, latest ou v1.0.0). Choisir un tag descriptif vous aide à gérer efficacement les versions du blueprint.
  3. Vous pouvez configurer un déclencheur pour que l'image OCI soit automatiquement créée et transférée vers Artifact Registry chaque fois que le code Terraform est modifié. Pour en savoir plus, consultez Créer et gérer des déclencheurs de compilation.

L'image OCI se trouve désormais dans le dépôt Artifact Registry.

Pour utiliser cette image avec SaaS Runtime, sélectionnez-la lorsque vous créez une version ou un type d'unité.

Étapes suivantes