├── .ansible-lint ├── .codespellrc ├── .github ├── ISSUE_TEMPLATE │ └── bug_report.md ├── dependabot.yml ├── pull_request_template.md ├── release.yml └── workflows │ ├── close-inactive-issues.yml │ ├── dependency-review.yml │ ├── multi-approvers.yml │ ├── pr-label-validation.yml │ └── pr-precommit.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .pytest.ini ├── .tfdocs-markdown.yaml ├── .tflint.hcl ├── .yamllint ├── CODEOWNERS ├── CONTRIBUTING.md ├── LICENSE ├── Makefile ├── README.md ├── SECURITY.md ├── cluster-toolkit-writers.json ├── cmd ├── README.md ├── color.go ├── completion.go ├── create.go ├── create_test.go ├── deploy.go ├── deploy_test.go ├── destroy.go ├── expand.go ├── export.go ├── export_test.go ├── import.go ├── render.go ├── render_test.go ├── root.go ├── root_test.go ├── utils.go └── utils_test.go ├── community ├── cos-nvidia-bug-report │ ├── Dockerfile │ ├── README.md │ ├── app │ │ ├── constants.py │ │ ├── cos-nvidia-bug-report.py │ │ └── requirements.txt │ ├── bug-report-pod.yaml │ └── build-and-push-cos-nvidia-bug-report.sh ├── examples │ ├── AMD │ │ ├── README.md │ │ └── hpc-amd-slurm.yaml │ ├── README.md │ ├── client-google-cloud-storage.yaml │ ├── flux-framework │ │ ├── README.md │ │ └── flux-cluster.yaml │ ├── fsi-montecarlo-on-batch.yaml │ ├── gke-tpu-v6 │ │ ├── README.md │ │ ├── gke-tpu-v6-deployment.yaml │ │ ├── gke-tpu-v6.yaml │ │ └── tpu-multislice.yaml │ ├── hpc-build-slurm-image.yaml │ ├── hpc-slinky │ │ ├── exporter-pod-monitoring.yaml │ │ └── hpc-slinky.yaml │ ├── hpc-slurm-gromacs.yaml │ ├── hpc-slurm-local-ssd.yaml │ ├── hpc-slurm-ramble-gromacs.yaml │ ├── hpc-slurm-sharedvpc.yaml │ ├── hpc-slurm-ubuntu2004.yaml │ ├── hpc-slurm6-apptainer.yaml │ ├── hpc-slurm6-tpu-maxtext.yaml │ ├── hpc-slurm6-tpu.yaml │ ├── htc-htcondor.yaml │ ├── htc-slurm.yaml │ ├── slurm-gke │ │ ├── files │ │ │ ├── cgroup.conf.tpl │ │ │ └── slurm-namespace.yaml.tftpl │ │ └── slurm-gke.yaml │ ├── tutorial-fluent.yaml │ ├── tutorial-starccm-slurm.yaml │ ├── tutorial-starccm.yaml │ └── xpk-n2-filestore │ │ ├── config-map.yaml.tftpl │ │ ├── kueue-xpk-configuration.yaml.tftpl │ │ ├── storage-crd.yaml │ │ └── xpk-n2-filestore.yaml ├── front-end │ ├── .gitignore │ └── ofe │ │ ├── README.md │ │ ├── cli │ │ ├── ghpcfe.py │ │ └── utils.py │ │ ├── deploy.sh │ │ ├── docs │ │ ├── AdvancedAdmin.md │ │ ├── Applications.md │ │ ├── ClusterCommandControl.md │ │ ├── README.md │ │ ├── WorkbenchAdmin.md │ │ ├── WorkbenchUser.md │ │ ├── admin_guide.md │ │ ├── developer_guide.md │ │ ├── images │ │ │ ├── GCP-app-credential.png │ │ │ ├── Workbench-Create-1.png │ │ │ ├── Workbench-Create-2.png │ │ │ ├── Workbench-Create-Presets.png │ │ │ ├── Workbench-Create-Storage.png │ │ │ ├── Workbench-Create-links.png │ │ │ ├── Workbench_userguide │ │ │ │ ├── JupyterLab.png │ │ │ │ ├── create1.png │ │ │ │ ├── create2.png │ │ │ │ ├── create3.png │ │ │ │ ├── create4.png │ │ │ │ ├── create5.png │ │ │ │ ├── delete.png │ │ │ │ ├── destroy_confirm.png │ │ │ │ ├── destroying_status.png │ │ │ │ └── select_cred.png │ │ │ ├── benchmark.png │ │ │ ├── db-UML.png │ │ │ ├── register-social-app.png │ │ │ └── system-design.png │ │ └── user_guide.md │ │ ├── infrastructure_files │ │ ├── cluster_startup │ │ │ └── templates │ │ │ │ ├── bootstrap_compute.sh │ │ │ │ ├── bootstrap_controller.sh │ │ │ │ └── bootstrap_login.sh │ │ ├── gcs_bucket │ │ │ ├── clusters │ │ │ │ └── ansible_setup │ │ │ │ │ ├── ansible.cfg │ │ │ │ │ ├── compute.yaml │ │ │ │ │ ├── controller.yaml │ │ │ │ │ ├── login.yaml │ │ │ │ │ ├── roles │ │ │ │ │ ├── c2_daemon │ │ │ │ │ │ ├── files │ │ │ │ │ │ │ ├── ghpcfe_c2.service │ │ │ │ │ │ │ └── ghpcfe_c2daemon.py │ │ │ │ │ │ ├── tasks │ │ │ │ │ │ │ └── main.yaml │ │ │ │ │ │ └── templates │ │ │ │ │ │ │ └── ghpcfe_c2.yaml.j2 │ │ │ │ │ ├── common │ │ │ │ │ │ └── tasks │ │ │ │ │ │ │ └── main.yaml │ │ │ │ │ ├── containers │ │ │ │ │ │ ├── tasks │ │ │ │ │ │ │ └── main.yaml │ │ │ │ │ │ └── templates │ │ │ │ │ │ │ └── enroot_credentials.j2 │ │ │ │ │ ├── dev_env │ │ │ │ │ │ └── tasks │ │ │ │ │ │ │ └── main.yaml │ │ │ │ │ ├── spack_install │ │ │ │ │ │ └── tasks │ │ │ │ │ │ │ └── main.yaml │ │ │ │ │ └── spack_setup │ │ │ │ │ │ └── tasks │ │ │ │ │ │ └── main.yaml │ │ │ │ │ └── vars.yaml │ │ │ ├── webserver │ │ │ │ └── startup.sh │ │ │ └── workbench │ │ │ │ └── startup_script_template.sh │ │ ├── vpc_tf │ │ │ └── GCP │ │ │ │ ├── README.md │ │ │ │ ├── main.tf │ │ │ │ ├── subnet.tf.template │ │ │ │ ├── variables.tf │ │ │ │ └── versions.tf │ │ └── workbench_tf │ │ │ └── google │ │ │ ├── README.md │ │ │ ├── main.tf │ │ │ ├── orgpolicy.tf │ │ │ ├── outputs.tf │ │ │ ├── provider.tf │ │ │ ├── variables.tf │ │ │ ├── versions.tf │ │ │ └── wait-for-startup │ │ │ ├── README.md │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ ├── scripts │ │ │ └── wait-for-startup-status.sh │ │ │ ├── variables.tf │ │ │ └── versions.tf │ │ ├── requirements.txt │ │ ├── script │ │ ├── README.md │ │ └── service_account.sh │ │ ├── teardown.sh │ │ ├── tf │ │ ├── README.md │ │ ├── main.tf │ │ ├── network │ │ │ ├── README.md │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ ├── variables.tf │ │ │ └── versions.tf │ │ ├── outputs.tf │ │ ├── provider.tf │ │ ├── variables.tf │ │ └── versions.tf │ │ └── website │ │ ├── .gitignore │ │ ├── ghpcfe │ │ ├── __init__.py │ │ ├── adapters.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── cluster_manager │ │ │ ├── __init__.py │ │ │ ├── c2.py │ │ │ ├── cloud_info.py │ │ │ ├── clusterinfo.py │ │ │ ├── filesystem.py │ │ │ ├── image.py │ │ │ ├── image_import.py │ │ │ ├── spack.py │ │ │ ├── utils.py │ │ │ ├── validate_credential.py │ │ │ ├── vpc.py │ │ │ └── workbenchinfo.py │ │ ├── forms.py │ │ ├── grafana.py │ │ ├── management │ │ │ └── commands │ │ │ │ ├── custom_setup_command.py │ │ │ │ ├── seed_workbench_presets.py │ │ │ │ └── setup_grafana.py │ │ ├── migrations │ │ │ └── __init__.py │ │ ├── models.py │ │ ├── permissions.py │ │ ├── serializers.py │ │ ├── signals.py │ │ ├── static │ │ │ ├── css │ │ │ │ ├── jquery-ui.css │ │ │ │ └── styles.css │ │ │ ├── examples │ │ │ │ ├── namd_apoa1.sh │ │ │ │ ├── namd_stmv.sh │ │ │ │ ├── openfoam_motorbike_meshing.sh │ │ │ │ ├── openfoam_motorbike_solving.sh │ │ │ │ ├── run_hpcc.py │ │ │ │ ├── run_hpl.py │ │ │ │ ├── wrf_12km.sh │ │ │ │ └── wrf_2.5km.sh │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ ├── img │ │ │ │ ├── GCP_logo.png │ │ │ │ ├── application.png │ │ │ │ ├── checkmark.png │ │ │ │ ├── cluster.png │ │ │ │ ├── credential.png │ │ │ │ ├── image.png │ │ │ │ ├── loading.gif │ │ │ │ ├── main-application.png │ │ │ │ ├── main-cluster.png │ │ │ │ ├── main-credential.png │ │ │ │ ├── main-job.png │ │ │ │ ├── placeholder.png │ │ │ │ ├── status-completed.png │ │ │ │ ├── status-configured.png │ │ │ │ ├── status-deleted.png │ │ │ │ ├── status-error.png │ │ │ │ ├── status-paused.png │ │ │ │ ├── status-ready.png │ │ │ │ ├── unknown_user.png │ │ │ │ ├── white-application.png │ │ │ │ ├── white-benchmark.png │ │ │ │ ├── white-cluster.png │ │ │ │ ├── white-credential.png │ │ │ │ ├── white-filesystem.png │ │ │ │ ├── white-grafana.png │ │ │ │ ├── white-hamburger.png │ │ │ │ ├── white-home.png │ │ │ │ ├── white-job.png │ │ │ │ ├── white-network.png │ │ │ │ ├── white-registry.png │ │ │ │ ├── white-servers.png │ │ │ │ ├── white-user.png │ │ │ │ └── workbench-white.png │ │ │ └── js │ │ │ │ ├── bootstrap.bundle.js │ │ │ │ ├── bootstrap.bundle.js.map │ │ │ │ ├── bootstrap.bundle.min.js │ │ │ │ ├── bootstrap.bundle.min.js.map │ │ │ │ ├── bootstrap.esm.js │ │ │ │ ├── bootstrap.esm.js.map │ │ │ │ ├── bootstrap.esm.min.js │ │ │ │ ├── bootstrap.esm.min.js.map │ │ │ │ ├── bootstrap.js │ │ │ │ ├── bootstrap.js.map │ │ │ │ ├── bootstrap.min.js │ │ │ │ ├── bootstrap.min.js.map │ │ │ │ ├── jquery-ui.js │ │ │ │ ├── jquery.cookie.js │ │ │ │ ├── jquery.formset.js │ │ │ │ └── views │ │ │ │ ├── containers │ │ │ │ └── refresh_containers.js │ │ │ │ └── shared │ │ │ │ └── filter_and_refresh.js │ │ ├── templates │ │ │ ├── 403.html │ │ │ ├── account │ │ │ │ └── update_form.html │ │ │ ├── application │ │ │ │ ├── check_delete.html │ │ │ │ ├── container_create_form.html │ │ │ │ ├── container_detail.html │ │ │ │ ├── create_form.html │ │ │ │ ├── custom_install_create_form.html │ │ │ │ ├── detail.html │ │ │ │ ├── edit_form.html │ │ │ │ ├── list.html │ │ │ │ ├── log.html │ │ │ │ ├── select_form.html │ │ │ │ ├── spack_create_form.html │ │ │ │ └── spack_detail.html │ │ │ ├── base_generic.html │ │ │ ├── benchmark │ │ │ │ ├── create_form.html │ │ │ │ ├── detail.html │ │ │ │ └── list.html │ │ │ ├── blueprint │ │ │ │ ├── artifact_registry_config.yaml.j2 │ │ │ │ ├── cloudsql_config.yaml.j2 │ │ │ │ ├── cluster_config.yaml.j2 │ │ │ │ ├── filesystem_config.yaml.j2 │ │ │ │ └── partition_config.yaml.j2 │ │ │ ├── cluster │ │ │ │ ├── check_delete.html │ │ │ │ ├── check_destroy.html │ │ │ │ ├── cost.html │ │ │ │ ├── detail.html │ │ │ │ ├── list.html │ │ │ │ ├── log.html │ │ │ │ ├── update_form.html │ │ │ │ └── user_auth_gcp.html │ │ │ ├── credential │ │ │ │ ├── check_delete.html │ │ │ │ ├── create_form.html │ │ │ │ ├── detail.html │ │ │ │ ├── list.html │ │ │ │ ├── select_form.html │ │ │ │ └── update_form.html │ │ │ ├── document.html │ │ │ ├── filesystem │ │ │ │ ├── check_delete.html │ │ │ │ ├── check_destroy.html │ │ │ │ ├── filestore_create_form.html │ │ │ │ ├── filestore_detail.html │ │ │ │ ├── filestore_update_form.html │ │ │ │ ├── impl_select_form.html │ │ │ │ ├── import_detail.html │ │ │ │ ├── import_form.html │ │ │ │ ├── import_update.html │ │ │ │ └── list.html │ │ │ ├── grafana.html │ │ │ ├── image │ │ │ │ ├── image-create.html │ │ │ │ ├── image-import.html │ │ │ │ ├── image-view.html │ │ │ │ ├── list.html │ │ │ │ ├── startup-script-create.html │ │ │ │ └── startup-script-view.html │ │ │ ├── index.html │ │ │ ├── job │ │ │ │ ├── confirm_delete.html │ │ │ │ ├── create_form.html │ │ │ │ ├── detail.html │ │ │ │ ├── list.html │ │ │ │ ├── log.html │ │ │ │ ├── rerun_form.html │ │ │ │ └── select_cluster.html │ │ │ ├── registry │ │ │ │ ├── _container_rows.html │ │ │ │ ├── detail.html │ │ │ │ └── list.html │ │ │ ├── user │ │ │ │ ├── adminupdate_form.html │ │ │ │ ├── detail.html │ │ │ │ └── list.html │ │ │ ├── utility │ │ │ │ └── credential_dropdown_list_options.html │ │ │ ├── vpc │ │ │ │ ├── check_delete.html │ │ │ │ ├── check_destroy.html │ │ │ │ ├── create_form.html │ │ │ │ ├── detail.html │ │ │ │ ├── import_form.html │ │ │ │ ├── list.html │ │ │ │ ├── update_form.html │ │ │ │ └── virtual_subnet.html │ │ │ └── workbench │ │ │ │ ├── check_delete.html │ │ │ │ ├── check_destroy.html │ │ │ │ ├── create_form.html │ │ │ │ ├── detail.html │ │ │ │ ├── list.html │ │ │ │ └── update.html │ │ ├── templatetags │ │ │ ├── __init__.py │ │ │ ├── form_extras.py │ │ │ └── registry_extras.py │ │ ├── urls.py │ │ └── views │ │ │ ├── __init__.py │ │ │ ├── applications.py │ │ │ ├── asyncview.py │ │ │ ├── benchmarks.py │ │ │ ├── clusters.py │ │ │ ├── containers.py │ │ │ ├── credentials.py │ │ │ ├── error_pages.py │ │ │ ├── filesystems.py │ │ │ ├── gcpfilestore.py │ │ │ ├── grafana.py │ │ │ ├── images.py │ │ │ ├── jobs.py │ │ │ ├── registries.py │ │ │ ├── users.py │ │ │ ├── view_utils.py │ │ │ ├── vpc.py │ │ │ └── workbench.py │ │ ├── manage.py │ │ ├── nginx.conf │ │ ├── templates │ │ ├── account │ │ │ ├── base.html │ │ │ └── signup_closed.html │ │ └── registration │ │ │ ├── logged_out.html │ │ │ ├── login.html │ │ │ ├── password_reset_complete.html │ │ │ ├── password_reset_confirm.html │ │ │ ├── password_reset_done.html │ │ │ ├── password_reset_email.html │ │ │ └── password_reset_form.html │ │ └── website │ │ ├── __init__.py │ │ ├── asgi.py │ │ ├── settings.py │ │ ├── urls.py │ │ └── wsgi.py └── modules │ ├── README.md │ ├── compute │ ├── gke-nodeset │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── output.tf │ │ ├── persistent_volumes.tf │ │ ├── templates │ │ │ └── nodeset-general.yaml.tftpl │ │ ├── variables.tf │ │ └── versions.tf │ ├── gke-partition │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── variables.tf │ │ └── versions.tf │ ├── htcondor-execute-point │ │ ├── README.md │ │ ├── compute_image.tf │ │ ├── files │ │ │ ├── htcondor_configure.yml │ │ │ └── htcondor_configure_autoscaler.yml │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── templates │ │ │ ├── condor_config.tftpl │ │ │ └── download-condor-config.ps1.tftpl │ │ ├── variables.tf │ │ └── versions.tf │ ├── mig │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── notebook │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── variables.tf │ │ └── versions.tf │ ├── schedmd-slurm-gcp-v6-nodeset-dynamic │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── source_image_logic.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── schedmd-slurm-gcp-v6-nodeset-tpu │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── schedmd-slurm-gcp-v6-nodeset │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── source_image_logic.tf │ │ ├── variables.tf │ │ └── versions.tf │ └── schedmd-slurm-gcp-v6-partition │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── container │ └── artifact-registry │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── validation.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── database │ ├── bigquery-dataset │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── bigquery-table │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ └── slurm-cloudsql-federation │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── file-system │ ├── DDN-EXAScaler │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── Intel-DAOS │ │ └── README.md │ ├── cloud-storage-bucket │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── scripts │ │ │ ├── install-gcs-fuse.sh │ │ │ └── mount.sh │ │ ├── variables.tf │ │ └── versions.tf │ ├── nfs-server │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── scripts │ │ │ ├── install-nfs-client.sh │ │ │ ├── install-nfs-server.sh.tpl │ │ │ ├── mount.sh │ │ │ └── mount.yaml │ │ ├── variables.tf │ │ └── versions.tf │ └── weka-client │ │ ├── README.md │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── templates │ │ ├── install-weka-client.yaml.tftpl │ │ ├── mount-weka.sh.tftpl │ │ └── mount-weka.yaml.tftpl │ │ ├── variables.tf │ │ └── versions.tf │ ├── files │ └── fsi-montecarlo-on-batch │ │ ├── FSI_MonteCarlo.ipynb │ │ ├── README.md │ │ ├── iteration.sh │ │ ├── main.tf │ │ ├── mc_run.tpl.py │ │ ├── mc_run.tpl.yaml │ │ ├── mc_run_reqs.txt │ │ ├── metadata.yaml │ │ ├── variables.tf │ │ └── versions.tf │ ├── internal │ └── slurm-gcp │ │ ├── instance │ │ ├── README.md │ │ ├── main.tf │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ │ ├── instance_template │ │ ├── README.md │ │ ├── files │ │ │ └── startup_sh_unlinted │ │ ├── main.tf │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ │ ├── internal_instance_template │ │ ├── README.md │ │ ├── main.tf │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ │ ├── login │ │ ├── README.md │ │ ├── main.tf │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ │ └── nodeset_tpu │ │ ├── README.md │ │ ├── main.tf │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── management │ └── dependencies-installer │ │ ├── README.md │ │ ├── helm_install │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── variables.tf │ │ └── versions.tf │ │ ├── kubernetes_manifest │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── variables.tf │ │ └── versions.tf │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── providers.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── network │ └── private-service-access │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── project │ ├── new-project │ │ └── README.md │ ├── service-account │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ └── service-enablement │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── variables.tf │ │ └── versions.tf │ ├── pubsub │ ├── bigquery-sub │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ └── topic │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── remote-desktop │ └── chrome-remote-desktop │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── scripts │ │ ├── configure-chrome-desktop.yml │ │ ├── configure-grid-drivers.yml │ │ └── disable-sleep.yml │ │ ├── variables.tf │ │ └── versions.tf │ ├── scheduler │ ├── htcondor-access-point │ │ ├── README.md │ │ ├── files │ │ │ └── htcondor_configure.yml │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── templates │ │ │ └── condor_config.tftpl │ │ ├── variables.tf │ │ └── versions.tf │ ├── htcondor-central-manager │ │ ├── README.md │ │ ├── files │ │ │ └── htcondor_configure.yml │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── templates │ │ │ └── condor_config.tftpl │ │ ├── variables.tf │ │ └── versions.tf │ ├── htcondor-pool-secrets │ │ ├── README.md │ │ ├── files │ │ │ └── htcondor_secrets.yml │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── templates │ │ │ └── fetch-idtoken.ps1.tftpl │ │ ├── variables.tf │ │ └── versions.tf │ ├── htcondor-service-accounts │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── htcondor-setup │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── schedmd-slurm-gcp-v6-controller │ │ ├── README.md │ │ ├── controller.tf │ │ ├── etc │ │ │ ├── htc-slurm.conf.tpl │ │ │ ├── htc-slurmdbd.conf.tpl │ │ │ └── long-prolog-slurm.conf.tpl │ │ ├── login.tf │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── modules │ │ │ ├── cleanup_compute │ │ │ │ ├── README.md │ │ │ │ ├── main.tf │ │ │ │ ├── scripts │ │ │ │ │ └── cleanup_compute.sh │ │ │ │ ├── variables.tf │ │ │ │ └── versions.tf │ │ │ ├── cleanup_tpu │ │ │ │ ├── README.md │ │ │ │ ├── main.tf │ │ │ │ ├── scripts │ │ │ │ │ └── cleanup_tpu.sh │ │ │ │ ├── variables.tf │ │ │ │ └── versions.tf │ │ │ └── slurm_files │ │ │ │ ├── README.md │ │ │ │ ├── etc │ │ │ │ ├── cgroup.conf.tpl │ │ │ │ ├── slurm.conf.tpl │ │ │ │ └── slurmdbd.conf.tpl │ │ │ │ ├── files │ │ │ │ ├── external_epilog.sh │ │ │ │ ├── external_prolog.sh │ │ │ │ └── setup_external.sh │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ ├── scripts │ │ │ │ ├── conf.py │ │ │ │ ├── file_cache.py │ │ │ │ ├── get_tpu_vmcount.py │ │ │ │ ├── job_submit.lua.tpl │ │ │ │ ├── load_bq.py │ │ │ │ ├── local_pubsub.py │ │ │ │ ├── mig_flex.py │ │ │ │ ├── requirements-dev.txt │ │ │ │ ├── requirements.txt │ │ │ │ ├── resume.py │ │ │ │ ├── resume_wrapper.sh │ │ │ │ ├── setup.py │ │ │ │ ├── setup_network_storage.py │ │ │ │ ├── slurmsync.py │ │ │ │ ├── sort_nodes.py │ │ │ │ ├── suspend.py │ │ │ │ ├── suspend_wrapper.sh │ │ │ │ ├── tests │ │ │ │ │ ├── common.py │ │ │ │ │ ├── test_conf.py │ │ │ │ │ ├── test_resume.py │ │ │ │ │ ├── test_topology.py │ │ │ │ │ └── test_util.py │ │ │ │ ├── tools │ │ │ │ │ ├── gpu-test │ │ │ │ │ ├── task-epilog │ │ │ │ │ └── task-prolog │ │ │ │ ├── tpu.py │ │ │ │ ├── util.py │ │ │ │ └── watch_delete_vm_op.py │ │ │ │ ├── variables.tf │ │ │ │ └── versions.tf │ │ ├── outputs.tf │ │ ├── partition.tf │ │ ├── slurm_files.tf │ │ ├── source_image_logic.tf │ │ ├── variables.tf │ │ ├── variables_controller_instance.tf │ │ └── versions.tf │ ├── schedmd-slurm-gcp-v6-login │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── source_image_logic.tf │ │ ├── variables.tf │ │ └── versions.tf │ └── slinky │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── providers.tf │ │ ├── variables.tf │ │ └── versions.tf │ └── scripts │ ├── htcondor-install │ ├── README.md │ ├── files │ │ ├── autoscaler.py │ │ ├── install-htcondor-autoscaler-deps.yml │ │ └── install-htcondor.yaml │ ├── main.tf │ ├── metadata.yaml │ ├── outputs.tf │ ├── templates │ │ └── install-htcondor.ps1.tftpl │ ├── variables.tf │ └── versions.tf │ ├── ramble-execute │ ├── README.md │ ├── main.tf │ ├── metadata.yaml │ ├── outputs.tf │ ├── templates │ │ └── ramble_execute.yml.tpl │ ├── variables.tf │ └── versions.tf │ ├── ramble-setup │ ├── README.md │ ├── main.tf │ ├── metadata.yaml │ ├── outputs.tf │ ├── scripts │ │ └── install_ramble_deps.yml │ ├── templates │ │ ├── install_ramble_python_deps.yml.tftpl │ │ └── ramble_setup.yml.tftpl │ ├── variables.tf │ └── versions.tf │ ├── spack-execute │ ├── README.md │ ├── main.tf │ ├── metadata.yaml │ ├── outputs.tf │ ├── templates │ │ └── execute_commands.yml.tpl │ ├── variables.tf │ └── versions.tf │ ├── spack-setup │ ├── README.md │ ├── main.tf │ ├── metadata.yaml │ ├── outputs.tf │ ├── scripts │ │ └── install_spack_deps.yml │ ├── templates │ │ ├── .shellcheckrc │ │ └── spack_setup.yml.tftpl │ ├── variables.tf │ └── versions.tf │ ├── wait-for-startup │ ├── README.md │ ├── main.tf │ ├── metadata.yaml │ ├── outputs.tf │ ├── scripts │ │ └── wait-for-startup-status.sh │ ├── variables.tf │ └── versions.tf │ └── windows-startup-script │ ├── README.md │ ├── main.tf │ ├── metadata.yaml │ ├── outputs.tf │ ├── templates │ ├── install_gpu_driver.ps1.tftpl │ └── setx_http_proxy.ps1 │ ├── variables.tf │ └── versions.tf ├── docs ├── CHS-Slurm.md ├── blueprint-validation.md ├── cloud-batch.md ├── gpu-support.md ├── hpc-slurm6-tpu-maxtext.md ├── hybrid-slurm-cluster │ ├── README.md │ ├── blueprints │ │ ├── create-networks.yaml │ │ ├── hybrid-configuration.yaml │ │ └── static-cluster.yaml │ ├── demo-with-cloud-controller-instructions.md │ ├── deploy-instructions.md │ ├── on-prem-instructions.md │ ├── requirements.txt │ └── troubleshooting.md ├── image-building.md ├── module-guidelines.md ├── network_storage.md ├── slurm-dws-calendar.md ├── slurm-dws-flex.md ├── slurm-gcp-support.md ├── slurm-topology.md ├── slurm-troubleshooting.md ├── tutorials │ ├── README.md │ ├── fsi-montecarlo-on-batch │ │ └── README.md │ ├── gromacs │ │ ├── spack-gromacs.md │ │ └── spack-gromacs.yaml │ ├── hpc-slurm-qwiklabs.yaml │ ├── htcondor.md │ ├── openfoam │ │ └── README.md │ ├── sc23-tutorial │ │ └── hcls-blueprint.yaml │ └── wrfv3 │ │ ├── spack-wrfv3.md │ │ └── spack-wrfv3.yaml ├── videos │ ├── build-your-own-blueprint │ │ ├── README.md │ │ └── batch-high-io.yaml │ └── healthcare-and-life-sciences │ │ ├── README.md │ │ └── lysozyme-example │ │ ├── README.md │ │ ├── config │ │ ├── emin-charmm.mdp │ │ ├── ions.mdp │ │ ├── md-charmm.mdp │ │ ├── npt-charmm.mdp │ │ └── nvt-charmm.mdp │ │ └── submit.sh └── vm-images.md ├── examples ├── README.md ├── cae │ ├── README.md │ └── cae-slurm.yaml ├── gke-a3-highgpu.yaml ├── gke-a3-megagpu │ ├── README.md │ ├── chs-cronjob.yaml.tftpl │ ├── chs-permissions.yaml.tftpl │ ├── chs-pvc.yaml.tftpl │ ├── gke-a3-megagpu-deployment.yaml │ ├── gke-a3-megagpu.yaml │ ├── kueue-configuration.yaml.tftpl │ └── read-chs-logs-job.yaml ├── gke-a3-ultragpu │ ├── README.md │ ├── chs-cronjob.yaml.tftpl │ ├── chs-permissions.yaml.tftpl │ ├── chs-pvc.yaml.tftpl │ ├── gke-a3-ultragpu-deployment.yaml │ ├── gke-a3-ultragpu.yaml │ ├── kueue-configuration.yaml.tftpl │ ├── nccl-installer.yaml.tftpl │ ├── nccl-jobset-example.yaml │ ├── read-chs-logs-job.yaml │ └── system_benchmarks │ │ ├── README.md │ │ ├── ramble-hpl.yaml │ │ ├── ramble-nccl.yaml │ │ └── ramble-nemo.yaml ├── gke-a4 │ ├── README.md │ ├── chs-cronjob.yaml.tftpl │ ├── chs-permissions.yaml.tftpl │ ├── chs-pvc.yaml.tftpl │ ├── gke-a4-deployment.yaml │ ├── gke-a4.yaml │ ├── kueue-configuration.yaml.tftpl │ ├── nccl-installer.yaml.tftpl │ ├── nccl-jobset-example.yaml │ └── read-chs-logs-job.yaml ├── gke-a4x │ ├── README.md │ ├── gke-a4x-deployment.yaml │ ├── gke-a4x.yaml │ ├── kueue-configuration.yaml.tftpl │ ├── nccl-jobset-example.yaml │ ├── nccl-rdma-installer.yaml │ └── nvidia-dra-driver.yaml ├── gke-consumption-options │ ├── README.md │ ├── dws-calendar.md │ ├── dws-flex-start-queued-provisioning │ │ ├── README.md │ │ ├── dws-queues.yaml.tftpl │ │ ├── gke-a3-ultragpu-deployment.yaml │ │ ├── gke-a3-ultragpu.yaml │ │ ├── nccl-installer.yaml │ │ ├── nccl-jobset-example.yaml │ │ └── sample-job.yaml │ └── dws-flex-start │ │ ├── README.md │ │ ├── dws-flex-start.yaml │ │ ├── gke-a3-ultragpu-deployment.yaml │ │ ├── gke-a3-ultragpu.yaml │ │ ├── nccl-installer.yaml │ │ └── nccl-jobset-example.yaml ├── gke-g4 │ ├── README.md │ ├── gke-g4-deployment.yaml │ └── gke-g4.yaml ├── gke-h4d │ ├── README.md │ ├── gke-h4d-deployment.yaml │ └── gke-h4d.yaml ├── gke-managed-hyperdisk.yaml ├── gke-managed-lustre.yaml ├── h4d-vm.yaml ├── hcls-blueprint.yaml ├── hpc-enterprise-slurm.yaml ├── hpc-gke.yaml ├── hpc-slurm-h4d.yaml ├── hpc-slurm-static.yaml ├── hpc-slurm.yaml ├── hypercompute_clusters │ └── a3u-slurm-ubuntu-gcs │ │ ├── README.md │ │ ├── a3u-slurm-ubuntu-gcs.yaml │ │ ├── deployment.yaml │ │ └── system_benchmarks │ │ ├── README.md │ │ ├── run-hpl-via-ramble.sh │ │ ├── run-nccl-tests-via-ramble.sh │ │ └── run-nemo-via-ramble.sh ├── image-builder.yaml ├── machine-learning │ ├── README.md │ ├── a3-highgpu-8g │ │ ├── README.md │ │ ├── ml-slurm-a3-0-base.yaml │ │ ├── ml-slurm-a3-1-image.yaml │ │ ├── ml-slurm-a3-2-cluster.yaml │ │ ├── nccl-tests │ │ │ ├── README.md │ │ │ ├── build-nccl-tests.sh │ │ │ ├── import_pytorch_container.sh │ │ │ ├── run-nccl-tests.sh │ │ │ └── run-topological-nccl-tests.sh │ │ └── nemo-framework │ │ │ ├── Dockerfile │ │ │ ├── README.md │ │ │ └── setup_nemo.sh │ ├── a3-megagpu-8g │ │ ├── README.md │ │ ├── a3mega-slurm-blueprint.yaml │ │ ├── a3mega-slurm-deployment.yaml │ │ ├── a3mega-slurm-gcsfuse-lssd-blueprint.yaml │ │ ├── nccl-tests │ │ │ ├── README │ │ │ ├── build-nccl-tests.sh │ │ │ ├── import_pytorch_container.sh │ │ │ ├── run-nccl-tests.sh │ │ │ └── run-topological-nccl-tests.sh │ │ ├── nemo-framework │ │ │ ├── Dockerfile │ │ │ ├── README.md │ │ │ └── setup_nemo.sh │ │ └── topological-pytorch │ │ │ ├── README.md │ │ │ ├── install.sh │ │ │ ├── topological_pytorch.py │ │ │ └── topological_pytorch.sh │ ├── a3-ultragpu-8g │ │ ├── README.md │ │ ├── a3ultra-slurm-blueprint.yaml │ │ ├── a3ultra-slurm-deployment.yaml │ │ ├── a3ultra-vm.yaml │ │ ├── nccl-tests │ │ │ ├── README.md │ │ │ ├── build-nccl-tests.sh │ │ │ ├── import_pytorch_container.sh │ │ │ └── run-nccl-tests.sh │ │ └── nemo-framework │ │ │ ├── Dockerfile │ │ │ ├── README.md │ │ │ └── setup_nemo.sh │ ├── a4-highgpu-8g │ │ ├── README.md │ │ ├── a4high-slurm-blueprint.yaml │ │ ├── a4high-slurm-deployment.yaml │ │ ├── a4high-vm-deployment.yaml │ │ ├── a4high-vm.yaml │ │ └── system_benchmarks │ │ │ ├── README.md │ │ │ └── run-nccl-tests-via-ramble.sh │ ├── a4x-highgpu-4g │ │ ├── README.md │ │ ├── a4xhigh-slurm-blueprint.yaml │ │ ├── a4xhigh-slurm-deployment.yaml │ │ └── system_benchmarks │ │ │ ├── README.md │ │ │ └── run-nccl-tests-via-ramble.sh │ └── build-service-images │ │ ├── README.md │ │ ├── a3m │ │ └── blueprint.yaml │ │ ├── a4x │ │ └── blueprint.yaml │ │ ├── build.sh │ │ ├── common │ │ └── blueprint.yaml │ │ └── shared.yaml ├── ml-gke.yaml ├── ml-slurm.yaml ├── pfs-lustre.yaml ├── pfs-managed-lustre-slurm.yaml ├── pfs-managed-lustre-vm.yaml ├── science │ └── af3-slurm │ │ ├── README.md │ │ ├── adm │ │ ├── af3-htc-architecture.png │ │ ├── apptainer_cloudbuild.yaml │ │ ├── apptainer_image.yml │ │ ├── controller.yml │ │ ├── datapipeline.yml │ │ ├── inference.yml │ │ └── onetime_prepare_databasebucket.yml │ │ ├── af3-slurm-deployment.yaml │ │ ├── af3-slurm.yaml │ │ └── examples │ │ ├── simple_job_launcher │ │ ├── README.md │ │ ├── af3-job-launcher.yml │ │ └── launch_af3_job.sh.j2 │ │ └── simple_service_launcher │ │ ├── README.md │ │ ├── af3-service.yml │ │ ├── af3-user.yml │ │ ├── af3config.json.j2 │ │ ├── requirements.txt │ │ └── simple_service_launcher.py ├── serverless-batch-mpi.yaml ├── serverless-batch.yaml └── storage-gke.yaml ├── gcluster.go ├── go.mod ├── go.sum ├── modules ├── README.md ├── compute │ ├── gke-job-template │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── templates │ │ │ └── gke-job-base.yaml.tftpl │ │ ├── variables.tf │ │ └── versions.tf │ ├── gke-node-pool │ │ ├── README.md │ │ ├── disk_definitions.tf │ │ ├── gpu-direct-workload │ │ │ ├── sample-tcpx-workload-job.yaml │ │ │ ├── sample-tcpxo-workload-job.yaml │ │ │ └── scripts │ │ │ │ ├── enable-tcpx-in-workload.py │ │ │ │ └── enable-tcpxo-in-workload.py │ │ ├── gpu_direct.tf │ │ ├── guest_cpus.tf │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── reservation_definitions.tf │ │ ├── threads_per_core_calc.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── resource-policy │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ └── vm-instance │ │ ├── README.md │ │ ├── compute_image.tf │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── startup_from_network_storage.tf │ │ ├── threads_per_core_calc.tf │ │ ├── variables.tf │ │ └── versions.tf ├── file-system │ ├── filestore │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── scripts │ │ │ ├── install-nfs-client.sh │ │ │ └── mount.sh │ │ ├── variables.tf │ │ └── versions.tf │ ├── gke-persistent-volume │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── templates │ │ │ ├── filestore-pv.yaml.tftpl │ │ │ ├── filestore-pvc.yaml.tftpl │ │ │ ├── gcs-pv.yaml.tftpl │ │ │ ├── gcs-pvc.yaml.tftpl │ │ │ ├── managed-lustre-pv.yaml.tftpl │ │ │ ├── managed-lustre-pvc.yaml.tftpl │ │ │ └── namespace.yaml.tftpl │ │ ├── variables.tf │ │ └── versions.tf │ ├── gke-storage │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── persistent-volume-claim │ │ │ ├── hyperdisk-balanced-pvc.yaml.tftpl │ │ │ ├── hyperdisk-extreme-pvc.yaml.tftpl │ │ │ ├── hyperdisk-throughput-pvc.yaml.tftpl │ │ │ ├── namespace.yaml.tftpl │ │ │ └── parallelstore-pvc.yaml.tftpl │ │ ├── storage-class │ │ │ ├── hyperdisk-balanced-sc.yaml.tftpl │ │ │ ├── hyperdisk-extreme-sc.yaml.tftpl │ │ │ ├── hyperdisk-throughput-sc.yaml.tftpl │ │ │ └── parallelstore-sc.yaml.tftpl │ │ ├── variables.tf │ │ └── versions.tf │ ├── managed-lustre │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── scripts │ │ │ ├── install-managed-lustre-client.sh │ │ │ └── mount.sh │ │ ├── variables.tf │ │ └── versions.tf │ ├── parallelstore │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── scripts │ │ │ └── install-daos-client.sh │ │ ├── templates │ │ │ └── mount-daos.sh.tftpl │ │ ├── variables.tf │ │ └── versions.tf │ └── pre-existing-network-storage │ │ ├── README.md │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── scripts │ │ ├── install-daos-client.sh │ │ ├── install-gcs-fuse.sh │ │ ├── install-managed-lustre-client.sh │ │ ├── install-nfs-client.sh │ │ └── mount.sh │ │ ├── templates │ │ ├── ddn_exascaler_luster_client_install.tftpl │ │ └── mount-daos.sh.tftpl │ │ ├── variables.tf │ │ └── versions.tf ├── internal │ ├── gpu-definition │ │ ├── README.md │ │ └── main.tf │ ├── instance_validations │ │ ├── README.md │ │ ├── main.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── network-attachment │ │ ├── README.md │ │ ├── main.tf │ │ └── metadata.yaml │ └── vpc_peering │ │ ├── README.md │ │ ├── main.tf │ │ └── metadata.yaml ├── management │ └── kubectl-apply │ │ ├── README.md │ │ ├── helm_install │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── variables.tf │ │ └── versions.tf │ │ ├── kubectl │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── variables.tf │ │ └── versions.tf │ │ ├── kueue │ │ └── kueue-helm-values.yaml │ │ ├── main.tf │ │ ├── manifests │ │ ├── jobset-v0.5.2.yaml │ │ ├── jobset-v0.7.2.yaml │ │ └── jobset-v0.8.1.yaml │ │ ├── metadata.yaml │ │ ├── providers.tf │ │ ├── variables.tf │ │ └── versions.tf ├── monitoring │ └── dashboard │ │ ├── README.md │ │ ├── dashboards │ │ ├── Empty.json.tpl │ │ └── HPC.json.tpl │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf ├── network │ ├── firewall-rules │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── variables.tf │ │ └── versions.tf │ ├── gpu-rdma-vpc │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── multivpc │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── pre-existing-subnetwork │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── pre-existing-vpc │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ └── vpc │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf ├── packer │ └── custom-image │ │ ├── README.md │ │ ├── image.pkr.hcl │ │ ├── metadata.yaml │ │ ├── variables.pkr.hcl │ │ └── versions.pkr.hcl ├── scheduler │ ├── batch-job-template │ │ ├── README.md │ │ ├── compute_image.tf │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── startup_from_network_storage.tf │ │ ├── templates │ │ │ ├── batch-job-base.yaml.tftpl │ │ │ └── batch-submit.sh.tftpl │ │ ├── variables.tf │ │ └── versions.tf │ ├── batch-login-node │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── gke-cluster │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── templates │ │ │ ├── gke-network-paramset.yaml.tftpl │ │ │ └── network-object.yaml.tftpl │ │ ├── variables.tf │ │ └── versions.tf │ └── pre-existing-gke-cluster │ │ ├── README.md │ │ ├── main.tf │ │ ├── metadata.yaml │ │ ├── outputs.tf │ │ ├── templates │ │ ├── gke-network-paramset.yaml.tftpl │ │ └── network-object.yaml.tftpl │ │ ├── variables.tf │ │ └── versions.tf └── scripts │ └── startup-script │ ├── README.md │ ├── files │ ├── configure-ssh.yml │ ├── configure_proxy.sh │ ├── early_run_hotfixes.sh │ ├── get_from_bucket.sh │ ├── install_ansible.sh │ ├── install_cloud_rdma_drivers.sh │ ├── install_docker.yml │ ├── install_gpu_network_wait_online.yml │ ├── install_managed_lustre.yml │ ├── install_monitoring_agent.sh │ ├── running-script-warning.sh │ ├── setup-raid.yml │ ├── setup-ssh-keys.sh │ ├── setup-ssh-keys.yml │ ├── startup-script-stdlib-body.sh │ └── startup-script-stdlib-head.sh │ ├── main.tf │ ├── metadata.yaml │ ├── outputs.tf │ ├── templates │ └── startup-script-custom.tftpl │ ├── variables.tf │ └── versions.tf ├── pkg ├── config │ ├── README.md │ ├── config.go │ ├── config_test.go │ ├── dict.go │ ├── dict_test.go │ ├── errors.go │ ├── expand.go │ ├── expand_test.go │ ├── expression.go │ ├── expression_test.go │ ├── license.go │ ├── materialize.go │ ├── path.go │ ├── path_test.go │ ├── staging.go │ ├── staging_test.go │ ├── validate.go │ ├── validator_test.go │ ├── yaml.go │ └── yaml_test.go ├── deploymentio │ ├── README.md │ ├── deploymentio.go │ ├── deploymentio_test.go │ ├── local.go │ └── local_test.go ├── inspect │ ├── list.go │ ├── modules_test.go │ └── walk.go ├── logging │ └── logging.go ├── modulereader │ ├── README.md │ ├── hcl_utils.go │ ├── hcl_utils_test.go │ ├── metadata.go │ ├── metadata_legacy.go │ ├── metareader.go │ ├── modules │ │ ├── imaginarium │ │ │ └── zebra │ │ │ │ ├── main.pkr.hcl │ │ │ │ └── variables.pkr.hcl │ │ └── test_role │ │ │ └── test_module │ │ │ ├── main.tf │ │ │ ├── metadata.yaml │ │ │ ├── outputs.tf │ │ │ ├── variables.tf │ │ │ └── versions.tf │ ├── packerreader.go │ ├── resreader.go │ ├── resreader_test.go │ └── tfreader.go ├── modulewriter │ ├── README.md │ ├── constants.go │ ├── deployment.gitignore.tmpl │ ├── hcl_utils.go │ ├── hcl_utils_test.go │ ├── modulewriter.go │ ├── modulewriter_test.go │ ├── packerwriter.go │ └── tfwriter.go ├── shell │ ├── common.go │ ├── common_test.go │ ├── packer.go │ ├── packer_test.go │ ├── terraform.go │ └── terraform_test.go ├── sourcereader │ ├── embedded.go │ ├── embedded_test.go │ ├── goget.go │ ├── goget_test.go │ ├── local.go │ ├── local_test.go │ ├── modules │ │ └── network │ │ │ └── vpc │ │ │ ├── main.tf │ │ │ ├── output.tf │ │ │ └── variables.tf │ ├── sourcereader.go │ └── sourcereader_test.go └── validators │ ├── cloud.go │ ├── semantic.go │ ├── validators.go │ └── validators_test.go ├── tests ├── __init__.py └── test_maintenance.py └── tools ├── autodoc └── terraform_docs.sh ├── capture_serial.sh ├── clean-filestore-limit.sh ├── clean-metadata.sh ├── clean-resource-policies.sh ├── cleanup-build.py ├── cloud-build ├── README.md ├── ansible.cfg ├── babysit │ ├── __init__.py │ ├── cli_ui.py │ ├── core.py │ ├── notebook_ui.py │ ├── run │ └── runner.py ├── check_running_build.sh ├── daily-tests │ ├── README.md │ ├── ansible_playbooks │ │ ├── base-integration-test.yml │ │ ├── hello-world-integration-test.yml │ │ ├── htcondor-integration-test.yml │ │ ├── multigroup-integration-test.yml │ │ ├── ofe-deployment-integration-test.yml │ │ ├── post-destroy-tasks │ │ │ ├── delete-image.yml │ │ │ └── delete-reservation.yml │ │ ├── pre-deploy-tasks │ │ │ └── create-reservation.yml │ │ ├── slurm-integration-test.yml │ │ ├── tasks │ │ │ ├── create_deployment_directory.yml │ │ │ ├── gather_startup_script_logs.yml │ │ │ ├── get_instance_ids.yml │ │ │ ├── rescue_gcluster_failure.yml │ │ │ ├── wait-for-host.yml │ │ │ └── wait-for-startup-script.yml │ │ ├── test-slurm-v6-tpu.yml │ │ └── test-validation │ │ │ ├── test-ansible-vm.yml │ │ │ ├── test-batch-submission.yml │ │ │ ├── test-crd.yml │ │ │ ├── test-enroot.yml │ │ │ ├── test-gke-a3-high.yml │ │ │ ├── test-gke-a3-mega.yml │ │ │ ├── test-gke-a3-ultra.yml │ │ │ ├── test-gke-a4.yml │ │ │ ├── test-gke-cluster-provisioning.yml │ │ │ ├── test-gke-job.yml │ │ │ ├── test-gke-kueue-config.yml │ │ │ ├── test-gke-kueue.yml │ │ │ ├── test-gke-managed-hyperdisk.yml │ │ │ ├── test-gke-managed-lustre.yml │ │ │ ├── test-gke-ray.yml │ │ │ ├── test-gpus-slurm.yml │ │ │ ├── test-hello-world.yml │ │ │ ├── test-htcondor-access-point.yml │ │ │ ├── test-irdma.yml │ │ │ ├── test-lustre-slurm.yml │ │ │ ├── test-lustre-vm.yml │ │ │ ├── test-ml-gke-e2e-validation.yml │ │ │ ├── test-monitoring.yml │ │ │ ├── test-mounts.yml │ │ │ ├── test-nvidia-smi.yml │ │ │ ├── test-ofe-deployment.yml │ │ │ ├── test-partitions.yml │ │ │ ├── test-pbspro.yml │ │ │ ├── test-slinky.yml │ │ │ └── test-spack.yml │ ├── blueprints │ │ ├── ansible-vm.yaml │ │ ├── crd-default.yaml │ │ ├── crd-ubuntu.yaml │ │ ├── e2e.yaml │ │ ├── gke-a2-highgpu.yaml │ │ ├── kueue-config-files │ │ │ ├── block-topology-tas-small-job.yaml │ │ │ ├── host-topology-tas-small-job.yaml │ │ │ ├── kueue-configuration.yaml.tftpl │ │ │ ├── rack-topology-tas-small-job.yaml │ │ │ ├── sample-kueue-job.yaml │ │ │ ├── tas-queues-template.yaml │ │ │ └── tas-queues.yaml │ │ ├── lustre-slurm.yaml │ │ ├── lustre-vm.yaml │ │ ├── ml-gke-e2e.yaml │ │ ├── monitoring.yaml │ │ └── nfs-server-homefs.yaml │ ├── builds │ │ ├── ansible-vm.yaml │ │ ├── batch-mpi.yaml │ │ ├── chrome-remote-desktop-ubuntu.yaml │ │ ├── chrome-remote-desktop.yaml │ │ ├── cloud-batch.yaml │ │ ├── e2e.yaml │ │ ├── gcluster-dockerfile.yaml │ │ ├── gke-a2-highgpu-kueue.yaml │ │ ├── gke-a3-highgpu.yaml │ │ ├── gke-a3-megagpu.yaml │ │ ├── gke-a3-ultragpu-nccl.yaml │ │ ├── gke-a3-ultragpu.yaml │ │ ├── gke-a4.yaml │ │ ├── gke-g4.yaml │ │ ├── gke-h4d.yaml │ │ ├── gke-inactive-reservation.yaml │ │ ├── gke-managed-hyperdisk.yaml │ │ ├── gke-managed-lustre.yaml │ │ ├── gke-storage.yaml │ │ ├── gke.yaml │ │ ├── h4d-vm.yaml │ │ ├── hcls.yaml │ │ ├── hpc-build-slurm-image.yaml │ │ ├── hpc-enterprise-slurm.yaml │ │ ├── htc-slurm.yaml │ │ ├── htcondor.yaml │ │ ├── lustre-slurm.yaml │ │ ├── lustre-vm.yaml │ │ ├── ml-a3-highgpu-slurm.yaml │ │ ├── ml-a3-megagpu-slurm-ubuntu.yaml │ │ ├── ml-a3-ultragpu-jbvms.yaml │ │ ├── ml-a3-ultragpu-slurm.yaml │ │ ├── ml-a4-highgpu-slurm-flex.yaml │ │ ├── ml-a4-highgpu-slurm.yaml │ │ ├── ml-gke-e2e.yaml │ │ ├── ml-gke.yaml │ │ ├── ml-slurm.yaml │ │ ├── monitoring.yaml │ │ ├── ofe-deployment.yaml │ │ ├── packer.yaml │ │ ├── pfs-managed-lustre-slurm.yaml │ │ ├── pfs-managed-lustre-vm.yaml │ │ ├── slinky.yml │ │ ├── slurm-flex.yaml │ │ ├── slurm-gcp-v6-debian.yaml │ │ ├── slurm-gcp-v6-reconfig-size.yaml │ │ ├── slurm-gcp-v6-rocky8.yaml │ │ ├── slurm-gcp-v6-simple-job-completion.yaml │ │ ├── slurm-gcp-v6-ssd.yaml │ │ ├── slurm-gcp-v6-startup-scripts.yaml │ │ ├── slurm-gcp-v6-static.yaml │ │ ├── slurm-gcp-v6-topology.yaml │ │ ├── slurm-gcp-v6-tpu.yaml │ │ ├── slurm-gcp-v6-ubuntu.yaml │ │ ├── slurm-gke.yaml │ │ └── spack-gromacs.yaml │ ├── tests │ │ ├── ansible-vm.yml │ │ ├── batch-mpi.yml │ │ ├── chrome-remote-desktop.yml │ │ ├── cloud-batch.yml │ │ ├── gke-a2-highgpu-kueue.yml │ │ ├── gke-a3-highgpu.yml │ │ ├── gke-a3-megagpu.yml │ │ ├── gke-a3-ultragpu-nccl.yml │ │ ├── gke-a3-ultragpu.yml │ │ ├── gke-a4.yml │ │ ├── gke-g4.yml │ │ ├── gke-h4d.yml │ │ ├── gke-inactive-reservation.yml │ │ ├── gke-managed-hyperdisk.yml │ │ ├── gke-managed-lustre.yml │ │ ├── gke-storage.yml │ │ ├── gke.yml │ │ ├── h4d-vm.yml │ │ ├── hcls.yml │ │ ├── hello-world-vars.yml │ │ ├── hpc-build-slurm-image.yml │ │ ├── hpc-enterprise-slurm.yml │ │ ├── htc-slurm.yml │ │ ├── htcondor.yml │ │ ├── lustre-slurm.yml │ │ ├── lustre-vm.yml │ │ ├── ml-a3-highgpu-slurm-cluster.yml │ │ ├── ml-a3-highgpu-slurm-image.yml │ │ ├── ml-a3-megagpu-slurm-ubuntu.yml │ │ ├── ml-a3-ultragpu-jbvms.yml │ │ ├── ml-a3-ultragpu-slurm.yml │ │ ├── ml-a4-highgpu-slurm-flex.yml │ │ ├── ml-a4-highgpu-slurm.yml │ │ ├── ml-gke-e2e.yml │ │ ├── ml-gke.yml │ │ ├── ml-slurm.yml │ │ ├── monitoring.yml │ │ ├── ofe-deployment.yml │ │ ├── packer.yml │ │ ├── pfs-managed-lustre-slurm.yml │ │ ├── pfs-managed-lustre-vm.yml │ │ ├── slinky.yml │ │ ├── slurm-gke.yml │ │ ├── slurm-v6-debian.yml │ │ ├── slurm-v6-rocky8.yml │ │ ├── slurm-v6-ssd.yml │ │ ├── slurm-v6-startup-scripts.yml │ │ ├── slurm-v6-static.yml │ │ ├── slurm-v6-tpu.yml │ │ ├── slurm-v6-ubuntu.yml │ │ └── spack-gromacs.yml │ └── validate_tests_metadata.py ├── dependency-checks │ ├── Dockerfile.packer │ ├── Dockerfile.precommit │ ├── Dockerfile.terraform │ └── hpc-toolkit-go-builder.yaml ├── hpc-toolkit-pr-validation.yaml ├── images │ ├── cluster-toolkit-dockerfile │ │ ├── Dockerfile │ │ └── README.md │ ├── ghpc-docker │ │ ├── Dockerfile │ │ └── cloudbuild.yaml │ └── test-runner │ │ ├── Dockerfile │ │ └── config.yaml ├── pr-ofe.yaml ├── project-cleanup-filestore.yaml ├── project-cleanup-slurm.yaml ├── provision │ ├── README.md │ ├── daily-cleanup.tf │ ├── daily-tests.tf │ ├── image-build-test-runner.tf │ ├── list-tests.tf │ ├── list_tests.py │ ├── main.tf │ ├── pr-go-build-test.tf │ ├── pr-ofe-test.tf │ ├── pr-ofe.tf │ ├── pr-tests.tf │ ├── pr-validation.tf │ ├── providers.tf │ ├── release-tests.tf │ ├── reservations.tf │ ├── trigger-schedule │ │ ├── README.md │ │ ├── main.tf │ │ ├── variables.tf │ │ └── versions.tf │ ├── variables.tf │ ├── versions.tf │ ├── weekly_build_dependency_check.tf │ └── zebug.tf └── requirements.txt ├── cloud-workstations ├── 200_configure-hpc-toolkit.sh ├── Dockerfile ├── README.md ├── code_oss_requirements.txt ├── configure-hpc-toolkit.sh └── workstation-image.yaml ├── create-release-candidate.sh ├── detect_packer.sh ├── duplicate-diff.py ├── enforce_coverage.pl ├── label-check.py ├── maintenance └── maintenance.py ├── python-integration-tests ├── blueprints │ ├── slurm-flex.yaml │ ├── slurm-reconfig-after.yaml │ ├── slurm-reconfig-before.yaml │ ├── slurm-simple.yaml │ └── topology-test.yaml ├── deployment.py ├── external_deployment.py ├── slurm_reconfig_size.py ├── slurm_simple_job_completion.py ├── slurm_topology.py ├── ssh.py └── test.py ├── rdma-preflight.sh ├── serial_port_collector.py ├── topo-lookup.py ├── validate_configs ├── golden_copies │ ├── configs │ │ ├── files │ │ │ ├── connect_mode.txt │ │ │ └── local_mount.txt │ │ ├── igc_pkr.yaml │ │ ├── igc_tf.yaml │ │ ├── merge_flatten.yaml │ │ ├── text_escape.yaml │ │ └── versioned_blueprint.yaml │ ├── expectations │ │ ├── igc_pkr │ │ │ ├── .ghpc │ │ │ │ └── artifacts │ │ │ │ │ ├── DO_NOT_MODIFY_THIS_DIRECTORY │ │ │ │ │ └── expanded_blueprint.yaml │ │ │ ├── instructions.txt │ │ │ ├── one │ │ │ │ └── image │ │ │ │ │ ├── defaults.auto.pkrvars.hcl │ │ │ │ │ ├── image.pkr.hcl │ │ │ │ │ ├── metadata.yaml │ │ │ │ │ ├── variables.pkr.hcl │ │ │ │ │ └── versions.pkr.hcl │ │ │ └── zero │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ ├── providers.tf │ │ │ │ ├── terraform.tfvars │ │ │ │ ├── variables.tf │ │ │ │ └── versions.tf │ │ ├── igc_tf │ │ │ ├── .ghpc │ │ │ │ ├── artifacts │ │ │ │ │ ├── DO_NOT_MODIFY_THIS_DIRECTORY │ │ │ │ │ └── expanded_blueprint.yaml │ │ │ │ └── staged │ │ │ │ │ ├── connect_mode.txt_0a3df07f53 │ │ │ │ │ └── local_mount.txt_76c024cd89 │ │ │ ├── instructions.txt │ │ │ ├── one │ │ │ │ ├── main.tf │ │ │ │ ├── providers.tf │ │ │ │ ├── terraform.tfvars │ │ │ │ ├── variables.tf │ │ │ │ └── versions.tf │ │ │ └── zero │ │ │ │ ├── main.tf │ │ │ │ ├── outputs.tf │ │ │ │ ├── providers.tf │ │ │ │ ├── terraform.tfvars │ │ │ │ ├── variables.tf │ │ │ │ └── versions.tf │ │ ├── merge_flatten │ │ │ ├── .ghpc │ │ │ │ └── artifacts │ │ │ │ │ ├── DO_NOT_MODIFY_THIS_DIRECTORY │ │ │ │ │ └── expanded_blueprint.yaml │ │ │ ├── instructions.txt │ │ │ └── zero │ │ │ │ ├── main.tf │ │ │ │ ├── providers.tf │ │ │ │ ├── terraform.tfvars │ │ │ │ ├── variables.tf │ │ │ │ └── versions.tf │ │ ├── text_escape │ │ │ ├── .ghpc │ │ │ │ └── artifacts │ │ │ │ │ ├── DO_NOT_MODIFY_THIS_DIRECTORY │ │ │ │ │ └── expanded_blueprint.yaml │ │ │ ├── instructions.txt │ │ │ └── zero │ │ │ │ └── lime │ │ │ │ ├── defaults.auto.pkrvars.hcl │ │ │ │ ├── image.pkr.hcl │ │ │ │ ├── metadata.yaml │ │ │ │ ├── variables.pkr.hcl │ │ │ │ └── versions.pkr.hcl │ │ └── versioned_blueprint │ │ │ ├── .ghpc │ │ │ └── artifacts │ │ │ │ ├── DO_NOT_MODIFY_THIS_DIRECTORY │ │ │ │ └── expanded_blueprint.yaml │ │ │ ├── instructions.txt │ │ │ └── primary │ │ │ ├── main.tf │ │ │ ├── outputs.tf │ │ │ ├── providers.tf │ │ │ ├── terraform.tfvars │ │ │ ├── variables.tf │ │ │ └── versions.tf │ └── validate.sh ├── os_compatibility_tests │ ├── batch-filestore.yaml │ ├── batch-lustre.yaml │ ├── batch-startup.yaml │ ├── vm-crd.yaml │ ├── vm-filestore.yaml │ ├── vm-lustre.yaml │ └── vm-startup.yaml ├── ramble.yaml ├── test_configs │ ├── 2-network-interfaces.yaml │ ├── 2filestore-4instances.yaml │ ├── README.md │ ├── apt-collision.yaml │ ├── centos8-ss.yaml │ ├── cloud-batch-cft-instance-template.yaml │ ├── cloud-storage-bucket.yaml │ ├── complex-data.yaml │ ├── config-ssh.yaml │ ├── dashboards.yaml │ ├── debian-ss.yaml │ ├── exascaler-existing-vpc.yaml │ ├── exascaler-new-vpc.yaml │ ├── gpu.yaml │ ├── hpc-centos-ss.yaml │ ├── hpc-cluster-simple-nfs-sql.yaml │ ├── hpc-cluster-simple.yaml │ ├── instance-with-startup.yaml │ ├── label_test.yaml │ ├── multiple-batch-jobs.yaml │ ├── nfs-servers.yaml │ ├── node-groups.yaml │ ├── overwrite_labels.yaml │ ├── packer.yaml │ ├── remote-desktop.yaml │ ├── rocky-ss.yaml │ ├── simple-startup.yaml │ ├── slurm-gcp-v6-startup-scripts.yaml │ ├── spack-buildcache.yaml │ ├── spack-environments.yaml │ ├── startup-options.yaml │ ├── test_outputs.yaml │ ├── threads_per_core.yaml │ ├── timeout_test.yaml │ ├── two-clusters-sql.yaml │ ├── ubuntu-ss.yaml │ ├── vm-instance-local-ssd.yaml │ ├── vm.yaml │ └── zone-policies-slurm.yaml └── validate_configs.sh └── version_check.sh /.ansible-lint: -------------------------------------------------------------------------------- 1 | skip_list: 2 | - yaml 3 | - jinja[invalid] 4 | 5 | exclude_paths: 6 | - .cache/ # implicit unless exclude_paths is defined in config 7 | - .github/ 8 | - cmd/ 9 | - docs/ 10 | - examples/ 11 | - community/examples/ 12 | - pkg/ 13 | 14 | mock_roles: 15 | - googlecloudplatform.google_cloud_ops_agents 16 | 17 | kinds: 18 | - playbook: "**/ansible_playbooks/*test.{yml,yaml}" 19 | - playbook: "**/files/*.{yml,yaml}" 20 | - playbook: "**/scripts/*.{yml,yaml}" 21 | - tasks: "**/ansible_playbooks/test*.{yml,yaml}" 22 | - tasks: "**/tasks/*" 23 | -------------------------------------------------------------------------------- /.codespellrc: -------------------------------------------------------------------------------- 1 | [codespell] 2 | # js/ folder seems to contain vendored code 3 | skip = .git,*.pdf,*.svg,*.min.js,*.js.map,js,requirements.txt 4 | # docs/videos/healthcare-and-life-sciences/lysozyme-example/submit.sh has CONECT - might be "legit" 5 | ignore-regex = HETATM -e CONECT|\([A-Z]\)[a-z]+ 6 | # 7 | ignore-words-list = namd,tempdate,te,ue,startd,passtime 8 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ### Submission Checklist 2 | 3 | NOTE: Community submissions can take up to 2 weeks to be reviewed. 4 | 5 | Please take the following actions before submitting this pull request. 6 | 7 | * Fork your PR branch from the Toolkit "develop" branch (not main) 8 | * Test all changes with pre-commit in a local branch [#](https://goo.gle/hpc-toolkit#development) 9 | * Confirm that "make tests" passes all tests 10 | * Add or modify unit tests to cover code changes 11 | * Ensure that unit test coverage remains above 80% 12 | * Update all applicable documentation 13 | * Follow Cluster Toolkit Contribution guidelines [#](https://goo.gle/hpc-toolkit-contributing) 14 | -------------------------------------------------------------------------------- /.pytest.ini: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | [pytest] 16 | filterwarnings = ignore::DeprecationWarning 17 | testpaths = tests community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/slurm_files/scripts/tests 18 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @GoogleCloudPlatform/hpc-toolkit @samskillman 2 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | To report a security issue, please email hpc-toolkit-security@google.com 2 | with a description of the issue, the steps you took to create the issue, 3 | affected versions, and, if known, mitigations for the issue. Our vulnerability 4 | management team will respond within 3 working days of your email. If the issue 5 | is confirmed as a vulnerability, we will open a Security Advisory. This project 6 | follows a 90 day disclosure timeline. 7 | -------------------------------------------------------------------------------- /community/cos-nvidia-bug-report/app/requirements.txt: -------------------------------------------------------------------------------- 1 | absl-py 2 | requests 3 | google-cloud-storage 4 | retry 5 | immutabledict 6 | packaging 7 | -------------------------------------------------------------------------------- /community/examples/README.md: -------------------------------------------------------------------------------- 1 | # Example Blueprints 2 | 3 | This directory contains blueprints contributed externally by the community. 4 | These can be used by the Toolkit to provision your infrastructure. 5 | 6 | They are documented in the [the core examples folder](../../examples/README.md) 7 | along with [community support guidelines](../../examples/README.md#blueprint-descriptions). 8 | -------------------------------------------------------------------------------- /community/examples/slurm-gke/files/cgroup.conf.tpl: -------------------------------------------------------------------------------- 1 | # cgroup.conf 2 | # https://slurm.schedmd.com/cgroup.conf.html 3 | 4 | CgroupPlugin=autodetect 5 | IgnoreSystemd=yes 6 | # EnableControllers=yes 7 | ConstrainCores=yes 8 | ConstrainRamSpace=yes 9 | ConstrainSwapSpace=no 10 | ConstrainDevices=yes 11 | -------------------------------------------------------------------------------- /community/examples/slurm-gke/files/slurm-namespace.yaml.tftpl: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | apiVersion: v1 16 | kind: Namespace 17 | metadata: 18 | name: ${namespace} 19 | -------------------------------------------------------------------------------- /community/examples/xpk-n2-filestore/config-map.yaml.tftpl: -------------------------------------------------------------------------------- 1 | kind: ConfigMap 2 | apiVersion: v1 3 | metadata: 4 | name: ${deployment_name}-resources-configmap 5 | data: 6 | ${machine_type}-${vms_per_slice}: "${vms_per_slice}" 7 | --- 8 | kind: ConfigMap 9 | apiVersion: v1 10 | metadata: 11 | name: ${deployment_name}-metadata-configmap 12 | data: 13 | capacity_type: ON_DEMAND 14 | xpk_version: ${xpk_version} 15 | -------------------------------------------------------------------------------- /community/front-end/.gitignore: -------------------------------------------------------------------------------- 1 | /clusters/ 2 | fs/ 3 | vpcs/ 4 | runs/ 5 | myvenv/ 6 | __pycache__ 7 | website/ghpcfe/migrations/ 8 | .*.swp 9 | *.sqlite3 10 | bin/ 11 | lib/ 12 | share/ 13 | run/ 14 | configuration.yaml 15 | website/static/ 16 | workbenches/ 17 | dependencies/ 18 | tf/deployment.tar.gz 19 | key1 20 | key2 21 | .terraform/ 22 | .terraform.lock.hcl 23 | terraform.tfstate* 24 | terraform.tfvars 25 | tf/.tkfe.lock 26 | tf/tfapply.log 27 | tf/tfdestroy.log 28 | config.yaml 29 | -------------------------------------------------------------------------------- /community/front-end/ofe/docs/README.md: -------------------------------------------------------------------------------- 1 | ## Cluster Toolkit FrontEnd Documentations 2 | 3 | - [Administrator's Guide](admin_guide.md) 4 | - [User Guide](user_guide.md) 5 | - [Developer's Guide](developer_guide.md) 6 | -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/GCP-app-credential.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/GCP-app-credential.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/Workbench-Create-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/Workbench-Create-1.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/Workbench-Create-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/Workbench-Create-2.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/Workbench-Create-Presets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/Workbench-Create-Presets.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/Workbench-Create-Storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/Workbench-Create-Storage.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/Workbench-Create-links.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/Workbench-Create-links.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/Workbench_userguide/JupyterLab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/Workbench_userguide/JupyterLab.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/Workbench_userguide/create1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/Workbench_userguide/create1.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/Workbench_userguide/create2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/Workbench_userguide/create2.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/Workbench_userguide/create3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/Workbench_userguide/create3.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/Workbench_userguide/create4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/Workbench_userguide/create4.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/Workbench_userguide/create5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/Workbench_userguide/create5.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/Workbench_userguide/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/Workbench_userguide/delete.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/Workbench_userguide/destroy_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/Workbench_userguide/destroy_confirm.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/Workbench_userguide/destroying_status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/Workbench_userguide/destroying_status.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/Workbench_userguide/select_cred.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/Workbench_userguide/select_cred.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/benchmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/benchmark.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/db-UML.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/db-UML.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/register-social-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/register-social-app.png -------------------------------------------------------------------------------- /community/front-end/ofe/docs/images/system-design.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/docs/images/system-design.png -------------------------------------------------------------------------------- /community/front-end/ofe/infrastructure_files/gcs_bucket/clusters/ansible_setup/ansible.cfg: -------------------------------------------------------------------------------- 1 | [defaults] 2 | inventory = hosts 3 | force_handlers = True 4 | 5 | [privilege_escalation] 6 | become = True 7 | -------------------------------------------------------------------------------- /community/front-end/ofe/infrastructure_files/gcs_bucket/clusters/ansible_setup/compute.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | --- 16 | - name: "Compute Node Setup" 17 | hosts: localhost 18 | connection: local 19 | vars_files: 20 | - ./vars.yaml 21 | roles: 22 | - common 23 | - dev_env 24 | - spack_setup 25 | - {role: containers, when: use_containers | bool} 26 | -------------------------------------------------------------------------------- /community/front-end/ofe/infrastructure_files/gcs_bucket/clusters/ansible_setup/login.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | --- 16 | - name: "Login Node Setup" 17 | hosts: localhost 18 | connection: local 19 | vars_files: 20 | - ./vars.yaml 21 | roles: 22 | - common 23 | - dev_env 24 | - spack_setup 25 | -------------------------------------------------------------------------------- /community/front-end/ofe/infrastructure_files/gcs_bucket/clusters/ansible_setup/roles/c2_daemon/files/ghpcfe_c2.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=GHPCFE Command and Control Daemon 3 | After=network.target 4 | 5 | [Service] 6 | Type=simple 7 | PIDFile=/run/ghpcefe.pid 8 | ExecStart=/usr/local/sbin/ghpcfe_c2daemon.py 9 | ExecStop=/bin/kill -s INT $MAINPID 10 | RestartForceExitStatus=123 11 | 12 | [Install] 13 | WantedBy=multi-user.target 14 | -------------------------------------------------------------------------------- /community/front-end/ofe/infrastructure_files/gcs_bucket/clusters/ansible_setup/vars.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | --- 16 | spack_dir: "{{ ansible_local.ghpcfe.config.spack_dir }}" 17 | use_containers: "{{ ansible_local.ghpcfe.config.use_containers }}" 18 | -------------------------------------------------------------------------------- /community/front-end/ofe/infrastructure_files/vpc_tf/GCP/subnet.tf.template: -------------------------------------------------------------------------------- 1 | 2 | resource "google_compute_subnetwork" "subnet_{SUBNET_ID}" { 3 | name = "${local.vpc_key}-subnet-{SUBNET_ID}" 4 | region = var.region 5 | project = var.project 6 | ip_cidr_range = "{CIDR_TEXT}" 7 | network = google_compute_network.network.name 8 | private_ip_google_access = {PRIVATE_GOOGLE_ACCESS_ENABLED} 9 | } 10 | 11 | output "subnet-{SUBNET_ID}" { 12 | value = google_compute_subnetwork.subnet_{SUBNET_ID}.name 13 | } 14 | -------------------------------------------------------------------------------- /community/front-end/ofe/infrastructure_files/workbench_tf/google/provider.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | provider "google" { 18 | region = var.region 19 | zone = var.zone 20 | project = var.project 21 | } 22 | -------------------------------------------------------------------------------- /community/front-end/ofe/infrastructure_files/workbench_tf/google/wait-for-startup/outputs.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | -------------------------------------------------------------------------------- /community/front-end/ofe/infrastructure_files/workbench_tf/google/wait-for-startup/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2021 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_providers { 19 | null = { 20 | source = "hashicorp/null" 21 | version = "~> 3.0" 22 | } 23 | } 24 | 25 | required_version = ">= 0.14.0" 26 | } 27 | -------------------------------------------------------------------------------- /community/front-end/ofe/script/README.md: -------------------------------------------------------------------------------- 1 | 2 | Contains utility scripts used by deploy and teardown scripts, which can also 3 | be used by end-users to help with GCP administration tasks. 4 | -------------------------------------------------------------------------------- /community/front-end/ofe/tf/network/outputs.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | output "subnet_name" { 18 | value = google_compute_subnetwork.hosting_subnetwork.name 19 | description = "Name of the generated subnet" 20 | } 21 | -------------------------------------------------------------------------------- /community/front-end/ofe/tf/network/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 0.13" 19 | 20 | required_providers { 21 | google = { 22 | source = "hashicorp/google" 23 | version = "~> 4.0" 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /community/front-end/ofe/tf/outputs.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | output "server_ip" { 18 | description = "Webserver IP Address" 19 | value = google_compute_instance.server_vm.network_interface[0].access_config[0].nat_ip 20 | } 21 | -------------------------------------------------------------------------------- /community/front-end/ofe/tf/provider.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | provider "google" { 18 | project = var.project_id 19 | zone = var.zone 20 | region = var.region 21 | } 22 | provider "google-beta" { 23 | project = var.project_id 24 | zone = var.zone 25 | region = var.region 26 | } 27 | -------------------------------------------------------------------------------- /community/front-end/ofe/website/.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__/ 2 | *.py[cod] 3 | .secret_key 4 | -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/cluster_manager/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/GCP_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/GCP_logo.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/application.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/application.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/checkmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/checkmark.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/cluster.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/credential.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/credential.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/image.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/loading.gif -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/main-application.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/main-application.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/main-cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/main-cluster.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/main-credential.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/main-credential.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/main-job.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/main-job.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/placeholder.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/status-completed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/status-completed.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/status-configured.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/status-configured.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/status-deleted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/status-deleted.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/status-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/status-error.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/status-paused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/status-paused.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/status-ready.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/status-ready.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/unknown_user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/unknown_user.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/white-application.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/white-application.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/white-benchmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/white-benchmark.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/white-cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/white-cluster.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/white-credential.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/white-credential.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/white-filesystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/white-filesystem.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/white-grafana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/white-grafana.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/white-hamburger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/white-hamburger.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/white-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/white-home.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/white-job.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/white-job.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/white-network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/white-network.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/white-registry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/white-registry.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/white-servers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/white-servers.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/white-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/white-user.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/static/img/workbench-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/community/front-end/ofe/website/ghpcfe/static/img/workbench-white.png -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/templates/403.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | {% extends "base_generic.html" %} 18 | 19 | {% block content %} 20 | 21 |

403 Forbidden Error

22 | 23 |
24 | 25 |

You do not have permissions to access the page.

26 | 27 |

If you believe this is incorrect, please contact your administrator.

28 | 29 | {% endblock %} 30 | -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/templates/blueprint/cloudsql_config.yaml.j2: -------------------------------------------------------------------------------- 1 | {# 2 | Copyright 2025 "Google LLC" 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | #} 16 | 17 | - source: community/modules/database/slurm-cloudsql-federation 18 | kind: terraform 19 | id: slurm-sql 20 | use: [hpc_network] 21 | settings: 22 | sql_instance_name: sql-{{ cluster_id }} 23 | tier: "db-g1-small" 24 | -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/templates/grafana.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | {% extends "base_generic.html" %} 18 | 19 | {% block padded_content %} 20 | 21 |
22 | 23 |
24 | 25 | {% endblock %} 26 | -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/templates/utility/credential_dropdown_list_options.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | {% for credential in credentials %} 19 | 20 | {% endfor %} 21 | -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/templatetags/form_extras.py: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | from django import template 16 | 17 | register = template.Library() 18 | 19 | @register.filter(name='add_class') 20 | def add_class(field, css): 21 | return field.as_widget(attrs={'class': css}) 22 | -------------------------------------------------------------------------------- /community/front-end/ofe/website/ghpcfe/views/error_pages.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | """Custom error page renderers""" 16 | 17 | from django.shortcuts import render 18 | 19 | def custom_error_403(request, unused_exception): 20 | return render(request, '403.html', {}) 21 | -------------------------------------------------------------------------------- /community/front-end/ofe/website/templates/registration/logged_out.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | {% extends "base_generic.html" %} 18 | 19 | {% block content %} 20 |

Logged out!

21 | Click here to login again. 22 | {% endblock %} 23 | -------------------------------------------------------------------------------- /community/front-end/ofe/website/templates/registration/password_reset_complete.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | {% extends "base_generic.html" %} 18 | 19 | {% block content %} 20 |

Your password has been changed!

21 |

log in again?

22 | {% endblock %} 23 | -------------------------------------------------------------------------------- /community/front-end/ofe/website/templates/registration/password_reset_done.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | {% extends "base_generic.html" %} 18 | 19 | {% block content %} 20 |

We've emailed you instructions for setting your password. If they haven't arrived in a few minutes, check your spam folder.

21 | {% endblock %} 22 | -------------------------------------------------------------------------------- /community/front-end/ofe/website/templates/registration/password_reset_email.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | Someone asked for password reset for email {{ email }}. Follow the link below: 18 | {{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %} 19 | -------------------------------------------------------------------------------- /community/front-end/ofe/website/website/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | -------------------------------------------------------------------------------- /community/modules/README.md: -------------------------------------------------------------------------------- 1 | # Community Modules 2 | 3 | This directory contains modules that rely on partner resources, have been 4 | contributed by outside developers or are in early development by the Cluster Toolkit 5 | team. The modules in this directory are listed alongside core modules in the 6 | [core modules README](../../modules/README.md). There you can also learn more 7 | about general use and how to write custom Cluster Toolkit modules. 8 | -------------------------------------------------------------------------------- /community/modules/compute/gke-nodeset/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - container.googleapis.com 20 | - storage.googleapis.com 21 | -------------------------------------------------------------------------------- /community/modules/compute/gke-nodeset/output.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | output "nodeset_name" { 16 | description = "Name of the new Slinky nodset" 17 | value = local.nodeset.nodeset_name 18 | } 19 | -------------------------------------------------------------------------------- /community/modules/compute/gke-partition/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - storage.googleapis.com 20 | -------------------------------------------------------------------------------- /community/modules/compute/htcondor-execute-point/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | - storage.googleapis.com 21 | -------------------------------------------------------------------------------- /community/modules/compute/mig/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | ghpc: 21 | inject_module_id: ghpc_module_id 22 | -------------------------------------------------------------------------------- /community/modules/compute/mig/outputs.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | output "self_link" { 16 | description = "The URL of the created MIG" 17 | value = google_compute_instance_group_manager.mig.self_link 18 | } 19 | -------------------------------------------------------------------------------- /community/modules/compute/mig/versions.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | terraform { 16 | required_version = ">= 1.3" 17 | 18 | required_providers { 19 | google = { 20 | source = "hashicorp/google" 21 | version = "> 5.0" 22 | } 23 | } 24 | provider_meta "google" { 25 | module_name = "blueprints/terraform/hpc-toolkit:mig/v1.69.0" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /community/modules/compute/notebook/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - notebooks.googleapis.com 20 | - storage.googleapis.com 21 | -------------------------------------------------------------------------------- /community/modules/compute/schedmd-slurm-gcp-v6-nodeset-dynamic/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [compute.googleapis.com] 19 | ghpc: 20 | inject_module_id: name 21 | -------------------------------------------------------------------------------- /community/modules/compute/schedmd-slurm-gcp-v6-nodeset-dynamic/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 1.3" 19 | provider_meta "google" { 20 | module_name = "blueprints/terraform/hpc-toolkit:schedmd-slurm-gcp-v6-nodeset-dynamic/v1.69.0" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /community/modules/compute/schedmd-slurm-gcp-v6-nodeset-tpu/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [] 19 | ghpc: 20 | inject_module_id: name 21 | has_to_be_used: true 22 | -------------------------------------------------------------------------------- /community/modules/compute/schedmd-slurm-gcp-v6-nodeset-tpu/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 1.3" 19 | 20 | provider_meta "google" { 21 | module_name = "blueprints/terraform/hpc-toolkit:schedmd-slurm-gcp-v6-nodeset-tpu/v1.69.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /community/modules/compute/schedmd-slurm-gcp-v6-nodeset/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [] 19 | ghpc: 20 | inject_module_id: name 21 | has_to_be_used: true 22 | -------------------------------------------------------------------------------- /community/modules/compute/schedmd-slurm-gcp-v6-partition/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [] 19 | ghpc: 20 | has_to_be_used: true 21 | -------------------------------------------------------------------------------- /community/modules/compute/schedmd-slurm-gcp-v6-partition/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 1.3" 19 | 20 | provider_meta "google" { 21 | module_name = "blueprints/terraform/hpc-toolkit:schedmd-slurm-gcp-v6-partition/v1.69.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /community/modules/container/artifact-registry/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - secretmanager.googleapis.com 20 | - artifactregistry.googleapis.com 21 | - cloudbuild.googleapis.com 22 | -------------------------------------------------------------------------------- /community/modules/container/artifact-registry/outputs.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | output "registry_url" { 16 | description = "The URL of the created artifact registry." 17 | value = "${var.region}-docker.pkg.dev/${var.project_id}/${var.deployment_name}" 18 | } 19 | -------------------------------------------------------------------------------- /community/modules/container/artifact-registry/versions.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | terraform { 16 | required_version = ">= 1.0" 17 | required_providers { 18 | google = { 19 | source = "hashicorp/google" 20 | version = ">= 4.42" 21 | } 22 | random = { 23 | source = "hashicorp/random" 24 | version = "~> 3.0" 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /community/modules/database/bigquery-dataset/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - bigquery.googleapis.com 20 | -------------------------------------------------------------------------------- /community/modules/database/bigquery-dataset/outputs.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | output "dataset_id" { 18 | description = "Name of the dataset that was created." 19 | value = google_bigquery_dataset.pbsb.dataset_id 20 | } 21 | -------------------------------------------------------------------------------- /community/modules/database/bigquery-table/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - bigquery.googleapis.com 20 | -------------------------------------------------------------------------------- /community/modules/database/slurm-cloudsql-federation/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - bigqueryconnection.googleapis.com 20 | - sqladmin.googleapis.com 21 | - servicenetworking.googleapis.com 22 | -------------------------------------------------------------------------------- /community/modules/file-system/DDN-EXAScaler/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | - deploymentmanager.googleapis.com 21 | - iam.googleapis.com 22 | - runtimeconfig.googleapis.com 23 | -------------------------------------------------------------------------------- /community/modules/file-system/Intel-DAOS/README.md: -------------------------------------------------------------------------------- 1 | > **_NOTE:_** Cluster Toolkit is dropping support for the external [Google Cloud DAOS](https://github.com/daos-stack/google-cloud-daos/tree/main) repository. The DAOS example blueprints (`hpc-slurm-daos.yaml` and `pfs-daos.yaml`) have been removed from the Cluster Toolkit. We recommend migrating to the first-party [Parallelstore](../../../../modules/file-system/parallelstore/) module for similar functionality. To help with this transition, see the Parallelstore example blueprints ([pfs-parallelstore.yaml](../../../../examples/pfs-parallelstore.yaml) and [ps-slurm.yaml](../../../../examples/ps-slurm.yaml)). If the external [Google Cloud DAOS](https://github.com/daos-stack/google-cloud-daos/tree/main) repository is necessary, we recommend using the last Cluster Toolkit [v1.41.0](https://github.com/GoogleCloudPlatform/cluster-toolkit/releases/tag/v1.41.0). 2 | -------------------------------------------------------------------------------- /community/modules/file-system/cloud-storage-bucket/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [] 19 | -------------------------------------------------------------------------------- /community/modules/file-system/nfs-server/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | -------------------------------------------------------------------------------- /community/modules/file-system/weka-client/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [] 19 | -------------------------------------------------------------------------------- /community/modules/file-system/weka-client/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2025 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 0.14.0" 19 | } 20 | -------------------------------------------------------------------------------- /community/modules/files/fsi-montecarlo-on-batch/mc_run_reqs.txt: -------------------------------------------------------------------------------- 1 | absl-py 2 | avro 3 | google-auth 4 | google-cloud 5 | google-cloud-batch 6 | google-cloud-pubsub 7 | google-cloud-bigquery 8 | yfinance 9 | PyYAML 10 | -------------------------------------------------------------------------------- /community/modules/files/fsi-montecarlo-on-batch/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [storage.googleapis.com] 19 | -------------------------------------------------------------------------------- /community/modules/internal/slurm-gcp/instance_template/versions.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | 16 | terraform { 17 | required_version = "~> 1.0" 18 | 19 | required_providers { 20 | local = { 21 | source = "hashicorp/local" 22 | version = "~> 2.0" 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /community/modules/management/dependencies-installer/helm_install/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - container.googleapis.com 20 | -------------------------------------------------------------------------------- /community/modules/management/dependencies-installer/helm_install/versions.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | terraform { 16 | required_providers { 17 | helm = { 18 | source = "hashicorp/helm" 19 | version = "~> 2.17" 20 | } 21 | } 22 | 23 | required_version = ">= 1.3" 24 | } 25 | -------------------------------------------------------------------------------- /community/modules/management/dependencies-installer/kubernetes_manifest/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - container.googleapis.com 20 | -------------------------------------------------------------------------------- /community/modules/management/dependencies-installer/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - container.googleapis.com 20 | -------------------------------------------------------------------------------- /community/modules/network/private-service-access/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | - servicenetworking.googleapis.com 21 | -------------------------------------------------------------------------------- /community/modules/project/service-account/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - iam.googleapis.com 20 | -------------------------------------------------------------------------------- /community/modules/project/service-account/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_providers { 19 | } 20 | 21 | required_version = ">= 0.14.0" 22 | } 23 | -------------------------------------------------------------------------------- /community/modules/project/service-enablement/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - serviceusage.googleapis.com 20 | -------------------------------------------------------------------------------- /community/modules/pubsub/bigquery-sub/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - pubsub.googleapis.com 20 | -------------------------------------------------------------------------------- /community/modules/pubsub/bigquery-sub/outputs.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | output "subscription_id" { 18 | description = "Name of the subscription that was created." 19 | value = google_pubsub_subscription.example.name 20 | } 21 | -------------------------------------------------------------------------------- /community/modules/pubsub/topic/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - pubsub.googleapis.com 20 | -------------------------------------------------------------------------------- /community/modules/remote-desktop/chrome-remote-desktop/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [] 19 | -------------------------------------------------------------------------------- /community/modules/remote-desktop/chrome-remote-desktop/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 0.12.31" 19 | } 20 | -------------------------------------------------------------------------------- /community/modules/scheduler/htcondor-access-point/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | - storage.googleapis.com 21 | -------------------------------------------------------------------------------- /community/modules/scheduler/htcondor-central-manager/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | - storage.googleapis.com 21 | -------------------------------------------------------------------------------- /community/modules/scheduler/htcondor-pool-secrets/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - iam.googleapis.com 20 | - secretmanager.googleapis.com 21 | -------------------------------------------------------------------------------- /community/modules/scheduler/htcondor-pool-secrets/templates/fetch-idtoken.ps1.tftpl: -------------------------------------------------------------------------------- 1 | Set-StrictMode -Version latest 2 | $ErrorActionPreference = 'Stop' 3 | 4 | $config_dir = 'C:\Condor\config' 5 | if(!(test-path -PathType container -Path $config_dir)) 6 | { 7 | New-Item -ItemType Directory -Path $config_dir 8 | } 9 | $config_file = "$config_dir\51-ghpc-trust-domain" 10 | 11 | $config_string = @' 12 | # these lines must appear AFTER any "use role:" settings 13 | UID_DOMAIN = ${trust_domain} 14 | TRUST_DOMAIN = ${trust_domain} 15 | '@ 16 | 17 | Set-Content -Path "$config_file" -Value "$config_string" 18 | 19 | # obtain IDTOKEN for authentication by StartD to Central Manager 20 | gcloud secrets versions access latest --secret ${xp_idtoken_secret_id} ` 21 | --out-file C:\condor\tokens.d\condor@${trust_domain} 22 | 23 | if ($LASTEXITCODE -ne 0) 24 | { 25 | throw "Could not download HTCondor IDTOKEN; exiting startup script" 26 | } 27 | -------------------------------------------------------------------------------- /community/modules/scheduler/htcondor-service-accounts/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - iam.googleapis.com 20 | -------------------------------------------------------------------------------- /community/modules/scheduler/htcondor-service-accounts/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 0.13.0" 19 | } 20 | -------------------------------------------------------------------------------- /community/modules/scheduler/htcondor-setup/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | - iam.googleapis.com 21 | - storage.googleapis.com 22 | -------------------------------------------------------------------------------- /community/modules/scheduler/htcondor-setup/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 0.13.0" 19 | } 20 | -------------------------------------------------------------------------------- /community/modules/scheduler/schedmd-slurm-gcp-v6-controller/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | - iam.googleapis.com 21 | - storage.googleapis.com 22 | -------------------------------------------------------------------------------- /community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/cleanup_compute/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 1.3" 19 | 20 | required_providers { 21 | null = { 22 | source = "hashicorp/null" 23 | version = ">= 3.0" 24 | } 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/cleanup_tpu/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2024 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 1.3" 19 | 20 | required_providers { 21 | null = { 22 | source = "hashicorp/null" 23 | version = ">= 3.0" 24 | } 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/slurm_files/etc/cgroup.conf.tpl: -------------------------------------------------------------------------------- 1 | # cgroup.conf 2 | # https://slurm.schedmd.com/cgroup.conf.html 3 | 4 | ConstrainCores=yes 5 | ConstrainRamSpace=yes 6 | ConstrainSwapSpace=no 7 | ConstrainDevices=yes 8 | -------------------------------------------------------------------------------- /community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/slurm_files/files/external_epilog.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright 2024 Google LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | if [[ -x /opt/apps/adm/slurm/slurm_epilog ]]; then 17 | exec /opt/apps/adm/slurm/slurm_epilog 18 | fi 19 | -------------------------------------------------------------------------------- /community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/slurm_files/files/external_prolog.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright 2024 Google LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | if [[ -x /opt/apps/adm/slurm/slurm_prolog ]]; then 17 | exec /opt/apps/adm/slurm/slurm_prolog 18 | fi 19 | -------------------------------------------------------------------------------- /community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/slurm_files/scripts/requirements-dev.txt: -------------------------------------------------------------------------------- 1 | pytest 2 | pytest-mock 3 | pytest_unordered 4 | mock 5 | 6 | types-mock 7 | types-httplib2 8 | types-requests 9 | types-PyYAML 10 | -------------------------------------------------------------------------------- /community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/slurm_files/scripts/requirements.txt: -------------------------------------------------------------------------------- 1 | addict==2.4.0 2 | google-api-core==2.19.0 3 | google-api-python-client==2.93.0 4 | google-auth==2.40.3 5 | google-auth-httplib2==0.1.0 6 | google-cloud-bigquery==3.11.3 7 | google-cloud-core==2.3.3 8 | google-cloud-secret-manager~=2.22 9 | google-cloud-storage==2.10.0 10 | google-cloud-tpu==1.10.0 11 | google-resumable-media==2.5.0 12 | googleapis-common-protos==1.59.1 13 | grpcio==1.60.0 14 | grpcio-status==1.60.0 15 | httplib2==0.22.0 16 | more-executors==2.11.4 17 | pyyaml==6.0.2 18 | requests==2.32.4 19 | -------------------------------------------------------------------------------- /community/modules/scheduler/schedmd-slurm-gcp-v6-login/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [] 19 | ghpc: 20 | inject_module_id: name_prefix 21 | has_to_be_used: true 22 | -------------------------------------------------------------------------------- /community/modules/scheduler/schedmd-slurm-gcp-v6-login/outputs.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | output "login_nodes" { 16 | description = "Slurm login instance definition." 17 | value = [local.login_node] 18 | } 19 | -------------------------------------------------------------------------------- /community/modules/scheduler/schedmd-slurm-gcp-v6-login/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 1.3" 19 | 20 | provider_meta "google" { 21 | module_name = "blueprints/terraform/hpc-toolkit:schedmd-slurm-gcp-v6-login/v1.69.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /community/modules/scheduler/slinky/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - container.googleapis.com 20 | -------------------------------------------------------------------------------- /community/modules/scheduler/slinky/outputs.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | output "slurm_namespace" { 16 | description = "namespace for the slurm chart" 17 | value = var.slurm_namespace 18 | } 19 | 20 | output "slurm_operator_namespace" { 21 | description = "namespace for the slinky operator chart" 22 | value = var.slurm_operator_namespace 23 | } 24 | -------------------------------------------------------------------------------- /community/modules/scheduler/slinky/versions.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | terraform { 16 | required_version = ">= 1.3" 17 | 18 | required_providers { 19 | helm = { 20 | source = "hashicorp/helm" 21 | version = "~> 2.17" 22 | } 23 | google = { 24 | source = "hashicorp/google" 25 | version = ">= 6.16" 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /community/modules/scripts/htcondor-install/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [] 19 | -------------------------------------------------------------------------------- /community/modules/scripts/htcondor-install/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 0.13.0" 19 | } 20 | -------------------------------------------------------------------------------- /community/modules/scripts/ramble-execute/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [] 19 | -------------------------------------------------------------------------------- /community/modules/scripts/ramble-execute/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2023 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 1.0.0" 19 | required_providers { 20 | local = { 21 | source = "hashicorp/local" 22 | version = ">= 2.0.0" 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /community/modules/scripts/ramble-setup/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [] 19 | -------------------------------------------------------------------------------- /community/modules/scripts/spack-execute/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [] 19 | -------------------------------------------------------------------------------- /community/modules/scripts/spack-execute/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2023 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 1.0.0" 19 | required_providers { 20 | local = { 21 | source = "hashicorp/local" 22 | version = ">= 2.0.0" 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /community/modules/scripts/spack-setup/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - storage.googleapis.com 20 | -------------------------------------------------------------------------------- /community/modules/scripts/wait-for-startup/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | -------------------------------------------------------------------------------- /community/modules/scripts/wait-for-startup/outputs.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | -------------------------------------------------------------------------------- /community/modules/scripts/windows-startup-script/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [] 19 | -------------------------------------------------------------------------------- /community/modules/scripts/windows-startup-script/outputs.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | output "windows_startup_ps1" { 18 | description = "A string list of scripts selected by this module" 19 | value = local.startup_ps1 20 | } 21 | -------------------------------------------------------------------------------- /community/modules/scripts/windows-startup-script/templates/setx_http_proxy.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | Copyright 2025 "Google LLC" 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | #> 16 | 17 | #Requires -RunAsAdministrator 18 | 19 | setx http_proxy ${http_proxy} /m 20 | setx https_proxy ${http_proxy} /m 21 | setx no_proxy ${no_proxy} /m 22 | -------------------------------------------------------------------------------- /community/modules/scripts/windows-startup-script/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | provider_meta "google" { 19 | module_name = "blueprints/terraform/hpc-toolkit:windows-startup-script/v1.69.0" 20 | } 21 | 22 | required_version = ">= 0.14.0" 23 | } 24 | -------------------------------------------------------------------------------- /docs/hybrid-slurm-cluster/requirements.txt: -------------------------------------------------------------------------------- 1 | addict~=2.0 2 | google-cloud-pubsub~=2.0 3 | google-api-python-client==2.61.0 4 | httplib2==0.20.4 5 | PyYAML==6.0 6 | urllib3==2.5.0 7 | protobuf==5.29.5 8 | certifi==2024.7.4 9 | setuptools==78.1.1 10 | -------------------------------------------------------------------------------- /docs/tutorials/openfoam/README.md: -------------------------------------------------------------------------------- 1 | # Cluster Toolkit - OpenFOAM Simulation and Visualization 2 | 3 | Cluster Toolkit is an open-source software offered by Google Cloud which makes 4 | it easy for customers to deploy HPC environments on Google Cloud. 5 | [OpenFOAM](https://www.openfoam.com/) is a popular tool for running 6 | computational fluid dynamics (CFD) simulations. This 7 | [demo](https://github.com/GoogleCloudPlatform/scientific-computing-examples/tree/main/apptainer/demos/openfoam) 8 | in the Google Cloud Platform scientific computing examples 9 | [repo](https://github.com/GoogleCloudPlatform/scientific-computing-examples/tree/main) 10 | walks you through the process of running and visualizing an OpenFOAM simulation 11 | using a set of [apptainer](https://apptainer.org/) containers on a Slurm-based 12 | HPC system deployed with the Cluster Toolkit. 13 | -------------------------------------------------------------------------------- /docs/videos/build-your-own-blueprint/README.md: -------------------------------------------------------------------------------- 1 | # Build Your Own Blueprint Video 2 | 3 | The [blueprint in this folder](./batch-high-io.yaml) was produced as part of a 4 | training video on how to build your own blueprint from scratch. Watch the 5 | YouTube video [here](https://youtu.be/Mb7aOmCdKZU). 6 | -------------------------------------------------------------------------------- /examples/gke-a3-megagpu/README.md: -------------------------------------------------------------------------------- 1 | Refer to [Deploy an A3 Mega GKE cluster for ML training](https://cloud.google.com/cluster-toolkit/docs/deploy/deploy-a3-mega-gke-cluster) for instructions. 2 | -------------------------------------------------------------------------------- /examples/gke-a3-megagpu/chs-pvc.yaml.tftpl: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | apiVersion: v1 16 | kind: PersistentVolumeClaim 17 | metadata: 18 | name: ${pvc_name} 19 | spec: 20 | accessModes: 21 | - ${access_mode} 22 | resources: 23 | requests: 24 | storage: ${capacity} 25 | storageClassName: ${storage_class_name} 26 | 27 | -------------------------------------------------------------------------------- /examples/gke-a3-ultragpu/README.md: -------------------------------------------------------------------------------- 1 | Refer to [Create an AI-optimized GKE cluster with default configuration](https://cloud.google.com/ai-hypercomputer/docs/create/gke-ai-hypercompute#use-cluster-toolkit) for instructions on creating the GKE-A3U cluster. 2 | 3 | Refer to [Deploy and run NCCL test with Topology Aware Scheduling (TAS)](https://cloud.google.com/ai-hypercomputer/docs/create/gke-ai-hypercompute#deploy-run-nccl-tas-test) for instructions on running a NCCL test on the GKE-A3U cluster. 4 | -------------------------------------------------------------------------------- /examples/gke-a3-ultragpu/chs-pvc.yaml.tftpl: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | apiVersion: v1 16 | kind: PersistentVolumeClaim 17 | metadata: 18 | name: ${pvc_name} 19 | spec: 20 | accessModes: 21 | - ${access_mode} 22 | resources: 23 | requests: 24 | storage: ${capacity} 25 | storageClassName: ${storage_class_name} 26 | 27 | -------------------------------------------------------------------------------- /examples/gke-a4/README.md: -------------------------------------------------------------------------------- 1 | Refer to [Create an AI-optimized GKE cluster with default configuration](https://cloud.google.com/ai-hypercomputer/docs/create/gke-ai-hypercompute#use-cluster-toolkit) for instructions on creating the GKE-A4 cluster. 2 | 3 | Refer to [Deploy and run NCCL test with Topology Aware Scheduling (TAS)](https://cloud.google.com/ai-hypercomputer/docs/create/gke-ai-hypercompute#deploy-run-nccl-tas-test) for instructions on running a NCCL test on the GKE-A4 cluster. 4 | -------------------------------------------------------------------------------- /examples/gke-a4/chs-pvc.yaml.tftpl: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | apiVersion: v1 16 | kind: PersistentVolumeClaim 17 | metadata: 18 | name: ${pvc_name} 19 | spec: 20 | accessModes: 21 | - ${access_mode} 22 | resources: 23 | requests: 24 | storage: ${capacity} 25 | storageClassName: ${storage_class_name} 26 | 27 | -------------------------------------------------------------------------------- /examples/gke-consumption-options/README.md: -------------------------------------------------------------------------------- 1 | # GKE Consumption Options 2 | 3 | The GKE consumption options folder holds multiple examples using A3 Ultragpu machines, each with details of a GKE consumption option supported on Cluster Toolkit. 4 | -------------------------------------------------------------------------------- /examples/machine-learning/README.md: -------------------------------------------------------------------------------- 1 | # AI / ML Toolkit Blueprints 2 | 3 | The directories below contain solutions for provisioning Slurm clusters using 4 | the latest VM families from Google Cloud 5 | 6 | - [A3 High](a3-highgpu-8g) 7 | - [A3 Mega](a3-megagpu-8g) 8 | - [A3 Ultra](a3-ultragpu-8g) 9 | - [A4](a4-highgpu-8g) 10 | 11 | Further documentation for A3 Ultra and A4 solutions are available at 12 | [Create an AI-optimized Slurm cluster][aihc-slurm]. 13 | 14 | [aihc-slurm]: https://cloud.google.com/ai-hypercomputer/docs/create/create-slurm-cluster 15 | -------------------------------------------------------------------------------- /examples/machine-learning/a3-highgpu-8g/nccl-tests/README.md: -------------------------------------------------------------------------------- 1 | # NCCL benchmark 2 | 3 | Please follow the instructions the [machine-learning README](../README.md) for 4 | provisioning an A3-based Slurm cluster and executing the nccl-tests benchmarks 5 | in these scripts. 6 | -------------------------------------------------------------------------------- /examples/machine-learning/a3-highgpu-8g/nccl-tests/import_pytorch_container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright 2024 "Google LLC" 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # This creates a file named "nvidia+pytorch+21.10-py3.sqsh", which 17 | # uses ~18 GB of disk space. This should be run on a filesystem that 18 | # can be seen by all worker nodes 19 | enroot import docker://nvcr.io#nvidia/pytorch:23.10-py3 20 | -------------------------------------------------------------------------------- /examples/machine-learning/a3-megagpu-8g/nccl-tests/import_pytorch_container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright 2024 "Google LLC" 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # This creates a file named "nvidia+pytorch+21.10-py3.sqsh", which 17 | # uses ~18 GB of disk space. This should be run on a filesystem that 18 | # can be seen by all worker nodes 19 | enroot import docker://nvcr.io#nvidia/pytorch:24.04-py3 20 | -------------------------------------------------------------------------------- /examples/machine-learning/a3-ultragpu-8g/nccl-tests/import_pytorch_container.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright 2024 "Google LLC" 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # This creates a file named "nvidia+pytorch+24.09-py3.sqsh", which 17 | # uses ~18 GB of disk space. This should be run on a filesystem that 18 | # can be seen by all worker nodes 19 | enroot import docker://nvcr.io#nvidia/pytorch:24.09-py3 20 | -------------------------------------------------------------------------------- /examples/science/af3-slurm/adm/af3-htc-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GoogleCloudPlatform/cluster-toolkit/18a9e07a6d572db41127ebaab6a94c46d456acd9/examples/science/af3-slurm/adm/af3-htc-architecture.png -------------------------------------------------------------------------------- /examples/science/af3-slurm/examples/simple_service_launcher/requirements.txt: -------------------------------------------------------------------------------- 1 | google-cloud-storage 2 | pyyaml 3 | -------------------------------------------------------------------------------- /modules/compute/gke-job-template/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [] 19 | -------------------------------------------------------------------------------- /modules/compute/gke-job-template/versions.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | terraform { 16 | required_version = ">= 1.2" 17 | 18 | required_providers { 19 | random = { 20 | source = "hashicorp/random" 21 | version = "~> 3.0" 22 | } 23 | local = { 24 | source = "hashicorp/local" 25 | version = ">= 2.0.0" 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /modules/compute/gke-node-pool/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - container.googleapis.com 20 | ghpc: 21 | inject_module_id: internal_ghpc_module_id 22 | -------------------------------------------------------------------------------- /modules/compute/resource-policy/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/compute/vm-instance/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/file-system/filestore/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - file.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/file-system/gke-persistent-volume/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [] 19 | -------------------------------------------------------------------------------- /modules/file-system/gke-persistent-volume/templates/filestore-pv.yaml.tftpl: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: PersistentVolume 4 | metadata: 5 | name: ${pv_name} 6 | labels: 7 | %{~ for key, val in labels ~} 8 | ${key}: ${val} 9 | %{~ endfor ~} 10 | spec: 11 | storageClassName: "" 12 | capacity: 13 | storage: ${capacity} 14 | accessModes: 15 | - ReadWriteMany 16 | persistentVolumeReclaimPolicy: Retain 17 | volumeMode: Filesystem 18 | csi: 19 | driver: filestore.csi.storage.gke.io 20 | volumeHandle: "modeInstance/${location}/${filestore_name}/${share_name}" 21 | volumeAttributes: 22 | ip: ${ip_address} 23 | volume: ${share_name} 24 | claimRef: 25 | name: ${pvc_name} 26 | namespace: ${namespace} 27 | -------------------------------------------------------------------------------- /modules/file-system/gke-persistent-volume/templates/filestore-pvc.yaml.tftpl: -------------------------------------------------------------------------------- 1 | --- 2 | kind: PersistentVolumeClaim 3 | apiVersion: v1 4 | metadata: 5 | name: ${pvc_name} 6 | namespace: ${namespace} 7 | labels: 8 | %{~ for key, val in labels ~} 9 | ${key}: ${val} 10 | %{~ endfor ~} 11 | spec: 12 | accessModes: 13 | - ReadWriteMany 14 | storageClassName: "" 15 | volumeName: ${pv_name} 16 | resources: 17 | requests: 18 | storage: ${capacity} 19 | -------------------------------------------------------------------------------- /modules/file-system/gke-persistent-volume/templates/gcs-pv.yaml.tftpl: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: PersistentVolume 4 | metadata: 5 | name: ${pv_name} 6 | labels: 7 | %{~ for key, val in labels ~} 8 | ${key}: ${val} 9 | %{~ endfor ~} 10 | spec: 11 | storageClassName: "" 12 | capacity: 13 | storage: ${capacity} 14 | accessModes: 15 | - ReadWriteMany 16 | %{~ if mount_options != null ~} 17 | mountOptions: 18 | %{~ for key in mount_options ~} 19 | - ${key} 20 | %{~ endfor ~} 21 | %{~ endif ~} 22 | csi: 23 | driver: gcsfuse.csi.storage.gke.io 24 | volumeHandle: ${bucket_name} 25 | -------------------------------------------------------------------------------- /modules/file-system/gke-persistent-volume/templates/gcs-pvc.yaml.tftpl: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: PersistentVolumeClaim 4 | metadata: 5 | name: ${pvc_name} 6 | namespace: ${namespace} 7 | labels: 8 | %{~ for key, val in labels ~} 9 | ${key}: ${val} 10 | %{~ endfor ~} 11 | spec: 12 | accessModes: 13 | - ReadWriteMany 14 | storageClassName: "" 15 | volumeName: ${pv_name} 16 | resources: 17 | requests: 18 | storage: ${capacity} 19 | claimRef: 20 | name: ${pvc_name} 21 | namespace: ${namespace} 22 | -------------------------------------------------------------------------------- /modules/file-system/gke-persistent-volume/templates/managed-lustre-pv.yaml.tftpl: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: PersistentVolume 4 | metadata: 5 | name: ${pv_name} 6 | labels: 7 | %{~ for key, val in labels ~} 8 | ${key}: ${val} 9 | %{~ endfor ~} 10 | spec: 11 | storageClassName: "" 12 | capacity: 13 | storage: ${capacity} 14 | accessModes: 15 | - ReadWriteMany 16 | persistentVolumeReclaimPolicy: Retain 17 | volumeMode: Filesystem 18 | claimRef: 19 | namespace: ${namespace} 20 | name: ${pvc_name} 21 | csi: 22 | driver: lustre.csi.storage.gke.io 23 | volumeHandle: "${project}/${location}/${instance_name}/default-pool/default-container" 24 | volumeAttributes: 25 | ip: ${server_ip} 26 | filesystem: ${filesystem_name} 27 | -------------------------------------------------------------------------------- /modules/file-system/gke-persistent-volume/templates/managed-lustre-pvc.yaml.tftpl: -------------------------------------------------------------------------------- 1 | --- 2 | kind: PersistentVolumeClaim 3 | apiVersion: v1 4 | metadata: 5 | name: ${pvc_name} 6 | namespace: ${namespace} 7 | labels: 8 | %{~ for key, val in labels ~} 9 | ${key}: ${val} 10 | %{~ endfor ~} 11 | spec: 12 | accessModes: 13 | - ReadWriteMany 14 | storageClassName: "" 15 | volumeName: ${pv_name} 16 | resources: 17 | requests: 18 | storage: ${capacity} 19 | -------------------------------------------------------------------------------- /modules/file-system/gke-persistent-volume/templates/namespace.yaml.tftpl: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: ${namespace} 6 | -------------------------------------------------------------------------------- /modules/file-system/gke-storage/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [] 19 | -------------------------------------------------------------------------------- /modules/file-system/gke-storage/persistent-volume-claim/hyperdisk-balanced-pvc.yaml.tftpl: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: PersistentVolumeClaim 4 | metadata: 5 | name: ${pvc_name} 6 | namespace: ${namespace} 7 | labels: 8 | %{~ for key, val in labels ~} 9 | ${key}: ${val} 10 | %{~ endfor ~} 11 | spec: 12 | accessModes: 13 | - ${access_mode} 14 | resources: 15 | requests: 16 | storage: ${capacity} 17 | storageClassName: ${storage_class_name} 18 | -------------------------------------------------------------------------------- /modules/file-system/gke-storage/persistent-volume-claim/hyperdisk-extreme-pvc.yaml.tftpl: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: PersistentVolumeClaim 4 | metadata: 5 | name: ${pvc_name} 6 | namespace: ${namespace} 7 | labels: 8 | %{~ for key, val in labels ~} 9 | ${key}: ${val} 10 | %{~ endfor ~} 11 | spec: 12 | accessModes: 13 | - ${access_mode} 14 | resources: 15 | requests: 16 | storage: ${capacity} 17 | storageClassName: ${storage_class_name} 18 | -------------------------------------------------------------------------------- /modules/file-system/gke-storage/persistent-volume-claim/hyperdisk-throughput-pvc.yaml.tftpl: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: PersistentVolumeClaim 4 | metadata: 5 | name: ${pvc_name} 6 | namespace: ${namespace} 7 | labels: 8 | %{~ for key, val in labels ~} 9 | ${key}: ${val} 10 | %{~ endfor ~} 11 | spec: 12 | accessModes: 13 | - ${access_mode} 14 | resources: 15 | requests: 16 | storage: ${capacity} 17 | storageClassName: ${storage_class_name} 18 | -------------------------------------------------------------------------------- /modules/file-system/gke-storage/persistent-volume-claim/namespace.yaml.tftpl: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: Namespace 4 | metadata: 5 | name: ${namespace} 6 | -------------------------------------------------------------------------------- /modules/file-system/gke-storage/persistent-volume-claim/parallelstore-pvc.yaml.tftpl: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: PersistentVolumeClaim 4 | metadata: 5 | name: ${pvc_name} 6 | namespace: ${namespace} 7 | labels: 8 | %{~ for key, val in labels ~} 9 | ${key}: ${val} 10 | %{~ endfor ~} 11 | spec: 12 | accessModes: 13 | - ${access_mode} 14 | resources: 15 | requests: 16 | storage: ${capacity} 17 | storageClassName: ${storage_class_name} 18 | -------------------------------------------------------------------------------- /modules/file-system/gke-storage/storage-class/hyperdisk-balanced-sc.yaml.tftpl: -------------------------------------------------------------------------------- 1 | apiVersion: storage.k8s.io/v1 2 | kind: StorageClass 3 | metadata: 4 | name: ${name} 5 | labels: 6 | %{~ for key, val in labels ~} 7 | ${key}: ${val} 8 | %{~ endfor ~} 9 | provisioner: pd.csi.storage.gke.io 10 | allowVolumeExpansion: true 11 | parameters: 12 | type: hyperdisk-balanced 13 | provisioned-throughput-on-create: "250Mi" 14 | provisioned-iops-on-create: "7000" 15 | volumeBindingMode: ${volume_binding_mode} 16 | reclaimPolicy: ${reclaim_policy} 17 | %{~ if topology_zones != null ~} 18 | allowedTopologies: 19 | - matchLabelExpressions: 20 | - key: topology.gke.io/zone 21 | values: 22 | %{~ for z in topology_zones ~} 23 | - ${z} 24 | %{~ endfor ~} 25 | %{~ endif ~} 26 | -------------------------------------------------------------------------------- /modules/file-system/gke-storage/storage-class/hyperdisk-extreme-sc.yaml.tftpl: -------------------------------------------------------------------------------- 1 | apiVersion: storage.k8s.io/v1 2 | kind: StorageClass 3 | metadata: 4 | name: ${name} 5 | labels: 6 | %{~ for key, val in labels ~} 7 | ${key}: ${val} 8 | provisioner: pd.csi.storage.gke.io 9 | allowVolumeExpansion: true 10 | parameters: 11 | %{~ endfor ~} 12 | type: hyperdisk-extreme 13 | provisioned-iops-on-create: "50000" 14 | volumeBindingMode: ${volume_binding_mode} 15 | reclaimPolicy: ${reclaim_policy} 16 | %{~ if topology_zones != null ~} 17 | allowedTopologies: 18 | - matchLabelExpressions: 19 | - key: topology.gke.io/zone 20 | values: 21 | %{~ for z in topology_zones ~} 22 | - ${z} 23 | %{~ endfor ~} 24 | %{~ endif ~} 25 | -------------------------------------------------------------------------------- /modules/file-system/gke-storage/storage-class/hyperdisk-throughput-sc.yaml.tftpl: -------------------------------------------------------------------------------- 1 | apiVersion: storage.k8s.io/v1 2 | kind: StorageClass 3 | metadata: 4 | name: ${name} 5 | labels: 6 | %{~ for key, val in labels ~} 7 | ${key}: ${val} 8 | %{~ endfor ~} 9 | provisioner: pd.csi.storage.gke.io 10 | allowVolumeExpansion: true 11 | parameters: 12 | type: hyperdisk-throughput 13 | provisioned-throughput-on-create: "250Mi" 14 | volumeBindingMode: ${volume_binding_mode} 15 | reclaimPolicy: ${reclaim_policy} 16 | %{~ if topology_zones != null ~} 17 | allowedTopologies: 18 | - matchLabelExpressions: 19 | - key: topology.gke.io/zone 20 | values: 21 | %{~ for z in topology_zones ~} 22 | - ${z} 23 | %{~ endfor ~} 24 | %{~ endif ~} 25 | -------------------------------------------------------------------------------- /modules/file-system/gke-storage/storage-class/parallelstore-sc.yaml.tftpl: -------------------------------------------------------------------------------- 1 | apiVersion: storage.k8s.io/v1 2 | kind: StorageClass 3 | metadata: 4 | name: ${name} 5 | labels: 6 | %{~ for key, val in labels ~} 7 | ${key}: ${val} 8 | %{~ endfor ~} 9 | provisioner: parallelstore.csi.storage.gke.io 10 | parameters: 11 | volumeBindingMode: ${volume_binding_mode} 12 | reclaimPolicy: ${reclaim_policy} 13 | %{~ if topology_zones != null ~} 14 | allowedTopologies: 15 | - matchLabelExpressions: 16 | - key: topology.gke.io/zone 17 | values: 18 | %{~ for z in topology_zones ~} 19 | - ${z} 20 | %{~ endfor ~} 21 | %{~ endif ~} 22 | -------------------------------------------------------------------------------- /modules/file-system/gke-storage/versions.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | terraform { 16 | required_version = ">= 1.5" 17 | 18 | provider_meta "google" { 19 | module_name = "blueprints/terraform/hpc-toolkit:gke-storage/v1.69.0" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /modules/file-system/managed-lustre/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - lustre.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/file-system/parallelstore/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - parallelstore.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/file-system/pre-existing-network-storage/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: [] 19 | -------------------------------------------------------------------------------- /modules/file-system/pre-existing-network-storage/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 0.14.0" 19 | } 20 | -------------------------------------------------------------------------------- /modules/internal/instance_validations/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Requirements 3 | 4 | | Name | Version | 5 | |------|---------| 6 | | [terraform](#requirement\_terraform) | >= 0.15.0 | 7 | 8 | ## Providers 9 | 10 | No providers. 11 | 12 | ## Modules 13 | 14 | No modules. 15 | 16 | ## Resources 17 | 18 | No resources. 19 | 20 | ## Inputs 21 | 22 | | Name | Description | Type | Default | Required | 23 | |------|-------------|------|---------|:--------:| 24 | | [disk\_type](#input\_disk\_type) | The disk type to validate. | `string` | n/a | yes | 25 | | [machine\_type](#input\_machine\_type) | The machine type to validate. | `string` | n/a | yes | 26 | 27 | ## Outputs 28 | 29 | No outputs. 30 | 31 | -------------------------------------------------------------------------------- /modules/internal/instance_validations/variables.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | variable "machine_type" { 16 | type = string 17 | description = "The machine type to validate." 18 | } 19 | 20 | variable "disk_type" { 21 | type = string 22 | description = "The disk type to validate." 23 | } 24 | -------------------------------------------------------------------------------- /modules/internal/instance_validations/versions.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | terraform { 16 | required_version = ">= 0.15.0" 17 | } 18 | -------------------------------------------------------------------------------- /modules/internal/network-attachment/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/internal/vpc_peering/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/management/kubectl-apply/helm_install/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - container.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/management/kubectl-apply/helm_install/versions.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2025 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | terraform { 16 | required_providers { 17 | helm = { 18 | source = "hashicorp/helm" 19 | version = "~> 2.17" 20 | } 21 | } 22 | 23 | required_version = ">= 1.3" 24 | } 25 | -------------------------------------------------------------------------------- /modules/management/kubectl-apply/kubectl/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - container.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/management/kubectl-apply/kubectl/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2024 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_providers { 19 | kubectl = { 20 | source = "gavinbunney/kubectl" 21 | version = ">= 1.7.0" 22 | } 23 | } 24 | 25 | required_version = ">= 1.3" 26 | } 27 | -------------------------------------------------------------------------------- /modules/management/kubectl-apply/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - container.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/monitoring/dashboard/dashboards/Empty.json.tpl: -------------------------------------------------------------------------------- 1 | { 2 | "displayName": "${title}: ${deployment_name}", 3 | "gridLayout": { 4 | "columns": 2, 5 | "widgets": [ 6 | { 7 | "text": { 8 | "content": "Metrics from the ${deployment_name} deployment of the Cluster Toolkit.", 9 | "format": "MARKDOWN" 10 | }, 11 | "title": "${title}" 12 | }%{ for widget in widgets ~}, 13 | ${widget} 14 | %{endfor ~} 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /modules/monitoring/dashboard/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - stackdriver.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/network/firewall-rules/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/network/gpu-rdma-vpc/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/network/gpu-rdma-vpc/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 0.15.0" 19 | } 20 | -------------------------------------------------------------------------------- /modules/network/multivpc/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/network/multivpc/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2024 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 1.4.0" 19 | } 20 | -------------------------------------------------------------------------------- /modules/network/pre-existing-subnetwork/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | ghpc: 21 | has_to_be_used: true 22 | -------------------------------------------------------------------------------- /modules/network/pre-existing-vpc/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/network/vpc/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/network/vpc/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_version = ">= 0.15.0" 19 | } 20 | -------------------------------------------------------------------------------- /modules/packer/custom-image/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | - logging.googleapis.com 21 | - storage.googleapis.com 22 | -------------------------------------------------------------------------------- /modules/packer/custom-image/versions.pkr.hcl: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | packer { 16 | required_version = ">= 1.7.9, < 2.0.0" 17 | 18 | # packer plugin 1.0.16 and above includes HPC VM Image 19 | required_plugins { 20 | googlecompute = { 21 | version = "~> 1.1.0" 22 | source = "github.com/hashicorp/googlecompute" 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /modules/scheduler/batch-job-template/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - batch.googleapis.com 20 | - compute.googleapis.com 21 | ghpc: 22 | inject_module_id: job_id 23 | -------------------------------------------------------------------------------- /modules/scheduler/batch-job-template/templates/batch-submit.sh.tftpl: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e -o pipefail 3 | GCLOUD_MAJOR_VERSION=$(gcloud --version | head -n 1 | awk '{print $NF}' | cut -f1 --delimiter=.) 4 | if [ $((GCLOUD_MAJOR_VERSION >= 461)) ]; then 5 | gcloud batch jobs submit ${submit_job_id} --project=${project} --location=${location} --config=${config} 6 | echo "batch job ${submit_job_id} successfully submitted" 7 | else 8 | echo "gcloud must be updated to version 461.0.0 or later." 9 | exit 1 10 | fi 11 | -------------------------------------------------------------------------------- /modules/scheduler/batch-login-node/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - batch.googleapis.com 20 | - compute.googleapis.com 21 | - storage.googleapis.com 22 | -------------------------------------------------------------------------------- /modules/scheduler/gke-cluster/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - container.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/scheduler/gke-cluster/templates/gke-network-paramset.yaml.tftpl: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: networking.gke.io/v1 3 | kind: GKENetworkParamSet 4 | metadata: 5 | name: ${name} 6 | spec: 7 | vpc: ${network_name} 8 | vpcSubnet: ${subnetwork_name} 9 | deviceMode: ${device_mode} 10 | -------------------------------------------------------------------------------- /modules/scheduler/gke-cluster/templates/network-object.yaml.tftpl: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: networking.gke.io/v1 3 | kind: Network 4 | metadata: 5 | name: ${name} 6 | spec: 7 | parametersRef: 8 | group: networking.gke.io 9 | kind: GKENetworkParamSet 10 | name: ${name} 11 | type: Device 12 | -------------------------------------------------------------------------------- /modules/scheduler/pre-existing-gke-cluster/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - container.googleapis.com 20 | -------------------------------------------------------------------------------- /modules/scheduler/pre-existing-gke-cluster/templates/gke-network-paramset.yaml.tftpl: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: networking.gke.io/v1 3 | kind: GKENetworkParamSet 4 | metadata: 5 | name: ${name} 6 | spec: 7 | vpc: ${network_name} 8 | vpcSubnet: ${subnetwork_name} 9 | deviceMode: ${device_mode} 10 | -------------------------------------------------------------------------------- /modules/scheduler/pre-existing-gke-cluster/templates/network-object.yaml.tftpl: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: networking.gke.io/v1 3 | kind: Network 4 | metadata: 5 | name: ${name} 6 | spec: 7 | parametersRef: 8 | group: networking.gke.io 9 | kind: GKENetworkParamSet 10 | name: ${name} 11 | type: Device 12 | -------------------------------------------------------------------------------- /modules/scripts/startup-script/files/setup-ssh-keys.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright 2023 Google LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | if [ ! -d ~/.ssh/ ]; then 17 | source /usr/local/ghpc-venv/bin/activate 18 | ansible-playbook /usr/local/ghpc/setup-ssh-keys.yml 19 | fi 20 | -------------------------------------------------------------------------------- /modules/scripts/startup-script/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - storage.googleapis.com 20 | -------------------------------------------------------------------------------- /pkg/config/README.md: -------------------------------------------------------------------------------- 1 | # config package 2 | 3 | The config package manages the import, validation and conversion of the user 4 | provided YAML config. 5 | -------------------------------------------------------------------------------- /pkg/config/license.go: -------------------------------------------------------------------------------- 1 | package config 2 | 3 | // YamlLicense is the license header for generated YAML files. 4 | const YamlLicense string = `# Copyright 2023 Google LLC 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | ` 18 | -------------------------------------------------------------------------------- /pkg/deploymentio/README.md: -------------------------------------------------------------------------------- 1 | # deploymentio package 2 | 3 | The deploymentio package manages copying files and directories to and from the 4 | deployment folder. 5 | -------------------------------------------------------------------------------- /pkg/modulereader/README.md: -------------------------------------------------------------------------------- 1 | # modulereader package 2 | 3 | The resource reader (modulereader) package reads in modules from different 4 | sources and provides information about them to the blueprint engine. 5 | -------------------------------------------------------------------------------- /pkg/modulereader/modules/imaginarium/zebra/main.pkr.hcl: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Google LLC 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | module "test_module" { 16 | source = "testSource" 17 | } 18 | data "test_data" "test_data_name" { 19 | name = "test_data_name" 20 | } 21 | -------------------------------------------------------------------------------- /pkg/modulereader/modules/imaginarium/zebra/variables.pkr.hcl: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Google LLC 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | variable "test_variable" { 16 | description = "This is just a test" 17 | type = string 18 | } 19 | -------------------------------------------------------------------------------- /pkg/modulereader/modules/test_role/test_module/main.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | resource "google_storage_bucket" "test_data_name" { 18 | name = var.test_variable 19 | location = "US" 20 | } 21 | -------------------------------------------------------------------------------- /pkg/modulereader/modules/test_role/test_module/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | --- 16 | 17 | spec: 18 | requirements: 19 | services: 20 | - room.service.vip 21 | - protection.service.GCPD 22 | ghpc: 23 | inject_module_id: "test_variable" 24 | -------------------------------------------------------------------------------- /pkg/modulereader/modules/test_role/test_module/outputs.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | output "test_output" { 18 | description = "This is just a test" 19 | value = "test_value" 20 | } 21 | -------------------------------------------------------------------------------- /pkg/modulereader/modules/test_role/test_module/variables.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | variable "test_variable" { 18 | description = "This is just a test" 19 | type = string 20 | } 21 | -------------------------------------------------------------------------------- /pkg/modulereader/modules/test_role/test_module/versions.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2022 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | terraform { 18 | required_providers { 19 | google = { 20 | source = "hashicorp/google" 21 | version = ">= 3.83" 22 | } 23 | } 24 | required_version = ">= 0.14.0" 25 | } 26 | -------------------------------------------------------------------------------- /pkg/modulewriter/README.md: -------------------------------------------------------------------------------- 1 | # modulewriter package 2 | 3 | The resource writer (modulewriter) package writes various kinds of modules to 4 | the deployment directory and ties them together with top-level deployment files, 5 | for example the top level `main.tf` file for terraform modules. 6 | -------------------------------------------------------------------------------- /pkg/sourcereader/modules/network/vpc/main.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | terraform { 16 | required_version = ">= 0.14.0" 17 | } 18 | 19 | locals { 20 | name = "hello_${var.test_variable}" 21 | } 22 | -------------------------------------------------------------------------------- /pkg/sourcereader/modules/network/vpc/output.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | output "test_output" { 16 | description = "This is just a test" 17 | value = local.name 18 | } 19 | -------------------------------------------------------------------------------- /pkg/sourcereader/modules/network/vpc/variables.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | variable "test_variable" { 16 | description = "This is just a test" 17 | type = string 18 | } 19 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright 2023 Google LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | -------------------------------------------------------------------------------- /tools/cloud-build/README.md: -------------------------------------------------------------------------------- 1 | # Cloud Build Tools 2 | 3 | ## Contents 4 | 5 | * `daily-tests`: The daily-tests directory contains cloud build configs and 6 | support files for running the daily test suite 7 | * `dependency-checks`: Verifies the `gcluster` build in limited dependency 8 | environments. 9 | * `ansible.cfg`: Ansible config used to set common ansible setting for running 10 | the test suite. 11 | * `hpc-toolkit-pr-validation.yaml`: Cloud build config for the PR validation 12 | tests. The PR validation run `make tests` and validates against all 13 | pre-commits on all files. 14 | * `pr-ofe.yaml`: Cloud build config for sanity test installing the OFE virtual environment. 15 | * `project-cleanup.yaml`: Cloud build config that performs a regular cleanup of 16 | resources in the test project. 17 | * `provision`: Terraform module that sets up CloudBuild triggers and schedule. 18 | -------------------------------------------------------------------------------- /tools/cloud-build/ansible.cfg: -------------------------------------------------------------------------------- 1 | [defaults] 2 | stdout_callback=debug 3 | stderr_callback=debug 4 | remote_tmp=/tmp/ansible 5 | -------------------------------------------------------------------------------- /tools/cloud-build/babysit/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | -------------------------------------------------------------------------------- /tools/cloud-build/daily-tests/ansible_playbooks/test-validation/test-enroot.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2024 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | --- 16 | - name: Test enroot/pyxis functionality 17 | ansible.builtin.shell: srun --container-image=alpine grep PRETTY /etc/os-release | grep -h "^PRETTY_NAME=\"Alpine Linux" 18 | changed_when: false 19 | -------------------------------------------------------------------------------- /tools/cloud-build/daily-tests/ansible_playbooks/test-validation/test-lustre-vm.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | --- 16 | - name: Ensure a file exists for each OS type 17 | with_items: "{{ custom_vars.vm_os_types }}" 18 | ansible.builtin.shell: | 19 | test $(cat {{ custom_vars.output_dir }}/{{ item }}.txt) == '{{ item }}' 20 | args: 21 | executable: /bin/bash 22 | -------------------------------------------------------------------------------- /tools/cloud-build/daily-tests/ansible_playbooks/test-validation/test-nvidia-smi.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2025 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | --- 16 | - name: Run nvidia-smi command 17 | command: nvidia-smi 18 | register: nvidia_smi_result 19 | failed_when: nvidia_smi_result.rc != 0 20 | 21 | - name: Print nvidia-smi output 22 | debug: 23 | var: nvidia_smi_result.stdout_lines 24 | -------------------------------------------------------------------------------- /tools/cloud-build/daily-tests/tests/hello-world-vars.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # The hello world integration test exists to demonstrate the test interaction between test files 16 | --- 17 | test_name: hello-world 18 | top_level_var: "top level var" 19 | post_deploy_tests: [test-validation/test-hello-world.yml] 20 | custom_vars: 21 | foo: "foo var" 22 | bar: "bar var" 23 | -------------------------------------------------------------------------------- /tools/cloud-build/daily-tests/tests/ofe-deployment.yml: -------------------------------------------------------------------------------- 1 | # Copyright 2022 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | --- 16 | test_name: ofe-deployment 17 | deployment_name: ofe-deployment-{{ build }} 18 | zone: us-central1-c 19 | post_deploy_tests: [test-validation/test-ofe-deployment.yml] 20 | workspace: /workspace 21 | -------------------------------------------------------------------------------- /tools/cloud-build/provision/list-tests.tf: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright 2023 Google LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | data "external" "list_tests_midnight" { 17 | program = ["./list_tests.py", "30", "300"] # 00:30 - 05:00 18 | } 19 | -------------------------------------------------------------------------------- /tools/cloud-build/provision/main.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | terraform { 16 | backend "gcs" { 17 | prefix = "dev-infra-tf/state" 18 | } 19 | } 20 | 21 | locals { 22 | ref_main = "refs/heads/main" 23 | ref_develop = "refs/heads/develop" 24 | notify_chat_tag = "notify_chat_on_failure" 25 | } 26 | -------------------------------------------------------------------------------- /tools/cloud-build/provision/providers.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2023 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | provider "google" { 18 | project = var.project_id 19 | zone = var.zone 20 | region = var.region 21 | } 22 | -------------------------------------------------------------------------------- /tools/cloud-build/provision/trigger-schedule/versions.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | terraform { 16 | required_version = ">= 0.13" 17 | 18 | required_providers { 19 | google = { 20 | source = "hashicorp/google" 21 | version = "~> 5.0" 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /tools/cloud-build/provision/versions.tf: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Google LLC 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | terraform { 16 | required_version = ">= 0.13" 17 | 18 | required_providers { 19 | google = { 20 | source = "hashicorp/google" 21 | version = "~> 5.0" 22 | } 23 | external = { 24 | source = "hashicorp/external" 25 | version = "~> 2.3.0" 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /tools/cloud-build/requirements.txt: -------------------------------------------------------------------------------- 1 | pre-commit 2 | ansible 3 | pyyaml 4 | google-cloud-build 5 | argparse 6 | -------------------------------------------------------------------------------- /tools/cloud-workstations/200_configure-hpc-toolkit.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright 2023 Google LLC 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | # The docker script moves this to /etc/workstation-startup.d to run 17 | # the hpc toolkit configuration when the workstation is brought up for 18 | # the first time. 19 | runuser user /usr/local/bin/configure-hpc-toolkit.sh & 20 | -------------------------------------------------------------------------------- /tools/cloud-workstations/code_oss_requirements.txt: -------------------------------------------------------------------------------- 1 | # Relevant extensions list for Cluster Toolkit for code-oss on cloud workstations 2 | 3 | golang.go 4 | hashicorp.terraform 5 | ms-python.python 6 | ms-toolsai.jupyter 7 | ms-toolsai.jupyter-keymap 8 | ms-toolsai.jupyter-renderers 9 | ms-toolsai.vscode-jupyter-cell-tags 10 | ms-toolsai.vscode-jupyter-slideshow 11 | redhat.vscode-yaml 12 | -------------------------------------------------------------------------------- /tools/validate_configs/golden_copies/configs/files/connect_mode.txt: -------------------------------------------------------------------------------- 1 | PRIVATE_SERVICE_ACCESS -------------------------------------------------------------------------------- /tools/validate_configs/golden_copies/configs/files/local_mount.txt: -------------------------------------------------------------------------------- 1 | /home -------------------------------------------------------------------------------- /tools/validate_configs/golden_copies/expectations/igc_pkr/.ghpc/artifacts/DO_NOT_MODIFY_THIS_DIRECTORY: -------------------------------------------------------------------------------- 1 | Files in this directory are managed by gcluster. Do not modify them manually! 2 | -------------------------------------------------------------------------------- /tools/validate_configs/golden_copies/expectations/igc_pkr/one/image/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | - logging.googleapis.com 21 | - storage.googleapis.com 22 | -------------------------------------------------------------------------------- /tools/validate_configs/golden_copies/expectations/igc_tf/.ghpc/artifacts/DO_NOT_MODIFY_THIS_DIRECTORY: -------------------------------------------------------------------------------- 1 | Files in this directory are managed by gcluster. Do not modify them manually! 2 | -------------------------------------------------------------------------------- /tools/validate_configs/golden_copies/expectations/igc_tf/.ghpc/staged/connect_mode.txt_0a3df07f53: -------------------------------------------------------------------------------- 1 | PRIVATE_SERVICE_ACCESS -------------------------------------------------------------------------------- /tools/validate_configs/golden_copies/expectations/igc_tf/.ghpc/staged/local_mount.txt_76c024cd89: -------------------------------------------------------------------------------- 1 | /home -------------------------------------------------------------------------------- /tools/validate_configs/golden_copies/expectations/igc_tf/one/providers.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2023 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | provider "google" { 18 | project = var.project_id 19 | region = var.region 20 | zone = var.zone 21 | } 22 | 23 | provider "google-beta" { 24 | project = var.project_id 25 | region = var.region 26 | zone = var.zone 27 | } 28 | -------------------------------------------------------------------------------- /tools/validate_configs/golden_copies/expectations/igc_tf/zero/providers.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2023 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | provider "google" { 18 | project = var.project_id 19 | region = var.region 20 | zone = var.zone 21 | } 22 | 23 | provider "google-beta" { 24 | project = var.project_id 25 | region = var.region 26 | zone = var.zone 27 | } 28 | -------------------------------------------------------------------------------- /tools/validate_configs/golden_copies/expectations/merge_flatten/.ghpc/artifacts/DO_NOT_MODIFY_THIS_DIRECTORY: -------------------------------------------------------------------------------- 1 | Files in this directory are managed by gcluster. Do not modify them manually! 2 | -------------------------------------------------------------------------------- /tools/validate_configs/golden_copies/expectations/merge_flatten/instructions.txt: -------------------------------------------------------------------------------- 1 | Advanced Deployment Instructions 2 | ================================ 3 | 4 | Terraform group 'zero' was successfully created in directory golden_copy_deployment/zero 5 | To deploy, run the following commands: 6 | 7 | terraform -chdir=golden_copy_deployment/zero init 8 | terraform -chdir=golden_copy_deployment/zero validate 9 | terraform -chdir=golden_copy_deployment/zero apply 10 | 11 | Destroying infrastructure when no longer needed 12 | =============================================== 13 | 14 | Automated 15 | --------- 16 | 17 | gcluster destroy golden_copy_deployment 18 | 19 | Advanced / Manual 20 | ----------------- 21 | Infrastructure should be destroyed in reverse order of creation: 22 | 23 | terraform -chdir=golden_copy_deployment/zero destroy 24 | -------------------------------------------------------------------------------- /tools/validate_configs/golden_copies/expectations/text_escape/.ghpc/artifacts/DO_NOT_MODIFY_THIS_DIRECTORY: -------------------------------------------------------------------------------- 1 | Files in this directory are managed by gcluster. Do not modify them manually! 2 | -------------------------------------------------------------------------------- /tools/validate_configs/golden_copies/expectations/text_escape/zero/lime/metadata.yaml: -------------------------------------------------------------------------------- 1 | # Copyright 2023 "Google LLC" 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | --- 15 | 16 | spec: 17 | requirements: 18 | services: 19 | - compute.googleapis.com 20 | - logging.googleapis.com 21 | - storage.googleapis.com 22 | -------------------------------------------------------------------------------- /tools/validate_configs/golden_copies/expectations/versioned_blueprint/.ghpc/artifacts/DO_NOT_MODIFY_THIS_DIRECTORY: -------------------------------------------------------------------------------- 1 | Files in this directory are managed by gcluster. Do not modify them manually! 2 | -------------------------------------------------------------------------------- /tools/validate_configs/golden_copies/expectations/versioned_blueprint/instructions.txt: -------------------------------------------------------------------------------- 1 | Advanced Deployment Instructions 2 | ================================ 3 | 4 | Terraform group 'primary' was successfully created in directory golden_copy_deployment/primary 5 | To deploy, run the following commands: 6 | 7 | terraform -chdir=golden_copy_deployment/primary init 8 | terraform -chdir=golden_copy_deployment/primary validate 9 | terraform -chdir=golden_copy_deployment/primary apply 10 | 11 | Destroying infrastructure when no longer needed 12 | =============================================== 13 | 14 | Automated 15 | --------- 16 | 17 | gcluster destroy golden_copy_deployment 18 | 19 | Advanced / Manual 20 | ----------------- 21 | Infrastructure should be destroyed in reverse order of creation: 22 | 23 | terraform -chdir=golden_copy_deployment/primary destroy 24 | -------------------------------------------------------------------------------- /tools/validate_configs/golden_copies/expectations/versioned_blueprint/primary/outputs.tf: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2023 Google LLC 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | output "instructions_hpc_dashboard" { 18 | description = "Generated output from module 'hpc_dashboard'" 19 | value = module.hpc_dashboard.instructions 20 | } 21 | --------------------------------------------------------------------------------