83 lines
3.4 KiB
HCL
83 lines
3.4 KiB
HCL
##############################################################################
|
|
# Deployment Script: HPC cluster (OVHcloud)
|
|
#
|
|
# Thin root calling the provisioner owned "hpc" catalog module. The module
|
|
# provisions a complete HPC cluster: one head node (the single entry point,
|
|
# running the Slurm controller, munge, the NFS shared home and the submission
|
|
# tools, reachable through a floating ip) and N compute nodes (private
|
|
# network only, Slurm execution daemon and OpenMPI, internet egress through a
|
|
# managed gateway). Every node is bootstrapped by cloud-init at first boot;
|
|
# the cluster forms itself with no manual step.
|
|
#
|
|
# The module generates the consumer password and the management SSH keypair
|
|
# and writes them to Vault under the existing path contract; only the Vault
|
|
# path is returned in the provisioning response. The response carries
|
|
# strictly the head node access information: compute nodes never appear in
|
|
# outputs or notifications. Credential renewal follows the standard catalog
|
|
# module rotation flow and re-applies the consumer password on the head node
|
|
# without touching any instance.
|
|
#
|
|
# No terraform/required_providers and no provider blocks are needed: the
|
|
# catalog module carries its own provider requirements, the cloud provider
|
|
# is configured from the runner environment and the Vault provider file is
|
|
# generated by the provisioner.
|
|
#
|
|
# Placeholders (all filled by the provisioner, never typed by the user):
|
|
# - the module source placeholder resolves to the hpc module of the
|
|
# cloudProvider sent in the request headers
|
|
# - 5577 is the scriptTriggerId of the request
|
|
# - development-test is the value of the cloudAccount header
|
|
# - 73369c68-a6e8-4a81-8a6b-efa1496bea2e is the value of the requesterUniqueId header
|
|
##############################################################################
|
|
|
|
module "hpc" {
|
|
source = "git::http://gitea-http.dataprovider01.svc.cluster.local:3000/gitops_test/tfmodules.git//hpc/ovh?ref=3.3.0-F-feature-simpl-33565.765.f7724799"
|
|
deployment_id = "5577"
|
|
cloud_account = "development-test"
|
|
requester_unique_id = "73369c68-a6e8-4a81-8a6b-efa1496bea2e"
|
|
|
|
# OVHcloud region for the instances and the private network, for example
|
|
# SBG5 or GRA11 (the datacenter suffixed region, unlike managed databases).
|
|
region = "SBG5"
|
|
|
|
# OVH public cloud project id. Unlike the other catalog modules this one
|
|
# needs it explicitly: its flavors/images data sources do not fall back to
|
|
# the runner environment, and resolving the project from the credential
|
|
# requires a read grant the scoped account keys usually lack.
|
|
project_id = "<project id>"
|
|
|
|
# Cluster sizing: number of compute nodes, flavors per role and the
|
|
# schedulable CPUs per compute node declared to the Slurm controller
|
|
# (must not exceed the vCPUs of compute_flavor).
|
|
compute_node_count = 2
|
|
head_flavor = "b3-8"
|
|
compute_flavor = "b3-8"
|
|
compute_cpus = 2
|
|
|
|
# Private cluster network: CIDR and a vRack VLAN id unused in the project.
|
|
# The head node takes host 50 and compute nodes host 60 onward; the lower
|
|
# pool addresses stay free for the DHCP agent ports.
|
|
cluster_cidr = "192.168.100.0/24"
|
|
vlan_id = 212
|
|
}
|
|
|
|
output "head_node_ip" {
|
|
value = module.hpc.head_node_ip
|
|
}
|
|
|
|
output "head_node_hostname" {
|
|
value = module.hpc.head_node_hostname
|
|
}
|
|
|
|
output "ssh_port" {
|
|
value = module.hpc.ssh_port
|
|
}
|
|
|
|
output "vmIps" {
|
|
value = module.hpc.vmIps
|
|
}
|
|
|
|
output "credentials_ref" {
|
|
value = module.hpc.credentials_ref
|
|
}
|