As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Definir um projeto Terraform
Neste tutorial, você definirá um projeto Terraform simples para implantar um cluster.
Crie um diretório denominado
my-clusters.Todos os arquivos que você criar estarão dentro desse diretório.
Crie o arquivo
terraform.tfpara importar o ParallelCluster provedor.terraform { required_version = ">= 1.5.7" required_providers { aws-parallelcluster = { source = "aws-tf/aws-parallelcluster" version = "~> 1.0" } } }Crie o arquivo
providers.tfpara configurar ParallelCluster os AWS provedores e.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 }Crie o arquivo
main.tfpara definir os recursos usando o ParallelCluster módulo.module "pcluster" { source = "aws-tf/parallelcluster/aws" version = "1.1.0" region = var.region api_stack_name = var.api_stack_name api_version = var.api_version deploy_pcluster_api = false template_vars = local.config_vars cluster_configs = local.cluster_configs config_path = "config/clusters.yaml" }Crie o arquivo
clusters.tfpara definir vários clusters como variáveis locais do Terraform.nota
Você pode definir vários clusters dentro do elemento
cluster_config. Para cada cluster, você pode definir explicitamente as propriedades do cluster dentro das variáveis locais (consulteDemoCluster01) ou referenciar um arquivo externo (consulteDemoCluster02).Para revisar as propriedades do cluster que você pode definir no elemento de configuração, consulte Arquivo de configuração do cluster.
Para revisar as opções que você pode definir para a criação de cluster, consulte pcluster create-cluster.
locals { cluster_configs = { DemoCluster01 : { region : local.config_vars.region rollbackOnFailure : false validationFailureLevel : "WARNING" suppressValidators : [ "type:KeyPairValidator" ] configuration : { Region : local.config_vars.region Image : { Os : "alinux2" } HeadNode : { InstanceType : "t3.small" Networking : { SubnetId : local.config_vars.subnet } Iam : { AdditionalIamPolicies : [ { Policy : "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore" } ] } } Scheduling : { Scheduler : "slurm" SlurmQueues : [{ Name : "queue1" CapacityType : "ONDEMAND" Networking : { SubnetIds : [local.config_vars.subnet] } Iam : { AdditionalIamPolicies : [ { Policy : "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore" } ] } ComputeResources : [{ Name : "compute" InstanceType : "t3.small" MinCount : "1" MaxCount : "4" }] }] SlurmSettings : { QueueUpdateStrategy : "TERMINATE" } } } } DemoCluster02 : { configuration : "config/cluster_config.yaml" } } }Crie o arquivo
config/clusters.yamlpara definir vários clusters como configuração YAML.DemoCluster03: region: ${region} rollbackOnFailure: true validationFailureLevel: WARNING suppressValidators: - type:KeyPairValidator configuration: config/cluster_config.yaml DemoCluster04: region: ${region} rollbackOnFailure: false configuration: config/cluster_config.yamlCrie o arquivo
config/cluster_config.yaml, que é um arquivo de ParallelCluster configuração padrão em que as variáveis do Terraform podem ser injetadas.Para revisar as propriedades do cluster que você pode definir no elemento de configuração, consulte Arquivo de configuração do cluster.
Region: ${region} Image: Os: alinux2 HeadNode: InstanceType: t3.small Networking: SubnetId: ${subnet} Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore Scheduling: Scheduler: slurm SlurmQueues: - Name: queue1 CapacityType: ONDEMAND Networking: SubnetIds: - ${subnet} Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore ComputeResources: - Name: compute InstanceType: t3.small MinCount: 1 MaxCount: 5 SlurmSettings: QueueUpdateStrategy: TERMINATECrie o arquivo
clusters_vars.tfpara definir as variáveis que podem ser injetadas nas configurações do cluster.Este arquivo permite definir valores dinâmicos que podem ser usados em configurações de cluster, como região e sub-rede.
Este exemplo recupera valores diretamente das variáveis do projeto, mas talvez você precise usar lógica personalizada para determiná-los.
locals { config_vars = { subnet = var.subnet_id region = var.cluster_region } }Crie o arquivo
variables.tfpara definir as variáveis que podem ser injetadas neste projeto.variable "region" { description = "The region the ParallelCluster API is deployed in." type = string default = "us-east-1" } variable "cluster_region" { description = "The region the clusters will be deployed in." type = string default = "us-east-1" } variable "profile" { type = string description = "The AWS profile used to deploy the clusters." default = null } variable "subnet_id" { type = string description = "The id of the subnet to be used for the ParallelCluster instances." } 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." }Crie o arquivo
terraform.tfvarspara definir valores arbitrários para as variáveis.O arquivo abaixo implanta os clusters
eu-west-1na sub-redesubnet-123456789, usando a ParallelCluster API 3.11.1 existente, que já está implantada com o nome da pilha.us-east-1MyParallelClusterAPI-3111region = "us-east-1" api_stack_name = "MyParallelClusterAPI-3111" api_version = "3.11.1" cluster_region = "eu-west-1" subnet_id = "subnet-123456789"Crie o arquivo
outputs.tfpara definir os resultados gerados por esse projeto.output "clusters" { value = module.pcluster.clusters }O diretório do projeto é:
my-clusters ├── config │ ├── cluster_config.yaml - Cluster configuration, where terraform variables can be injected.. │ └── clusters.yaml - File listing all the clusters to deploy. ├── clusters.tf - Clusters defined as Terraform local variables. ├── clusters_vars.tf - Variables that can be injected into cluster configurations. ├── 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.