Tentukan proyek Terraform - AWS ParallelCluster

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tentukan proyek Terraform

Dalam tutorial ini, Anda akan mendefinisikan proyek Terraform sederhana untuk menyebarkan cluster.

  1. Buat direktori yang disebutmy-clusters.

    Semua file yang Anda buat akan berada di dalam direktori ini.

  2. Buat file terraform.tf untuk mengimpor ParallelCluster penyedia.

    terraform { required_version = ">= 1.5.7" required_providers { aws-parallelcluster = { source = "aws-tf/aws-parallelcluster" version = "~> 1.0" } } }
  3. Buat file providers.tf untuk mengkonfigurasi ParallelCluster dan AWS penyedia.

    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 }
  4. Buat file main.tf untuk menentukan sumber daya menggunakan ParallelCluster modul.

    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" }
  5. Buat file clusters.tf untuk mendefinisikan beberapa cluster sebagai variabel lokal Terraform.

    catatan

    Anda dapat menentukan beberapa cluster dalam cluster_config elemen. Untuk setiap cluster, Anda dapat secara eksplisit mendefinisikan properti cluster dalam variabel lokal (lihatDemoCluster01) atau referensi file eksternal (lihatDemoCluster02).

    Untuk meninjau properti cluster yang dapat Anda atur dalam elemen konfigurasi, lihatFile konfigurasi cluster.

    Untuk meninjau opsi yang dapat Anda atur untuk pembuatan klaster, lihatpcluster 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" } } }
  6. Buat file config/clusters.yaml untuk mendefinisikan beberapa cluster sebagai konfigurasi YAMB.

    DemoCluster03: region: ${region} rollbackOnFailure: true validationFailureLevel: WARNING suppressValidators: - type:KeyPairValidator configuration: config/cluster_config.yaml DemoCluster04: region: ${region} rollbackOnFailure: false configuration: config/cluster_config.yaml
  7. Buat fileconfig/cluster_config.yaml, yang merupakan file ParallelCluster konfigurasi standar tempat variabel Terraform dapat disuntikkan.

    Untuk meninjau properti cluster yang dapat Anda atur dalam elemen konfigurasi, lihatFile konfigurasi 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: TERMINATE
  8. Buat file clusters_vars.tf untuk menentukan variabel yang dapat disuntikkan ke dalam konfigurasi cluster.

    File ini memungkinkan Anda untuk menentukan nilai dinamis yang dapat digunakan dalam konfigurasi cluster, seperti wilayah dan subnet.

    Contoh ini mengambil nilai langsung dari variabel proyek, tetapi Anda mungkin perlu menggunakan logika khusus untuk menentukannya.

    locals { config_vars = { subnet = var.subnet_id region = var.cluster_region } }
  9. Buat file variables.tf untuk menentukan variabel yang dapat disuntikkan untuk proyek ini.

    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." }
  10. Buat file terraform.tfvars untuk menetapkan nilai arbitrer untuk variabel.

    File di bawah ini menyebarkan cluster di eu-west-1 dalam subnetsubnet-123456789, menggunakan ParallelCluster API 3.11.1 yang ada, yang sudah diterapkan dengan nama tumpukan. us-east-1 MyParallelClusterAPI-3111

    region = "us-east-1" api_stack_name = "MyParallelClusterAPI-3111" api_version = "3.11.1" cluster_region = "eu-west-1" subnet_id = "subnet-123456789"
  11. Buat file outputs.tf untuk menentukan output yang dikembalikan oleh proyek ini.

    output "clusters" { value = module.pcluster.clusters }

    Direktori proyek adalah:

    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.