

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Définir un projet Terraform
<a name="tutorial-create-ami-terraform-define"></a>

Dans ce didacticiel, vous allez définir un projet Terraform simple pour déployer une ParallelCluster AMI personnalisée.

1. Créez un répertoire appelé`my-amis`. 

   Tous les fichiers que vous créez se trouveront dans ce répertoire.

1. Créez le fichier `terraform.tf` pour importer le ParallelCluster fournisseur.

   ```
   terraform {
     required_version = ">= 1.5.7"
     required_providers {
       aws-parallelcluster = {
         source  = "aws-tf/aws-parallelcluster"
         version = "~> 1.0"
       }
     }
   }
   ```

1. Créez le fichier `providers.tf` pour configurer les AWS fournisseurs ParallelCluster et.

   ```
   provider "aws" {
     region  = var.region
     profile = var.profile
   }
   
   provider "aws-parallelcluster" {
     region         = var.region
     profile        = var.profile
     api_stack_name = var.api_stack_name
     use_user_role  = true
   }
   ```

1. Créez le fichier `main.tf` pour définir les ressources à l'aide du ParallelCluster module.

   Pour consulter les propriétés de l'image que vous pouvez définir au sein de l'`image_configuration`élément, voir[Créez des fichiers de configuration d'image](image-builder-configuration-file-v3.md).

   Pour consulter les options que vous pouvez définir pour la création d'images, par exemple`rollback_on_failure`, `image_id` et voir[`pcluster build-image`](pcluster.build-image-v3.md). 

   ```
   data "aws-parallelcluster_list_official_images" "parent_image" {
     region = var.region
     os = var.os
     architecture = var.architecture
   }
   
   resource "aws-parallelcluster_image" "demo01" {
     image_id            = "demo01"
     image_configuration = yamlencode({
       "Build":{
         "InstanceType": "c5.2xlarge",
         "ParentImage": data.aws-parallelcluster_list_official_images.parent_image.official_images[0].amiId,
         "UpdateOsPackages": {"Enabled": false}
       }
     })
     rollback_on_failure = false
   }
   ```

1. Créez le fichier `variables.tf` pour définir les variables qui peuvent être injectées pour ce projet.

   ```
   variable "region" {
     description = "The region the ParallelCluster API is deployed in."
     type        = string
     default     = "us-east-1"
   }
   
   variable "profile" {
     type        = string
     description = "The AWS profile used to deploy the clusters."
     default     = null
   }
   
   variable "api_stack_name" {
     type        = string
     description = "The name of the CloudFormation stack used to deploy the ParallelCluster API."
     default     = "ParallelCluster"
   }
   
   variable "api_version" {
     type        = string
     description = "The version of the ParallelCluster API."
   }
   
   variable "os" {
     type        = string
     description = "The OS of the ParallelCluster image."
   }
   
   variable "architecture" {
     type        = string
     description = "The architecture of the ParallelCluster image."
   }
   ```

1. Créez le fichier `terraform.tfvars` pour définir vos valeurs arbitraires pour les variables. 

   Dans le fichier ci-dessous, déployez l'AMI personnalisée `us-east-1` basée sur l'architecture Amazon Linux 2 pour x86\$164, en utilisant l' ParallelCluster API 3.11.1 existante qui est déjà déployée avec le nom de la pile. `us-east-1` `MyParallelClusterAPI-3111`

   ```
   region = "us-east-1"
   api_stack_name = "MyParallelClusterAPI-3111"
   api_version = "3.11.1"
   
   os = "alinux2"
   architecture = "x86_64"
   ```

1. Créez le fichier `outputs.tf` pour définir les sorties renvoyées par ce projet.

   ```
   output "parent_image" {
     value = data.aws-parallelcluster_list_official_images.parent_image.official_images[0]
   }
   
   output "custom_image" {
     value = aws-parallelcluster_image.demo01
   }
   ```

   Le répertoire du projet est le suivant :

   ```
   my-amis
   ├── main.tf - Terraform entrypoint where the ParallelCluster module is configured.
   ├── outputs.tf - Defines the cluster as a Terraform output.
   ├── providers.tf - Configures the providers: ParallelCluster and AWS.
   ├── terraform.tf - Import the ParallelCluster provider.
   ├── terraform.tfvars - Defines values for variables, e.g. region, PCAPI stack name.
   └── variables.tf - Defines the variables, e.g. region, PCAPI stack name.
   ```