squidient 3.4.4__tar.gz → 3.4.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {squidient-3.4.4 → squidient-3.4.5}/PKG-INFO +1 -1
- {squidient-3.4.4 → squidient-3.4.5}/pyproject.toml +1 -1
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/builds/builds.json +5 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/configurations/systems.json +57 -0
- squidient-3.4.5/src/squidient/data/terraform/aws-ec2-t3.small-x6/t3.small/.gitignore +2 -0
- squidient-3.4.5/src/squidient/data/terraform/aws-ec2-t3.small-x6/t3.small/cloud-init-slurm-fedora.sh +321 -0
- squidient-3.4.5/src/squidient/data/terraform/aws-ec2-t3.small-x6/t3.small/t3.small.tf +170 -0
- squidient-3.4.5/src/squidient/data/terraform/aws-ec2-t3.small-x6/t3.small/terraform.tfvars +2 -0
- {squidient-3.4.4 → squidient-3.4.5}/.gitignore +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/LICENSE.txt +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/README.md +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/__init__.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/builds/benchmark_build_execution.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/builds/benchmark_build_orchestrator.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/builds/build_definition.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/builds/build_execution.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/builds/build_orchestrator.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/builds/build_presets.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/cli/__init__.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/cli/__main__.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/cli/main.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/cli/monitoring.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/cli/staging.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/cli/update.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/code_coverage/code_coverage.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/code_coverage/gcovr_code_coverage.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/code_coverage/intel_code_coverage.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compare/compare.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compare/compare_with_diff_table.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compare/methods/absolute.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compare/methods/close.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compare/methods/diff.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compare/methods/l1_norm.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compare/methods/l1_relative.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compare/methods/l2_norm.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compare/methods/l2_relative.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compare/methods/linf_norm.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compare/methods/linf_relative.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compare/methods/power.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compare/methods/relative.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compare/methods/scalar_tolerance.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compare/methods/tolerance.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compare/methods/vector_tolerance.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/compilation/cmake_options.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/configuration/__init__.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/configuration/code_coverage.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/configuration/generator.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/configuration/prompts.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/configure.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/connection/job.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/connection/ssh.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/connection/ssh_config_checker.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/.squidient-initialized +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/alya-config/cmake-alamak.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/alya-config/cmake-chemint.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/alya-config/cmake-clang.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/alya-config/cmake-commdom.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/alya-config/cmake-gnu.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/alya-config/cmake-intel.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/alya-config/cmake-mumps.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/alya-config/cmake-nvhpc.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/alya-config/cmake-talp.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/benchmarks/benchmarks.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/builds/cc.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/builds/defaults.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/builds/predefined-old.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/builds/predefined.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/configurations/projects.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/configurations/tests.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/email/report.html +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/icons/big.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/icons/small.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/index.html +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/terraform/.gitignore +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/terraform/aws-ec2-t3.small/.gitignore +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/cloud-init-slurm-fedora.sh +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/t3.small.tf +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/terraform/aws-ec2-t3.small/t3.small/terraform.tfvars +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/.gitignore +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/cloud-init-slurm-fedora.sh +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/replace-var.sh +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/t3.small.tf +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/terraform/aws-ec2-t3.small-x2/t3.small/terraform.tfvars +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/.gitignore +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/cloud-init-slurm-fedora.sh +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/t3.small.tf +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/terraform/aws-ec2-t3.small-x3/t3.small/terraform.tfvars +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/version/version.json +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/btest.html +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/cc-gcovr.html +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/cc-intel.html +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/files.html +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/canceled.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/created.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/failed.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/failed_black.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/failed_green.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/file_cloud.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/file_config.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/file_ko.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/file_ok.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/skipped.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/squidient_logo.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/success.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/success_black.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/timeout.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/tolerance.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/warning.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/warning_black.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/png/warning_green.png +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/svg/canceled.svg +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/svg/created.svg +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/svg/failed.svg +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/svg/failed_black.svg +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/svg/failed_green.svg +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/svg/manual.svg +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/svg/running.svg +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/svg/skipped.svg +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/svg/success.svg +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/svg/success_black.svg +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/svg/warning.svg +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/svg/warning_black.svg +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/img/svg/warning_green.svg +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/index.html +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/jquery.dynatable.css +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/jquery.dynatable.js +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/monitoring.html +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/monitoring_build.html +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/monitoring_test.html +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/perf.html +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/staging_build.html +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/staging_test.html +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/test.html +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/testsuite.css +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/data/web/testsuite.js +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/definitions.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/deployment/initialization.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/deployment/module_generator.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/exceptions.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/monitoring/build_phase.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/monitoring/full_workflow.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/monitoring/monitoring.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/monitoring/monitoring_db.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/monitoring/notification_failures.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/monitoring/test_phase.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/reports/__init__.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/reports/cases/__init__.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/reports/cases/base.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/reports/cases/case.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/reports/cases/detailed.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/reports/cases/full.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/reports/monitoring/__init__.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/reports/monitoring/report.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/reports/report.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/staging/build_phase.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/staging/execution_warning.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/staging/full_workflow.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/staging/report_cleaner.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/staging/report_transfer.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/staging/staging.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/staging/test_phase.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/staging/test_relauncher.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/systems/partition.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/systems/platform.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/systems/qos.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/systems/queue_tester.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/systems/reservation.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/systems/system.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/systems/system_manager.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/terraform/terraform.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/testing/benchmarks/__init__.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/testing/benchmarks/failure_notifier.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/testing/benchmarks/instance.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/testing/benchmarks/test_case.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/testing/benchmarks/test_orchestrator.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/testing/cases/__init__.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/testing/cases/instance.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/testing/cases/instance_merger.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/testing/cases/test_case.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/testing/test_orchestrator.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/timers/__init__.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/timers/timer.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/utils/arguments.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/utils/gitlab.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/utils/lock.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/utils/log.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/utils/message.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/utils/package.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/utils/utils.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/utils/watchdog.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/version_control/__init__.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/version_control/git_repository.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/workflows/__init__.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/workflows/base.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/workflows/code_coverage.py +0 -0
- {squidient-3.4.4 → squidient-3.4.5}/src/squidient/workflows/locks.py +0 -0
|
@@ -555,6 +555,11 @@
|
|
|
555
555
|
"platform": "t3.small",
|
|
556
556
|
"system": "aws-ec2-t3.small-x2"
|
|
557
557
|
},
|
|
558
|
+
"cmake-aws-ec2-t3.small-x6-gnu-14.x.x-i4": {
|
|
559
|
+
"from": "cmake-aws-ec2-t3.small-gnu-14.x.x-i4",
|
|
560
|
+
"platform": "t3.small",
|
|
561
|
+
"system": "aws-ec2-t3.small-x6"
|
|
562
|
+
},
|
|
558
563
|
"cmake-grace-gnu-14.2.0-i4": {
|
|
559
564
|
"codeCoverage": false,
|
|
560
565
|
"compiler": "gnu",
|
|
@@ -282,6 +282,63 @@
|
|
|
282
282
|
}
|
|
283
283
|
}
|
|
284
284
|
},
|
|
285
|
+
"aws-ec2-t3.small-x6": {
|
|
286
|
+
"host": "t3.small",
|
|
287
|
+
"path": "/shared/fedora/squidient",
|
|
288
|
+
"user": "fedora",
|
|
289
|
+
"project": "",
|
|
290
|
+
"wait_cloud_init": "t3.small",
|
|
291
|
+
"platforms": {
|
|
292
|
+
"t3.small": {
|
|
293
|
+
"terraform": {
|
|
294
|
+
"enable": true,
|
|
295
|
+
"sshKeyName": "t3.small"
|
|
296
|
+
},
|
|
297
|
+
"account": "",
|
|
298
|
+
"architecture": {
|
|
299
|
+
"tasks_per_node": 2,
|
|
300
|
+
"cpus_per_task": 1,
|
|
301
|
+
"type": "slurm",
|
|
302
|
+
"sjobexitmod": false
|
|
303
|
+
},
|
|
304
|
+
"mpirun": {
|
|
305
|
+
"openmpi": {
|
|
306
|
+
"options": [
|
|
307
|
+
"--bind-to core",
|
|
308
|
+
"--map-by core",
|
|
309
|
+
"--oversubscribe"
|
|
310
|
+
]
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
"jobThreads": 1,
|
|
314
|
+
"testMaxTasks": 12,
|
|
315
|
+
"installation": {
|
|
316
|
+
"modulePath": "/etc/modulefiles/",
|
|
317
|
+
"applicationPath": "/opt/ALYA",
|
|
318
|
+
"pythonPath": "/usr/bin"
|
|
319
|
+
},
|
|
320
|
+
"alya-mpio-tools": {
|
|
321
|
+
"modules": []
|
|
322
|
+
},
|
|
323
|
+
"queues": {
|
|
324
|
+
"builds": "aws",
|
|
325
|
+
"tests": "aws",
|
|
326
|
+
"benchmarks": "aws",
|
|
327
|
+
"flex": "aws",
|
|
328
|
+
"install": "aws",
|
|
329
|
+
"default": "aws"
|
|
330
|
+
},
|
|
331
|
+
"partition": {},
|
|
332
|
+
"qos": {},
|
|
333
|
+
"reservation": {
|
|
334
|
+
"enable": false
|
|
335
|
+
},
|
|
336
|
+
"host": "",
|
|
337
|
+
"timeOffset": "00:10:00",
|
|
338
|
+
"merge": true
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
},
|
|
285
342
|
"aws-ec2-t3.small-x3": {
|
|
286
343
|
"host": "t3.small",
|
|
287
344
|
"path": "/shared/fedora/squidient",
|
squidient-3.4.5/src/squidient/data/terraform/aws-ec2-t3.small-x6/t3.small/cloud-init-slurm-fedora.sh
ADDED
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -eux
|
|
3
|
+
|
|
4
|
+
# ------------------------------------------------------------
|
|
5
|
+
# Role and topology (filled by Terraform via templatefile)
|
|
6
|
+
# ------------------------------------------------------------
|
|
7
|
+
ROLE="${ROLE}"
|
|
8
|
+
HEAD_HOSTNAME="${HEAD_HOSTNAME}"
|
|
9
|
+
COMPUTE_HOSTNAME="${COMPUTE_HOSTNAME}"
|
|
10
|
+
HEAD_PRIVATE_IP="${HEAD_PRIVATE_IP}"
|
|
11
|
+
COMPUTE_NODE_LIST="${COMPUTE_NODE_LIST}"
|
|
12
|
+
|
|
13
|
+
# ------------------------------------------------------------
|
|
14
|
+
# Hostname setup
|
|
15
|
+
# ------------------------------------------------------------
|
|
16
|
+
if [ "${ROLE}" = "head" ]; then
|
|
17
|
+
hostnamectl set-hostname "${HEAD_HOSTNAME}"
|
|
18
|
+
else
|
|
19
|
+
hostnamectl set-hostname "${COMPUTE_HOSTNAME}"
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
HOSTNAME="$(hostname)"
|
|
23
|
+
|
|
24
|
+
# ------------------------------------------------------------
|
|
25
|
+
# Basic networking
|
|
26
|
+
# ------------------------------------------------------------
|
|
27
|
+
if [ "${ROLE}" = "head" ]; then
|
|
28
|
+
HEAD_IP="$(hostname -I | awk '{print $1}')"
|
|
29
|
+
if ! grep -q " ${HEAD_HOSTNAME}\b" /etc/hosts; then
|
|
30
|
+
echo "$HEAD_IP ${HEAD_HOSTNAME}" >> /etc/hosts
|
|
31
|
+
fi
|
|
32
|
+
else
|
|
33
|
+
if [ -n "${HEAD_PRIVATE_IP}" ] && ! grep -q " ${HEAD_HOSTNAME}\b" /etc/hosts; then
|
|
34
|
+
echo "${HEAD_PRIVATE_IP} ${HEAD_HOSTNAME}" >> /etc/hosts
|
|
35
|
+
fi
|
|
36
|
+
COMPUTE_IP="$(hostname -I | awk '{print $1}')"
|
|
37
|
+
if [ -n "$COMPUTE_IP" ] && ! grep -q " ${COMPUTE_HOSTNAME}\b" /etc/hosts; then
|
|
38
|
+
echo "$COMPUTE_IP ${COMPUTE_HOSTNAME}" >> /etc/hosts
|
|
39
|
+
fi
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
# ------------------------------------------------------------
|
|
43
|
+
# Install base packages
|
|
44
|
+
# ------------------------------------------------------------
|
|
45
|
+
dnf -y update
|
|
46
|
+
|
|
47
|
+
dnf -y install \
|
|
48
|
+
slurm slurm-slurmctld slurm-slurmd \
|
|
49
|
+
munge munge-libs munge-devel \
|
|
50
|
+
cmake gcc gcc-c++ gcc-gfortran \
|
|
51
|
+
git make perl wget \
|
|
52
|
+
python3 python3-pip \
|
|
53
|
+
diffutils which \
|
|
54
|
+
tar gzip bzip2 \
|
|
55
|
+
zlib-devel openssl-devel \
|
|
56
|
+
boost-devel \
|
|
57
|
+
libibverbs rdma-core \
|
|
58
|
+
numactl numactl-devel \
|
|
59
|
+
environment-modules \
|
|
60
|
+
nfs-utils
|
|
61
|
+
|
|
62
|
+
chmod 755 /
|
|
63
|
+
chmod 755 /var
|
|
64
|
+
chmod 755 /var/lib
|
|
65
|
+
|
|
66
|
+
# ------------------------------------------------------------
|
|
67
|
+
# NFS server + client handling (durci)
|
|
68
|
+
# ------------------------------------------------------------
|
|
69
|
+
mkdir -p /shared
|
|
70
|
+
|
|
71
|
+
if [ "${ROLE}" = "head" ]; then
|
|
72
|
+
|
|
73
|
+
chmod 777 /shared
|
|
74
|
+
|
|
75
|
+
cat >/etc/exports <<EOF
|
|
76
|
+
/shared *(rw,sync,no_subtree_check,no_root_squash,fsid=0)
|
|
77
|
+
EOF
|
|
78
|
+
|
|
79
|
+
systemctl enable nfs-idmapd || true
|
|
80
|
+
systemctl start nfs-idmapd || true
|
|
81
|
+
|
|
82
|
+
exportfs -ra
|
|
83
|
+
|
|
84
|
+
systemctl enable --now nfs-server
|
|
85
|
+
|
|
86
|
+
# Register all compute node addresses after slurmctld starts
|
|
87
|
+
cat >/usr/local/sbin/refresh-slurm-nodeaddrs.sh << 'EOS'
|
|
88
|
+
#!/bin/bash
|
|
89
|
+
set -eux
|
|
90
|
+
|
|
91
|
+
HEAD_HOSTNAME="slurm-head"
|
|
92
|
+
HEAD_IP="$(hostname -I | awk '{print $1}')"
|
|
93
|
+
|
|
94
|
+
# Wait for slurmctld
|
|
95
|
+
for i in $(seq 1 60); do
|
|
96
|
+
if systemctl is-active --quiet slurmctld; then break; fi
|
|
97
|
+
sleep 2
|
|
98
|
+
done
|
|
99
|
+
|
|
100
|
+
# Ensure head is in /etc/hosts
|
|
101
|
+
if ! grep -q " $HEAD_HOSTNAME\b" /etc/hosts; then
|
|
102
|
+
echo "$HEAD_IP $HEAD_HOSTNAME" >> /etc/hosts
|
|
103
|
+
fi
|
|
104
|
+
|
|
105
|
+
# Wait for all declared compute nodes, not only the first one.
|
|
106
|
+
for i in $(seq 1 60); do
|
|
107
|
+
all_ready=true
|
|
108
|
+
|
|
109
|
+
for node in ${COMPUTE_NODE_LIST}; do
|
|
110
|
+
ipfile="/shared/$node.ip"
|
|
111
|
+
if [ ! -f "$ipfile" ]; then
|
|
112
|
+
all_ready=false
|
|
113
|
+
continue
|
|
114
|
+
fi
|
|
115
|
+
ip="$(awk '{print $1}' "$ipfile")"
|
|
116
|
+
if [ -z "$ip" ]; then
|
|
117
|
+
all_ready=false
|
|
118
|
+
continue
|
|
119
|
+
fi
|
|
120
|
+
|
|
121
|
+
if ! grep -q " $node\\b" /etc/hosts; then
|
|
122
|
+
echo "$ip $node" >> /etc/hosts
|
|
123
|
+
fi
|
|
124
|
+
|
|
125
|
+
if ! scontrol update NodeName="$node" NodeAddr="$ip"; then
|
|
126
|
+
all_ready=false
|
|
127
|
+
fi
|
|
128
|
+
done
|
|
129
|
+
|
|
130
|
+
if $all_ready; then exit 0; fi
|
|
131
|
+
sleep 3
|
|
132
|
+
done
|
|
133
|
+
|
|
134
|
+
echo "Compute node address registration timed out" >&2
|
|
135
|
+
exit 1
|
|
136
|
+
EOS
|
|
137
|
+
|
|
138
|
+
chmod +x /usr/local/sbin/refresh-slurm-nodeaddrs.sh
|
|
139
|
+
|
|
140
|
+
else
|
|
141
|
+
# Client NFS durci
|
|
142
|
+
if [ -n "${HEAD_PRIVATE_IP}" ]; then
|
|
143
|
+
|
|
144
|
+
if ! grep -q "/shared " /etc/fstab; then
|
|
145
|
+
echo "${HEAD_PRIVATE_IP}:/shared /shared nfs vers=3,noac,actimeo=0,timeo=600,retrans=5,_netdev 0 0" >> /etc/fstab
|
|
146
|
+
fi
|
|
147
|
+
|
|
148
|
+
for i in $(seq 1 40); do
|
|
149
|
+
if mountpoint -q /shared; then break; fi
|
|
150
|
+
|
|
151
|
+
mount -t nfs -o vers=3,noac,actimeo=0,timeo=600,retrans=5 "${HEAD_PRIVATE_IP}:/shared" /shared && break || true
|
|
152
|
+
mount -t nfs -o vers=4 "${HEAD_PRIVATE_IP}:/shared" /shared && break || true
|
|
153
|
+
|
|
154
|
+
sleep 3
|
|
155
|
+
done
|
|
156
|
+
|
|
157
|
+
if mountpoint -q /shared; then
|
|
158
|
+
COMPUTE_IP="$(hostname -I | awk '{print $1}')"
|
|
159
|
+
echo "$COMPUTE_IP" > "/shared/${COMPUTE_HOSTNAME}.ip" || true
|
|
160
|
+
fi
|
|
161
|
+
fi
|
|
162
|
+
fi
|
|
163
|
+
|
|
164
|
+
# ------------------------------------------------------------
|
|
165
|
+
# Munge setup
|
|
166
|
+
# ------------------------------------------------------------
|
|
167
|
+
mkdir -p /etc/munge /var/lib/munge /var/log/munge
|
|
168
|
+
|
|
169
|
+
if [ "${ROLE}" = "head" ]; then
|
|
170
|
+
if [ ! -f /etc/munge/munge.key ]; then
|
|
171
|
+
if command -v create-munge-key >/dev/null 2>&1; then
|
|
172
|
+
create-munge-key
|
|
173
|
+
else
|
|
174
|
+
dd if=/dev/urandom bs=1 count=1024 of=/etc/munge/munge.key
|
|
175
|
+
fi
|
|
176
|
+
fi
|
|
177
|
+
cp /etc/munge/munge.key /shared/munge.key || true
|
|
178
|
+
else
|
|
179
|
+
for i in $(seq 1 30); do
|
|
180
|
+
if [ -f /shared/munge.key ]; then
|
|
181
|
+
cp /shared/munge.key /etc/munge/munge.key
|
|
182
|
+
break
|
|
183
|
+
fi
|
|
184
|
+
sleep 2
|
|
185
|
+
done
|
|
186
|
+
|
|
187
|
+
if [ ! -f /etc/munge/munge.key ]; then
|
|
188
|
+
if command -v create-munge-key >/dev/null 2>&1; then
|
|
189
|
+
create-munge-key
|
|
190
|
+
else
|
|
191
|
+
dd if=/dev/urandom bs=1 count=1024 of=/etc/munge/munge.key
|
|
192
|
+
fi
|
|
193
|
+
fi
|
|
194
|
+
fi
|
|
195
|
+
|
|
196
|
+
chown munge:munge /etc/munge/munge.key
|
|
197
|
+
chmod 600 /etc/munge/munge.key
|
|
198
|
+
chown -R munge:munge /etc/munge /var/lib/munge /var/log/munge
|
|
199
|
+
chmod 700 /var/lib/munge /var/log/munge
|
|
200
|
+
|
|
201
|
+
systemctl enable munge
|
|
202
|
+
systemctl start munge
|
|
203
|
+
|
|
204
|
+
# ------------------------------------------------------------
|
|
205
|
+
# Slurm dynamic config
|
|
206
|
+
# ------------------------------------------------------------
|
|
207
|
+
if ! getent group slurm >/dev/null; then
|
|
208
|
+
groupadd -r slurm
|
|
209
|
+
fi
|
|
210
|
+
if ! id -u slurm >/dev/null 2>&1; then
|
|
211
|
+
useradd -r -g slurm -d /var/lib/slurm -s /sbin/nologin slurm
|
|
212
|
+
fi
|
|
213
|
+
|
|
214
|
+
mkdir -p /var/spool/slurm /var/spool/slurmd /var/log/slurm /var/lib/slurm /etc/slurm
|
|
215
|
+
chown -R slurm:slurm /var/spool/slurm /var/spool/slurmd /var/log/slurm /var/lib/slurm
|
|
216
|
+
|
|
217
|
+
LOCAL_CPUS="$(nproc)"
|
|
218
|
+
SLURM_CONF="/etc/slurm/slurm.conf"
|
|
219
|
+
|
|
220
|
+
# Slurm configuration header
|
|
221
|
+
cat >"$SLURM_CONF" <<EOF
|
|
222
|
+
ClusterName=squidient-aws
|
|
223
|
+
ControlMachine=${HEAD_HOSTNAME}
|
|
224
|
+
|
|
225
|
+
SlurmUser=slurm
|
|
226
|
+
SlurmctldPort=6817
|
|
227
|
+
SlurmdPort=6818
|
|
228
|
+
StateSaveLocation=/var/spool/slurm
|
|
229
|
+
SlurmdSpoolDir=/var/spool/slurmd
|
|
230
|
+
SlurmctldTimeout=300
|
|
231
|
+
SlurmdTimeout=300
|
|
232
|
+
SchedulerType=sched/backfill
|
|
233
|
+
SelectType=select/cons_tres
|
|
234
|
+
|
|
235
|
+
EOF
|
|
236
|
+
|
|
237
|
+
# Lignes NodeName
|
|
238
|
+
echo "NodeName=${HEAD_HOSTNAME} CPUs=$LOCAL_CPUS State=UNKNOWN" >>"$SLURM_CONF"
|
|
239
|
+
if [ -n "${COMPUTE_NODE_LIST}" ]; then
|
|
240
|
+
for node in ${COMPUTE_NODE_LIST}; do
|
|
241
|
+
echo "NodeName=$node CPUs=$LOCAL_CPUS State=UNKNOWN" >>"$SLURM_CONF"
|
|
242
|
+
done
|
|
243
|
+
fi
|
|
244
|
+
|
|
245
|
+
echo "" >>"$SLURM_CONF"
|
|
246
|
+
|
|
247
|
+
# Partition debug
|
|
248
|
+
PARTITION_NODES="${HEAD_HOSTNAME}"
|
|
249
|
+
if [ -n "${COMPUTE_NODE_LIST}" ]; then
|
|
250
|
+
for node in ${COMPUTE_NODE_LIST}; do
|
|
251
|
+
PARTITION_NODES="$PARTITION_NODES,$node"
|
|
252
|
+
done
|
|
253
|
+
fi
|
|
254
|
+
|
|
255
|
+
echo "PartitionName=debug Nodes=$PARTITION_NODES Default=YES MaxTime=INFINITE State=UP" >>"$SLURM_CONF"
|
|
256
|
+
|
|
257
|
+
chown slurm:slurm "$SLURM_CONF"
|
|
258
|
+
|
|
259
|
+
# ------------------------------------------------------------
|
|
260
|
+
# OpenMPI + alya-mpio-tools (HEAD ONLY)
|
|
261
|
+
# ------------------------------------------------------------
|
|
262
|
+
if [ "${ROLE}" = "head" ]; then
|
|
263
|
+
OMPI_VERSION="4.1.6"
|
|
264
|
+
OMPI_PREFIX="/shared/openmpi"
|
|
265
|
+
|
|
266
|
+
cd /tmp
|
|
267
|
+
wget "https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-$OMPI_VERSION.tar.gz"
|
|
268
|
+
tar -xvf "openmpi-$OMPI_VERSION.tar.gz"
|
|
269
|
+
cd "openmpi-$OMPI_VERSION"
|
|
270
|
+
|
|
271
|
+
./configure --prefix="$OMPI_PREFIX" --enable-mpirun-prefix-by-default
|
|
272
|
+
make -j"$(nproc)"
|
|
273
|
+
make install
|
|
274
|
+
|
|
275
|
+
# Use this OpenMPI installation
|
|
276
|
+
export PATH="$OMPI_PREFIX/bin:$PATH"
|
|
277
|
+
|
|
278
|
+
ALYA_MPIO_SRC="/shared/alya-mpio-tools-src"
|
|
279
|
+
ALYA_MPIO_INSTALL="/shared/alya-mpio-tools"
|
|
280
|
+
|
|
281
|
+
git clone --depth 1 https://alya.gitlab.bsc.es/alya/alya-mpio-tools.git "$ALYA_MPIO_SRC" || true
|
|
282
|
+
|
|
283
|
+
cd "$ALYA_MPIO_SRC"
|
|
284
|
+
mkdir -p build
|
|
285
|
+
cd build
|
|
286
|
+
|
|
287
|
+
cmake .. \
|
|
288
|
+
-DCMAKE_C_COMPILER=mpicc \
|
|
289
|
+
-DCMAKE_CXX_COMPILER=mpicxx \
|
|
290
|
+
-DMPIEXEC_PREFLAGS="--allow-run-as-root;--oversubscribe" \
|
|
291
|
+
-DUSE_VTK=OFF \
|
|
292
|
+
-DUSE_SFC=OFF \
|
|
293
|
+
-DCMAKE_INSTALL_PREFIX="$ALYA_MPIO_INSTALL"
|
|
294
|
+
|
|
295
|
+
make -j"$(nproc)"
|
|
296
|
+
make install
|
|
297
|
+
fi
|
|
298
|
+
|
|
299
|
+
# ------------------------------------------------------------
|
|
300
|
+
# Shared environment for MPI + alya-mpio-tools (ALL NODES)
|
|
301
|
+
# ------------------------------------------------------------
|
|
302
|
+
cat >/etc/profile.d/shared-hpc-env.sh <<'EOF'
|
|
303
|
+
export PATH=/shared/openmpi/bin:/shared/alya-mpio-tools/bin:$PATH
|
|
304
|
+
export LD_LIBRARY_PATH=/shared/openmpi/lib:$LD_LIBRARY_PATH
|
|
305
|
+
EOF
|
|
306
|
+
|
|
307
|
+
chmod +x /etc/profile.d/shared-hpc-env.sh
|
|
308
|
+
|
|
309
|
+
# ------------------------------------------------------------
|
|
310
|
+
# Start Slurm daemons
|
|
311
|
+
# ------------------------------------------------------------
|
|
312
|
+
if [ "${ROLE}" = "head" ]; then
|
|
313
|
+
systemctl enable slurmctld
|
|
314
|
+
systemctl start slurmctld
|
|
315
|
+
/usr/local/sbin/refresh-slurm-nodeaddrs.sh >/var/log/refresh-slurm-nodeaddrs.log 2>&1
|
|
316
|
+
else
|
|
317
|
+
systemctl disable slurmctld || true
|
|
318
|
+
fi
|
|
319
|
+
|
|
320
|
+
systemctl enable slurmd
|
|
321
|
+
systemctl start slurmd
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
terraform {
|
|
2
|
+
required_version = ">= 1.6.0"
|
|
3
|
+
|
|
4
|
+
required_providers {
|
|
5
|
+
aws = {
|
|
6
|
+
source = "hashicorp/aws"
|
|
7
|
+
version = "~> 5.0"
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
provider "aws" {
|
|
13
|
+
region = "eu-west-3"
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
variable "fedora_ami_id" {
|
|
17
|
+
description = "Fedora Cloud AMI ID in eu-west-3"
|
|
18
|
+
type = string
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
# List of compute node hostnames.
|
|
22
|
+
# Six EC2 instances in total: one head and five compute nodes.
|
|
23
|
+
variable "compute_nodes" {
|
|
24
|
+
type = list(string)
|
|
25
|
+
default = ["slurm-node1", "slurm-node2", "slurm-node3", "slurm-node4", "slurm-node5"]
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
# Primary compute node name used in slurm.conf generated on the head
|
|
29
|
+
locals {
|
|
30
|
+
primary_compute = var.compute_nodes[0]
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
resource "aws_key_pair" "hpc" {
|
|
34
|
+
key_name = "hpc-key-x6"
|
|
35
|
+
public_key = file("${path.module}/.ssh/t3.small.pub")
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
data "aws_vpc" "default" {
|
|
39
|
+
default = true
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
data "aws_subnets" "default" {
|
|
43
|
+
filter {
|
|
44
|
+
name = "vpc-id"
|
|
45
|
+
values = [data.aws_vpc.default.id]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
resource "aws_security_group" "hpc_ssh" {
|
|
50
|
+
name = "hpc-ssh-x6"
|
|
51
|
+
description = "SSH + internal comms for HPC cluster"
|
|
52
|
+
vpc_id = data.aws_vpc.default.id
|
|
53
|
+
|
|
54
|
+
# SSH from everywhere (OK for tests, not prod)
|
|
55
|
+
ingress {
|
|
56
|
+
from_port = 22
|
|
57
|
+
to_port = 22
|
|
58
|
+
protocol = "tcp"
|
|
59
|
+
cidr_blocks = ["0.0.0.0/0"]
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
# Head <-> compute comms (Slurm/MPI/NFS): allow all inside the VPC
|
|
63
|
+
ingress {
|
|
64
|
+
from_port = 0
|
|
65
|
+
to_port = 0
|
|
66
|
+
protocol = "-1"
|
|
67
|
+
cidr_blocks = [data.aws_vpc.default.cidr_block]
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
# Outbound: allow everything (updates, git, etc.)
|
|
71
|
+
egress {
|
|
72
|
+
from_port = 0
|
|
73
|
+
to_port = 0
|
|
74
|
+
protocol = "-1"
|
|
75
|
+
cidr_blocks = ["0.0.0.0/0"]
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
# ---------------------- HEAD -------------------------
|
|
80
|
+
resource "aws_instance" "slurm_head" {
|
|
81
|
+
ami = var.fedora_ami_id
|
|
82
|
+
instance_type = "t3.small"
|
|
83
|
+
|
|
84
|
+
root_block_device {
|
|
85
|
+
volume_size = 30
|
|
86
|
+
volume_type = "gp3"
|
|
87
|
+
delete_on_termination = true
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
subnet_id = data.aws_subnets.default.ids[0]
|
|
91
|
+
vpc_security_group_ids = [aws_security_group.hpc_ssh.id]
|
|
92
|
+
key_name = aws_key_pair.hpc.key_name
|
|
93
|
+
|
|
94
|
+
associate_public_ip_address = true
|
|
95
|
+
|
|
96
|
+
# Head gets a single "primary" compute hostname for its slurm.conf
|
|
97
|
+
user_data = templatefile(
|
|
98
|
+
"${path.module}/cloud-init-slurm-fedora.sh",
|
|
99
|
+
{
|
|
100
|
+
ROLE = "head"
|
|
101
|
+
HEAD_HOSTNAME = "slurm-head"
|
|
102
|
+
COMPUTE_HOSTNAME = local.primary_compute
|
|
103
|
+
HEAD_PRIVATE_IP = "0.0.0.0"
|
|
104
|
+
COMPUTE_NODE_LIST = join(" ", var.compute_nodes)
|
|
105
|
+
}
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
tags = {
|
|
109
|
+
Name = "hpc-slurm-head-fedora-x6"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
# -------------------- COMPUTES (for_each) ------------------------
|
|
114
|
+
resource "aws_instance" "slurm_compute" {
|
|
115
|
+
for_each = toset(var.compute_nodes)
|
|
116
|
+
ami = var.fedora_ami_id
|
|
117
|
+
instance_type = "t3.small"
|
|
118
|
+
|
|
119
|
+
root_block_device {
|
|
120
|
+
volume_size = 30
|
|
121
|
+
volume_type = "gp3"
|
|
122
|
+
delete_on_termination = true
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
subnet_id = data.aws_subnets.default.ids[0]
|
|
126
|
+
vpc_security_group_ids = [aws_security_group.hpc_ssh.id]
|
|
127
|
+
key_name = aws_key_pair.hpc.key_name
|
|
128
|
+
|
|
129
|
+
associate_public_ip_address = true
|
|
130
|
+
|
|
131
|
+
depends_on = [aws_instance.slurm_head]
|
|
132
|
+
|
|
133
|
+
user_data = templatefile(
|
|
134
|
+
"${path.module}/cloud-init-slurm-fedora.sh",
|
|
135
|
+
{
|
|
136
|
+
ROLE = "compute"
|
|
137
|
+
HEAD_HOSTNAME = "slurm-head"
|
|
138
|
+
COMPUTE_HOSTNAME = each.key
|
|
139
|
+
HEAD_PRIVATE_IP = aws_instance.slurm_head.private_ip
|
|
140
|
+
COMPUTE_NODE_LIST = join(" ", var.compute_nodes)
|
|
141
|
+
}
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
tags = {
|
|
145
|
+
Name = "hpc-${each.key}-fedora-x6"
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
# -------------------- OUTPUTS ------------------------
|
|
150
|
+
|
|
151
|
+
output "head_public_ip" {
|
|
152
|
+
description = "Public IP of the Slurm head node"
|
|
153
|
+
value = aws_instance.slurm_head.public_ip
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
output "compute_public_ips" {
|
|
157
|
+
description = "Public IPs of compute nodes (by hostname)"
|
|
158
|
+
value = { for name, inst in aws_instance.slurm_compute : name => inst.public_ip }
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
output "ssh_head" {
|
|
162
|
+
value = "ssh -i ./.ssh/t3.small fedora@${aws_instance.slurm_head.public_ip}"
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
output "ssh_compute_examples" {
|
|
166
|
+
value = {
|
|
167
|
+
for name, inst in aws_instance.slurm_compute :
|
|
168
|
+
name => "ssh -i ./.ssh/t3.small fedora@${inst.public_ip}"
|
|
169
|
+
}
|
|
170
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|