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.
Buat direktori yang disebut
my-clusters.Semua file yang Anda buat akan berada di dalam direktori ini.
Buat file
terraform.tfuntuk mengimpor ParallelCluster penyedia.terraform { required_version = ">= 1.5.7" required_providers { aws-parallelcluster = { source = "aws-tf/aws-parallelcluster" version = "~> 1.0" } } }Buat file
providers.tfuntuk 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 }Buat file
main.tfuntuk 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" }Buat file
clusters.tfuntuk mendefinisikan beberapa cluster sebagai variabel lokal Terraform.catatan
Anda dapat menentukan beberapa cluster dalam
cluster_configelemen. 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" } } }Buat file
config/clusters.yamluntuk 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.yamlBuat file
config/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: TERMINATEBuat file
clusters_vars.tfuntuk 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 } }Buat file
variables.tfuntuk 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." }Buat file
terraform.tfvarsuntuk menetapkan nilai arbitrer untuk variabel.File di bawah ini menyebarkan cluster di
eu-west-1dalam subnetsubnet-123456789, menggunakan ParallelCluster API 3.11.1 yang ada, yang sudah diterapkan dengan nama tumpukan.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"Buat file
outputs.tfuntuk 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.