diff --git a/.catalog-onboard-pipeline.yaml b/.catalog-onboard-pipeline.yaml new file mode 100644 index 00000000..4eb02e0a --- /dev/null +++ b/.catalog-onboard-pipeline.yaml @@ -0,0 +1,24 @@ +--- +apiVersion: v1 +offerings: +# below is an example of a Deployable Architecture (DA) solution +- name: terraform-ibm-modules-terraform-ibm-hpc-ad6e71e # must match the offering name in the ibm_catalog.json + kind: solution + catalog_id: fe9d2e76-5ada-44af-821f-b437dcc80f71 + offering_id: 468c5a1c-1f1d-4e5a-b5b3-ec646b1bd298 + # list all of the variations (flavors) you have included in the ibm_catalog.json + variations: + - name: advanced + mark_ready: false # have pipeline mark as visible if validation passes + install_type: fullstack # ensure value matches what is in ibm_catalog.json (fullstack or extension) + destroy_resources_on_failure: false # defaults to false if not specified so resources can be inspected to debug failures during validation + destroy_workspace_on_failure: false # defaults to false if not specified so schematics workspace can be inspected to debug failures during validation + import_only: false # defaults to false - set to true if you do not want to do any validation, but be aware offering can't be publish if not validated + validation_rg: validation # the resource group in which to do validation in. Will be created if does not exist. If not specified, default value is 'validation' + # scc details needed if your offering is claiming any compliance controls + scc: + # must be an instance in the same account the validation is being done in + instance_id: 1c7d5f78-9262-44c3-b779-b28fe4d88c37 + region: us-south + # pre_validation: tests/scripts/pre-validation.sh # optionally run a command before validation runs + # post_validation: tests/scripts/post-validation.sh # optionally run a command after validation completes diff --git a/.releaserc b/.releaserc index 708916f7..aafef0a4 100644 --- a/.releaserc +++ b/.releaserc @@ -9,7 +9,8 @@ "assets": "false" }], ["@semantic-release/exec", { - "successCmd": "echo \"SEMVER_VERSION=${nextRelease.version}\" >> $GITHUB_ENV" + "successCmd": "echo \"SEMVER_VERSION=${nextRelease.version}\" >> $GITHUB_ENV", + "publishCmd": "./ci/trigger-catalog-onboarding-pipeline.sh --version=v${nextRelease.version}" }] ] } diff --git a/common-dev-assets b/common-dev-assets index 58d733c8..d3541212 160000 --- a/common-dev-assets +++ b/common-dev-assets @@ -1 +1 @@ -Subproject commit 58d733c8481b5c32af65955fbd324c5f69bca4a2 +Subproject commit d35412124fced5246f62673ccd743fef84fef7bf diff --git a/ibm_catalog.json b/ibm_catalog.json new file mode 100644 index 00000000..3256b283 --- /dev/null +++ b/ibm_catalog.json @@ -0,0 +1,164 @@ +{ + "products": [ + { + "name": "terraform-ibm-modules-terraform-ibm-hpc-ad6e71e", + "label": "HPC Deployable Architecture", + "product_kind": "solution", + "tags": [ + "Deployable Architecture", + "DA", + "HPC", + "IBM Cloud HPC", + "ibm_created", + "target_terraform", + "terraform", + "reference_architecture", + "solution" + ], + "keywords": [ + "HPC", + "vpc", + "DA", + "Deployable Architecture", + "terraform", + "solution" + ], + "short_description": "Deploy your high performance computing (HPC) cluster with IBM scheduling software for compute intensive workloads.", + "long_description": "**Before you begin deploying IBM Cloud HPC, make sure that you meet the prerequisites listed in [the step-by-step guide](https://cloud.ibm.com/docs/allowlist/hpc-service?topic=hpc-service-before-you-begin-deploying).**\n\nIBM Cloud HPC is a deployable architecture where you can deploy both cloud compute resources (vCPU resources) and HPC scheduling software for your compute-intensive HPC workloads. You can reserve capacity on a recurring hourly basis from a dedicated IBM Cloud HPC resource pool.", + "provider_name": "IBM", + "offering_docs_url": "https://cloud.ibm.com/docs/allowlist/hpc-service?topic=hpc-service-overview", + "features": [ + { + "title": "Reserve HPC compute on an hourly basis", + "description": "Reserve HPC compute capacity on a recurring hourly basis. This reserved time slot and capacity cannot be preempted by IBM." + }, + { + "title": "HPC infrastructure bundled with LSF scheduling software", + "description": "Create a cluster with IBM Spectrum LSF in its own subnet and security group for HPC administrators to log in, submit, and manage HPC jobs." + }, + { + "title": "Automatic compute scaling with LSF resource connector", + "description": "Automatically scale up compute resources based on workload demand. Compute resources are automatically scaled down when no longer required." + } + ], + "flavors": [ + { + "label": "Advanced", + "name": "advanced", + "install_type": "fullstack", + "working_directory": "solutions/hpc", + "compliance": { + "authority": "scc-v3", + "profiles": [ + { + "profile_name": "IBM Cloud Framework for Financial Services", + "profile_version": "1.5.0" + } + ] + }, + "release_notes_url": "https://cloud.ibm.com/docs/allowlist/hpc-service?topic=hpc-service-release-notes", + "configuration": [ + { + "key": "ibmcloud_api_key", + "type": "password", + "description": "IBM Cloud API Key that will be used for authentication in scripts run in this module. Only required if certain options are required.", + "required": true + }, + { + "key": "nsd_details", + "type": "array", + "default_value": null, + "description": "Storage scale NSD details", + "hidden": true + } + ], + "iam_permissions": [ + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Manager" + ], + "service_name": "appid" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Manager" + ], + "service_name": "cloud-object-storage" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Manager" + ], + "service_name": "hs-crypto" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Administrator" + ], + "service_name": "iam-identity" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Manager" + ], + "service_name": "kms" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Administrator" + ], + "service_name": "is.vpc" + } + ], + "architecture": { + "descriptions": "", + "features": [ + { + "title": "Separate VPC for HPC workloads", + "description": "Yes" + }, + { + "title": "Virtual Server Instances for every subnet", + "description": "Yes" + }, + { + "title": "Increases security with Key Management", + "description": "Yes" + }, + { + "title": "Reduces failure events by using multizone regions", + "description": "Yes" + }, + { + "title": "Collects and stores Internet Protocol (IP) traffic information with Activity Tracker and Flow Logs", + "description": "Yes" + }, + { + "title": "Securely connects to multiple networks with a site-to-site virtual private network", + "description": "Yes" + }, + { + "title": "Simplifies risk management and demonstrates regulatory compliance with Financial Services", + "description": "Yes" + }, + { + "title": "Uses Floating IP address for access through the public internet", + "description": "No" + } + ], + "diagrams": [ + { + "diagram": { + "caption": "HPC variation", + "url": "https://raw.githubusercontent.com/terraform-ibm-modules/terraform-ibm-landing-zone/main/reference-architectures/vsi-vsi.drawio.svg", + "type": "image/svg+xml" + }, + "description": "The HPC variation of the deployable architecture is based on the IBM Cloud for Financial Services reference architecture. The architecture creates a customizable and secure infrastructure, with virtual servers, to run your workloads with a Virtual Private Cloud (VPC) in multizone regions." + } + ] + } + } + ] + } + ] +} diff --git a/main.tf b/main.tf index cf7b38b1..5bf68ad6 100644 --- a/main.tf +++ b/main.tf @@ -22,13 +22,13 @@ module "hpc" { enable_vpn = var.enable_vpn file_shares = var.file_shares hpcs_instance_name = var.hpcs_instance_name - ibm_customer_number = var.ibm_customer_number - ibmcloud_api_key = var.ibmcloud_api_key - key_management = var.key_management - login_image_name = var.login_image_name - login_instances = var.login_instances - login_ssh_keys = var.login_ssh_keys - #login_subnets_cidr = var.login_subnets_cidr + # ibm_customer_number = var.ibm_customer_number + ibmcloud_api_key = var.ibmcloud_api_key + key_management = var.key_management + login_image_name = var.login_image_name + login_instances = var.login_instances + login_ssh_keys = var.login_ssh_keys + # login_subnets_cidr = var.login_subnets_cidr management_image_name = var.management_image_name management_instances = var.management_instances network_cidr = var.network_cidr diff --git a/reference-architectures/deploy-arch-ibm-hpc-lsf.md b/reference-architectures/deploy-arch-ibm-hpc-lsf.md new file mode 100644 index 00000000..b2d7e6f2 --- /dev/null +++ b/reference-architectures/deploy-arch-ibm-hpc-lsf.md @@ -0,0 +1,3 @@ +# IBM Cloud HPC (Spectrum LSF) + +IBM Spectrum LSF allows you to deploy high-performance computing (HPC) clusters by using IBM Spectrum LSF as HPC scheduling software. This offering uses open source Terraform-based automation to provision and configure IBM Cloud resources. With simple steps to define configuration properties and use automated deployment, you can build your own HPC clusters in minutes. IBM Spectrum LSF also enables configuration for auto-scaling, so IBM Spectrum LSF clusters can automatically add and remove worker nodes based on workload specifications. This allows you to take full advantage of consumption-based pricing and pay for cloud resources only when they are needed. diff --git a/reference-architectures/deploy-arch-ibm-hpc-scale.md b/reference-architectures/deploy-arch-ibm-hpc-scale.md new file mode 100644 index 00000000..8382cdae --- /dev/null +++ b/reference-architectures/deploy-arch-ibm-hpc-scale.md @@ -0,0 +1,3 @@ +# IBM Cloud HPC (Storage Scale) + +IBM Storage Scale is a high performance, highly available, clustered file system and associated management software, available on a variety of platforms. IBM Storage Scale can scale in several dimensions, including performance (bandwidth and IOPS), capacity and number of nodes* (instances) that can mount the file system. IBM Storage Scale addresses the needs of applications whose performance (or performance-to-capacity ratio) demands cannot be met by traditional scale-up storage systems; and IBM Storage Scale is therefore deployed for many I/O-demanding enterprise applications that require high performance or scale. IBM Storage Scale provides various configuration options, access methods (including traditional POSIX-based file access), and many features such as snapshots, compression, and encryption. Note that IBM Storage Scale is not itself an application in the traditional sense, but instead provides the storage infrastructure for applications. diff --git a/reference-architectures/deploy-arch-ibm-hpc-symphony.md b/reference-architectures/deploy-arch-ibm-hpc-symphony.md new file mode 100644 index 00000000..5ebc608a --- /dev/null +++ b/reference-architectures/deploy-arch-ibm-hpc-symphony.md @@ -0,0 +1,3 @@ +# IBM Cloud HPC (Spectrum Symphony) + +IBM Spectrum Symphony allows you to deploy high-performance computing (HPC) clusters that use IBM Spectrum Symphony as the HPC scheduling software. This offering uses open source Terraform-based automation to provision and configure IBM Cloud resources. With simple steps to define configuration properties and use automated deployment, you can build your own HPC cluster in minutes. IBM Spectrum Symphony also supports auto-scaling for certain cluster configurations, so worker nodes can be automatically added and removed from a cluster based on workload requirements. This allows you to take full advantage of consumption-based pricing and pay for cloud resources only when they are needed. In addition, this offering supports use of IBM Spectrum Scale for applications requiring a high-performance file system for sharing of data. diff --git a/solutions/hpc/catalogValidationValues.json.template b/solutions/hpc/catalogValidationValues.json.template new file mode 100644 index 00000000..1b47cadd --- /dev/null +++ b/solutions/hpc/catalogValidationValues.json.template @@ -0,0 +1,10 @@ +{ + "ibmcloud_api_key": $VALIDATION_APIKEY, + "prefix": $PREFIX, + "zones": "[\"ca-tor-1\"]", + "resource_group": "geretain-hpc-rg", + "bastion_ssh_keys": "[\"geretain-hpc-ssh-key\"]", + "login_ssh_keys": "[\"geretain-hpc-ssh-key\"]", + "compute_ssh_keys": "[\"geretain-hpc-ssh-key\"]", + "storage_ssh_keys": "[\"geretain-hpc-ssh-key\"]" +} diff --git a/solutions/hpc/variables.tf b/solutions/hpc/variables.tf index 1780da64..fe248e63 100644 --- a/solutions/hpc/variables.tf +++ b/solutions/hpc/variables.tf @@ -14,7 +14,6 @@ variable "storage_type" { default = "scratch" description = "Select the required storage type(scratch/persistent/eval)." } -*/ variable "ibm_customer_number" { type = string @@ -27,7 +26,7 @@ variable "ibm_customer_number" { error_message = "The IBM customer number input value cannot have special characters." } } - +*/ ############################################################################## # Account Variables ############################################################################## diff --git a/variables.tf b/variables.tf index aafe2e5e..76fef18a 100644 --- a/variables.tf +++ b/variables.tf @@ -14,7 +14,6 @@ variable "storage_type" { default = "scratch" description = "Select the required storage type(scratch/persistent/eval)." } -*/ variable "ibm_customer_number" { type = string @@ -27,7 +26,7 @@ variable "ibm_customer_number" { error_message = "The IBM customer number input value cannot have special characters." } } - +*/ ############################################################################## # Account Variables ##############################################################################