

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Erstellen eines benutzerdefinierten AMI mit Terraform
<a name="tutorial-create-ami-terraform"></a>

Bei der Nutzung AWS ParallelCluster zahlen Sie nur für die AWS Ressourcen, die beim Erstellen oder Aktualisieren von AWS ParallelCluster Images und Clustern erstellt werden. Weitere Informationen finden Sie unter [AWS Dienste verwendet von AWS ParallelCluster](aws-services-v3.md).

**Voraussetzungen**
+  Terraform v1.5.7\$1 ist installiert. 
+ [AWS ParallelCluster API](api-reference-v3.md)v3.8.0\$1 ist in Ihrem Konto bereitgestellt. Siehe [Einen Cluster mit Terraform erstellen](tutorial-create-cluster-terraform.md). 
+ IAM-Rolle mit den Berechtigungen zum Aufrufen der API. ParallelCluster Siehe [Erforderliche Berechtigungen](tutorial-create-ami-terraform-permissions.md).

# Definieren Sie ein Terraform-Projekt
<a name="tutorial-create-ami-terraform-define"></a>

In diesem Tutorial definieren Sie ein einfaches Terraform-Projekt zur Bereitstellung eines ParallelCluster benutzerdefinierten AMI.

1. Erstellen Sie ein Verzeichnis namens. `my-amis` 

   Alle Dateien, die Sie erstellen, befinden sich in diesem Verzeichnis.

1. Erstellen Sie die Datei`terraform.tf`, um den ParallelCluster Anbieter zu importieren.

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

1. Erstellen Sie die Datei`providers.tf`, um die AWS Anbieter ParallelCluster und zu konfigurieren.

   ```
   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. Erstellen Sie die Datei`main.tf`, um die Ressourcen mithilfe des ParallelCluster Moduls zu definieren.

   Informationen zu den Bildeigenschaften, die Sie innerhalb des `image_configuration` Elements festlegen können, finden Sie unter[Image-Konfigurationsdateien erstellen](image-builder-configuration-file-v3.md).

   Informationen zu den Optionen, die Sie für die Image-Erstellung festlegen können, z. B. `image_id` und`rollback_on_failure`, finden Sie unter[`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. Erstellen Sie die Datei`variables.tf`, um die Variablen zu definieren, die für dieses Projekt eingefügt werden können.

   ```
   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. Erstellen Sie die Datei`terraform.tfvars`, um Ihre beliebigen Werte für die Variablen festzulegen. 

   Stellen Sie mit der folgenden Datei das benutzerdefinierte AMI bereit, das auf der Architektur Amazon Linux 2 für x86\$164 `us-east-1` basiert, und verwenden Sie dabei die vorhandene ParallelCluster API 3.11.1, die bereits mit dem Stacknamen bereitgestellt wurde. `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. Erstellen Sie die Datei`outputs.tf`, um die von diesem Projekt zurückgegebenen Ausgaben zu definieren.

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

   Das Projektverzeichnis ist:

   ```
   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.
   ```

# Stellen Sie das AMI bereit
<a name="tutorial-create-ami-terraform-deploy"></a>

Um das AMI bereitzustellen, führen Sie die Terraform-Standardbefehle der Reihe nach aus.

1. Erstellen Sie das Projekt:

   ```
   terraform init
   ```

1. Definieren Sie den Bereitstellungsplan:

   ```
   terraform plan -out tfplan
   ```

1. Stellen Sie den Plan bereit:

   ```
   terraform apply tfplan
   ```

# Erforderliche Berechtigungen
<a name="tutorial-create-ami-terraform-permissions"></a>

Sie benötigen die folgenden Berechtigungen, um ein benutzerdefiniertes AMI mit Terraform bereitzustellen:
+ übernehme die ParallelCluster API-Rolle, die für die Interaktion mit der API zuständig ist ParallelCluster 
+ Beschreiben Sie den CloudFormation ParallelCluster API-Stack, um zu überprüfen, ob er existiert, und rufen Sie seine Parameter und Ausgaben ab

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:sts::111122223333:role/PCAPIUserRole-*",
            "Effect": "Allow",
            "Sid": "AssumePCAPIUserRole"
        },
        {
            "Action": [
                "cloudformation:DescribeStacks"
            ],
            "Resource": "arn:aws:cloudformation:us-east-1:111122223333:stack/*",
            "Effect": "Allow",
            "Sid": "CloudFormation"
        }
    ]
}
```

------