Guide de démarrage rapide: créer un workflow à l'aide de Terraform

Dans ce guide de démarrage rapide, vous allez découvrir comment créer, déployer et exécuter votre premier workflow à l'aide de Terraform. Terraform est un outil Open Source d'HashiCorp qui vous permet de créer, de modifier et d'améliorer de manière prévisible votre infrastructure cloud en utilisant du code. Dans ce guide de démarrage rapide, le workflow envoie une requête à un exemple d'API, puis utilise la réponse pour créer et envoyer une requête à une API publique. Le workflow renvoie ensuite la réponse de l'API publique.

Dans ce document, à l'aide de Terraform, vous allez:

  1. Activer l'API Workflows
  2. Créer un compte de service pour la workflow
  3. Définir et déployer un workflow à l'aide de Terraform
  4. Exécutez le workflow avec l'outil de ligne de commande gcloud.

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

Avant de commencer

Certaines étapes de ce document risquent de ne pas fonctionner correctement si votre organisation applique des contraintes à votre environnement Google Cloud. Dans ce cas, vous ne pourrez peut-être pas effectuer des tâches telles que la création d'adresses IP publiques ou de clés de compte de service. Si vous effectuez une requête qui renvoie une erreur concernant des contraintes, consultez la section Développer des applications dans un environnement Google Cloud limité.

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  4. Installez et initialisez le SDK Cloud.
  5. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  6. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  7. Installez et initialisez le SDK Cloud.
  8. Dans Cloud Console, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de Cloud Console, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel le SDK Cloud est déjà installé (y compris l'outil de ligne de commande gcloud), et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  9. Terraform est déjà intégré à Cloud Shell.

Créer un fichier de configuration Terraform

Créez un fichier de configuration Terraform nommé main.tf pour inclure les ressources Google Cloud utilisées dans ce projet.

  1. Créez un répertoire.
    mkdir terraform
  2. Accédez au répertoire terraform :
    cd terraform
  3. Ajoutez un nouveau fichier, main.tf, au répertoire:
    nano main.tf
  4. Ajoutez ce qui suit au fichier main.tf :
    1. Attribuez l'ID du projet:
      provider "google" {
       project = "PROJECT_ID"
      }
      

      Remplacez PROJECT_ID par l'ID de votre projet.

    2. Activer l'API Workflows
      resource "google_project_service" "workflows" {
        service            = "workflows.googleapis.com"
        disable_on_destroy = false
      }
    3. Créer un compte de service pour le workflow
      resource "google_service_account" "workflows_service_account" {
        account_id   = "sample-workflows-sa"
        display_name = "Sample Workflows Service Account"
      }
    4. Définissez et déployez le workflow:
      resource "google_workflows_workflow" "workflows_example" {
        name            = "sample-workflow"
        region          = "us-central1"
        description     = "A sample workflow"
        service_account = google_service_account.workflows_service_account.id
        source_contents = <<-EOF
        # This is a sample workflow, feel free to replace it with your source code
        #
        # This workflow does the following:
        # - reads current time and date information from an external API and stores
        #   the response in CurrentDateTime variable
        # - retrieves a list of Wikipedia articles related to the day of the week
        #   from CurrentDateTime
        # - returns the list of articles as an output of the workflow
        # FYI, In terraform you need to escape the $$ or it will cause errors.
      
        - getCurrentTime:
            call: http.get
            args:
                url: https://us-central1-workflowsample.cloudfunctions.net/datetime
            result: CurrentDateTime
        - readWikipedia:
            call: http.get
            args:
                url: https://en.wikipedia.org/w/api.php
                query:
                    action: opensearch
                    search: $${CurrentDateTime.body.dayOfTheWeek}
            result: WikiResult
        - returnOutput:
            return: $${WikiResult.body[1]}
      EOF
      
        depends_on = [google_project_service.workflows]
      }

Déployer et exécuter le workflow

Déployez vos ressources avec Terraform pour créer un workflow.

  1. Initialisez Terraform dans le répertoire:

    terraform init
    
  2. Vérifiez que les modifications que vous proposez avec Terraform correspondent au plan attendu:
    terraform plan
    

    Vous pouvez ignorer la note indiquant que l'option -out n'est pas utilisée.

  3. Créez le workflow:

    terraform apply
    
  4. Lorsque l'invite Saisir une valeur s'affiche, saisissez yes pour procéder à la création des ressources.
  5. Vérifiez que le workflow a bien été créé:
    gcloud workflows list --location us-central1
    

    La sortie devrait ressembler à ce qui suit :

    NAME                                                                          STATE   REVISION_ID  UPDATE_TIME
    projects/project-name/locations/us-central1/workflows/sample-workflow         ACTIVE  000001-f9a   2021-06-24T13:38:58.353765906Z
    

  6. Vous pouvez également exécuter le workflow:
    gcloud workflows execute sample-workflow
    

Effectuer un nettoyage

Pour éviter que les ressources utilisées sur cette page soient facturées sur votre compte Google Cloud :

Vous pouvez supprimer toutes les ressources que vous avez créées avec Terraform à l'aide de la commande suivante:

terraform destroy

Vous pouvez également supprimer le workflow que vous avez créé.

  1. Supprimez le workflow que vous avez créé:
    gcloud workflows delete sample-workflow
  2. Lorsque vous êtes invité à poursuivre l'opération, saisissez y.

Le workflow est supprimé.

Étape suivante