diff --git a/.catalog-onboard-pipeline.yaml b/.catalog-onboard-pipeline.yaml index a57b29f9..c213621a 100644 --- a/.catalog-onboard-pipeline.yaml +++ b/.catalog-onboard-pipeline.yaml @@ -22,3 +22,19 @@ offerings: scc: instance_id: 1c7d5f78-9262-44c3-b779-b28fe4d88c37 region: us-south + - name: basic-without-sample-app + mark_ready: false + install_type: fullstack + format_kind: stack + validation_type: projects + scc: + instance_id: 1c7d5f78-9262-44c3-b779-b28fe4d88c37 + region: us-south + - name: standard-without-sample-app + mark_ready: false + install_type: fullstack + format_kind: stack + validation_type: projects + scc: + instance_id: 1c7d5f78-9262-44c3-b779-b28fe4d88c37 + region: us-south diff --git a/.gitignore b/.gitignore index 97d93660..bec79e62 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,15 @@ .def.json .terraform +**/.terraform/* + *.tfstate +*.tfstate.* + +*.terraform.lock.hcl *.lock.hcl + .DS_Store .idea +*.tfvars +*.tfvars.json +*.log diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 60ecfd74..32155edc 120000 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1 +1 @@ -common-dev-assets/stack-assets/.pre-commit-config.yaml \ No newline at end of file +common-dev-assets/module-assets/.pre-commit-config.yaml \ No newline at end of file diff --git a/README.md b/README.md index 150cd123..2bf8346f 100644 --- a/README.md +++ b/README.md @@ -2,27 +2,35 @@ The following [deployable architecture](https://cloud.ibm.com/docs/secure-enterprise?topic=secure-enterprise-understand-module-da#what-is-da) automates the deployment of a sample gen AI Pattern on IBM Cloud, including all underlying IBM Cloud and WatsonX infrastructure. This architecture implements the best practices for watsonx gen AI Pattern deployment on IBM Cloud, as described in the [reference architecture](https://cloud.ibm.com/docs/pattern-genai-rag?topic=pattern-genai-rag-genai-pattern). -This deployable architecture provides a comprehensive foundation for trust, observability, security, and regulatory compliance. The architecture configures an IBM Cloud account to align with compliance settings. It also deploys key management and secrets management services and the infrastructure to support continuous integration (CI), continuous delivery (CD), and continuous compliance (CC) pipelines for secure management of the application lifecycle. It also deploys the WatsonX services suite and IBM Cloud Elasticsearch to faciliate a RAG pattern. These pipelines facilitate the deployment of the application, check for vulnerabilities and auditability, and help ensure a secure and trustworthy deployment of generative AI applications on IBM Cloud. +This deployable architecture provides a comprehensive foundation for trust, observability, security, and regulatory compliance. The architecture configures an IBM Cloud account to align with compliance settings. It also deploys key management and secrets management services and the infrastructure to support continuous integration (CI), continuous delivery (CD), and continuous compliance (CC) pipelines for secure management of the application lifecycle. It also deploys the WatsonX services suite and IBM Cloud Elasticsearch to facilitate a RAG pattern. These pipelines facilitate the deployment of the application, check for vulnerabilities and auditability, and help ensure a secure and trustworthy deployment of generative AI applications on IBM Cloud. ## Variations -Two variations are available for this deployable architecture: -1. Basic variation: +This deployable architecture is available in four variations, grouped into two categories (Basic and Standard). Each category offers an option with or without a sample application deployment or pipeline: + +1. Basic variation - With sample application: - Code Engine Project: Provisions a Code Engine project, providing a fully managed platform for containerized applications. - Application Deployment: Deploys the application on the provisioned Code Engine project. - Elasticsearch Enterprise: Provisions an Elasticsearch [enterprise](https://cloud.ibm.com/docs/databases-for-elasticsearch?topic=databases-for-elasticsearch-elastic-offerings) instance for search and analytics capabilities. -2. Standard variation: +2. Standard variation - With sample application: - IBM Cloud OpenShift Cluster: Provisions an [IBM Cloud OpenShift cluster](https://cloud.ibm.com/docs/openshift?topic=openshift-overview) - VPC Network Infrastructure: Sets up the underlying VPC network infrastructure to support the OpenShift cluster. - Application Deployment: Deploys the application on the provisioned OpenShift cluster. - ElasticSearch Platinum Plan: Leverages the platinum plan of ElasticSearch, which includes the [ELSER](https://cloud.ibm.com/docs/databases-for-elasticsearch?topic=databases-for-elasticsearch-elser-embeddings-elasticsearch) model for advanced vector generation capabilities. +3. Basic variation: + - Code Engine Project: Provisions a Code Engine project, providing a fully managed platform for containerized applications. + - Elasticsearch Enterprise: Provisions an Elasticsearch [enterprise](https://cloud.ibm.com/docs/databases-for-elasticsearch?topic=databases-for-elasticsearch-elastic-offerings) instance for search and analytics capabilities. +4. Standard variation: + - IBM Cloud OpenShift Cluster: Provisions an [IBM Cloud OpenShift cluster](https://cloud.ibm.com/docs/openshift?topic=openshift-overview) + - VPC Network Infrastructure: Sets up the underlying VPC network infrastructure to support the OpenShift cluster. + - ElasticSearch Platinum Plan: Leverages the platinum plan of ElasticSearch, which includes the [ELSER](https://cloud.ibm.com/docs/databases-for-elasticsearch?topic=databases-for-elasticsearch-elser-embeddings-elasticsearch) model for advanced vector generation capabilities. ## Objective and benefits -This deployable architecture is designed to showcase a fully automated deployment of a retrieval augmented generation application through IBM Cloud Projects. It provides a flexible and customizable foundation for your own watsonx applications on IBM Cloud. This architecture deploys the following [sample application](https://github.com/IBM/gen-ai-rag-watsonx-sample-application) by default. +This deployable architecture is designed to showcase a fully automated deployment of a retrieval augmented generation application through IBM Cloud Projects. It provides a flexible and customizable foundation for your own watsonx applications on IBM Cloud. This architecture deploys the following [sample application](https://github.com/IBM/gen-ai-rag-watsonx-sample-application) by default for the variations that allow provisioning sample application. By using this architecture, you can accelerate your deployment and tailor it to meet your business needs and enterprise goals. @@ -239,3 +247,20 @@ To use your own app, remove the `Workload - Sample RAG Application` member confi 1. Delete the project. To undeploy the infrastructure created by the deployable architecture, follow the steps in [Deleting a project](https://cloud.ibm.com/docs/secure-enterprise?topic=secure-enterprise-delete-project) in the IBM Cloud docs. + +## Known Issues + +[The Standard (OpenShift) variation is currently not idempotent](https://github.com/terraform-ibm-modules/stack-ibm-retrieval-augmented-generation/issues/247). + +Both the `Landing zone` Deployable Architecture (DA) and the `Landing zone for cloud-native AI applications` Deployable Architecture (DA) attempt to manage the same `Access Control Lists (ACLs)`. +This may result in duplicate or conflicting updates as the same ACL resource is updated from two independent Terraform states. + +**Impact:** + +- Non‑idempotent applies: `terraform apply` may produce updates even when no configuration changes exist. + +- Unexpected diffs: Terraform may show differences in ACL rules because another state has modified the resource. + +- Apply failures: Concurrent updates from both DAs may trigger errors such as “object changed outside of Terraform. + +These issues occur only in environments where both DAs are applied independently and target the same ACL resource. diff --git a/common-dev-assets b/common-dev-assets index 6a351e62..191c3ec3 160000 --- a/common-dev-assets +++ b/common-dev-assets @@ -1 +1 @@ -Subproject commit 6a351e62a04ea8bf074d4933c86cd28671154d3b +Subproject commit 191c3ec328a8bc402b28104c9ed5249ee5fafab3 diff --git a/ibm_catalog.json b/ibm_catalog.json index 7139471f..41f83b0d 100644 --- a/ibm_catalog.json +++ b/ibm_catalog.json @@ -60,12 +60,13 @@ "description": "Ensures trust by configuring the IBM Cloud account to align with compliance settings as defined in the Financial Services framework." } ], - "support_details": "This product is in the community registry, as such support is handled through the originated repo. If you experience issues please open an issue in that repository [https://github.com/terraform-ibm-modules/stack-ibm-retrieval-augmented-generation/issues](https://github.com/terraform-ibm-modules/stack-ibm-retrieval-augmented-generation/issues). Please note this product is not supported via the IBM Cloud Support Center.", + "support_details": "This product is in the community registry, as such support is handled through the [originated repo](https://github.com/terraform-ibm-modules/stack-ibm-retrieval-augmented-generation). If you experience issues, please open an [issue]([https://github.com/terraform-ibm-modules/stack-ibm-retrieval-augmented-generation/issues]) in that repository. Please note this product is not supported via the IBM Cloud Support Center.", "flavors": [ { "label": "Basic with sample application (Deploy on Code Engine)", "name": "basic", "index": 1, + "short_description": "Provides Code Engine users with serverless simplicity plus a hosted sample app and CI/CD pipeline.", "working_directory": "solutions/basic", "ignore_readme": true, "dependency_version_2": true, @@ -602,6 +603,7 @@ "label": "Standard with sample application (Deploy on Red Hat OpenShift)", "name": "standard", "index": 2, + "short_description": "Offers Red Hat OpenShift users enterprise-grade flexibility along with a hosted sample app and automated pipeline deployment.", "working_directory": "solutions/standard", "ignore_readme": true, "dependency_version_2": true, @@ -1334,6 +1336,1250 @@ } ], "install_type": "fullstack" + }, + { + "label": "Basic (Deploy on Code Engine)", + "name": "basic-without-app", + "index": 3, + "short_description": "Designed for Code Engine users who want serverless simplicity without deploying a sample app or pipeline.", + "working_directory": "solutions/basic-without-sample-app", + "ignore_readme": true, + "dependency_version_2": true, + "iam_permissions": [ + { + "service_name": "iam-groups", + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Administrator" + ] + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Manager", + "crn:v1:bluemix:public:iam::::role:Editor" + ], + "service_name": "cloud-object-storage" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Administrator" + ], + "service_name": "iam-identity" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Writer", + "crn:v1:bluemix:public:iam::::role:Administrator" + ], + "service_name": "atracker" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Manager", + "crn:v1:bluemix:public:iam::::role:Editor" + ], + "service_name": "kms" + }, + { + "service_name": "sysdig-secure", + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Manager", + "crn:v1:bluemix:public:iam::::role:Editor" + ] + }, + { + "service_name": "apprapp", + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Manager", + "crn:v1:bluemix:public:iam::::role:Editor" + ] + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Editor" + ], + "service_name": "pm-20" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Editor" + ], + "service_name": "data-science-experience" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Editor" + ], + "service_name": "aiopenscale" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Editor" + ], + "service_name": "conversation" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Editor" + ], + "service_name": "discovery" + }, + { + "service_name": "databases-for-elasticsearch", + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Editor" + ] + }, + { + "service_name": "event-notifications", + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Manager", + "crn:v1:bluemix:public:iam::::role:Editor" + ] + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Writer", + "crn:v1:bluemix:public:iam::::role:Editor" + ], + "service_name": "codeengine" + } + ], + "architecture": { + "features": [ + { + "title": " ", + "description": "Enables:" + }, + { + "title": "1. Code Engine for containerized and serverless workloads", + "description": " " + }, + { + "title": "2. Elasticsearch Enterprise for building and storing dense vector indexes or keyword search indexes", + "description": " " + }, + { + "title": "3. watsonx.ai in-memory vector store for RAG trial and exploration", + "description": " " + }, + { + "title": "4. watsonx.ai UI to upload documents", + "description": " " + }, + { + "title": "5. watsonx.ai Prompt Lab for inferencing and Prompt Templates", + "description": " " + }, + { + "title": "6. watsonx Assistant Conversational Search with embedded LLM", + "description": " " + } + ], + "diagrams": [ + { + "diagram": { + "url": "https://raw.githubusercontent.com/terraform-ibm-modules/stack-ibm-retrieval-augmented-generation/main/reference-architectures/rag-pattern.svg", + "caption": "Reference architecture", + "type": "image/svg+xml", + "thumbnail_url": "https://raw.githubusercontent.com/terraform-ibm-modules/stack-ibm-retrieval-augmented-generation/main/reference-architectures/rag-pattern.svg" + }, + "description": "Reference architecture" + }, + { + "diagram": { + "url": "https://raw.githubusercontent.com/terraform-ibm-modules/stack-ibm-retrieval-augmented-generation/main/reference-architectures/rag-stack-without-app-and-alm.svg", + "caption": "Solution components", + "type": "image/svg+xml", + "thumbnail_url": "https://raw.githubusercontent.com/terraform-ibm-modules/stack-ibm-retrieval-augmented-generation/main/reference-architectures/rag-stack-without-app-and-alm.svg" + }, + "description": "Solution components" + } + ] + }, + "configuration": [ + { + "key": "prefix", + "type": "string", + "default_value": "dev", + "random_string" : { + "length": 4 + }, + "description": "The prefix to add to all resources that this solution creates (e.g `prod`, `test`, `dev`). Used to avoid name clashes in the target account when deploying this solution multiple times.", + "required": true, + "value_constraints": [ + { + "type": "regex", + "description": "Prefix must begin with a lowercase letter and may contain only lowercase letters, digits, and hyphens '-'. It must not end with a hyphen('-'), and cannot contain consecutive hyphens ('--'). It should not exceed 16 characters", + "value": "^$|^__NULL__$|^[a-z](?!.*--)(?:[a-z0-9-]{0,14}[a-z0-9])?$" + } + ] + }, + { + "key": "ibmcloud_api_key", + "type": "password", + "description": "The API Key used to provision all resources created in this solution.", + "required": true + }, + { + "key": "region", + "type": "string", + "default_value": "us-south", + "description": "The region in which all resources are deployed.", + "required": false, + "options": [ + { + "displayname": "Dallas (us-south)", + "value": "us-south" + }, + { + "displayname": "Frankfurt (eu-de)", + "value": "eu-de" + }, + { + "displayname": "London (eu-gb)", + "value": "eu-gb" + }, + { + "displayname": "Sydney (au-syd)", + "value": "au-syd" + }, + { + "displayname": "Tokyo (jp-tok)", + "value": "jp-tok" + }, + { + "displayname": "Toronto (ca-tor)", + "value": "ca-tor" + } + ] + }, + { + "key": "resource_group_name", + "type": "string", + "default_value": "rag-services", + "description": "The name of the resource group that is created by this solution. The actual name is prefixed with the value of the input 'prefix'. All resources created by this solution are deployed in this resource group.", + "required": false + }, + { + "key": "existing_resource_group_name", + "type": "string", + "default_value": "__NULL__", + "description": "The name of an existing resource group that is used by this solution, takes precedence over `resource_group_name`. Prefix is NOT used for existing resource group. All resources created by this solution are deployed in this resource group.", + "required": false, + "custom_config": { + "type": "resource_group", + "grouping": "deployment", + "original_grouping": "deployment", + "config_constraints": { + "identifier": "rg_name" + } + } + }, + { + "key": "watsonx_admin_api_key", + "type": "password", + "description": "The API key used to provision the watson project resources. If not set, the API key used to deploy the solution is used.", + "required": false + }, + { + "key": "secrets_manager_service_plan", + "type": "string", + "default_value": "trial", + "description": "The service/pricing plan to use when provisioning a new Secrets Manager instance. Only one trial instance is allowed per account.", + "required": false, + "options": [ + { + "displayname": "Trial", + "value": "trial" + }, + { + "displayname": "Standard", + "value": "standard" + } + ] + }, + { + "key": "key_protect_plan", + "type": "string", + "default_value": "tiered-pricing", + "description": "The service plan of the Key Protect instance that will be provisioned by this solution. Only used if not supplying `existing_kms_instance_crn`. [Learn more](https://cloud.ibm.com/docs/key-protect?topic=key-protect-pricing-plan).", + "required": false, + "options": [ + { + "displayname": "Standard", + "value": "tiered-pricing" + }, + { + "displayname": "Cross-region Resiliency", + "value": "cross-region-resiliency" + } + ] + }, + { + "key": "cloud_monitoring_plan", + "type": "string", + "default_value": "graduated-tier", + "description": "The IBM Cloud Monitoring plan to provision. Available values are `lite` and `graduated-tier`. [Learn more](https://cloud.ibm.com/docs/monitoring?topic=monitoring-service_plans)", + "required": false, + "options": [ + { + "displayname": "Lite", + "value": "lite" + }, + { + "displayname": "Graduated Tier", + "value": "graduated-tier" + } + ] + }, + { + "key": "scc_workload_protection_service_plan", + "type": "string", + "default_value": "graduated-tier", + "description": "The pricing plan to use for the IBM Cloud Security and Compliance Center Workload Protection instance.", + "required": false, + "options": [ + { + "displayname": "Graduated Tier", + "value": "graduated-tier" + }, + { + "displayname": "Free Trial", + "value": "free-trial" + } + ] + }, + { + "key": "secrets_manager_secret_groups", + "type": "array", + "default_value": "[\n {\n secret_group_name = \"General\"\n secret_group_description = \"A general purpose secrets group with an associated access group which has a secrets reader role\"\n create_access_group = true\n access_group_name = \"general-secrets-group-access-group\"\n access_group_roles = [\"SecretsReader\"]\n }\n ]", + "description": "Secret Manager secret group and access group configurations. If a prefix input variable is specified, it is added to the `access_group_name` value in the `-value` format. If you do not wish to create any groups, set the value to `[]`. [Learn more](https://github.com/terraform-ibm-modules/terraform-ibm-secrets-manager/tree/main/solutions/fully-configurable/provisioning_secrets_groups.md).", + "required": false, + "custom_config": { + "type": "code_editor", + "grouping": "deployment", + "original_grouping": "deployment" + } + }, + { + "key": "skip_secrets_manager_iam_auth_policy", + "display_name": "disable_secrets_manager_iam_credentials_engine", + "type": "boolean", + "default_value": false, + "description": "Whether to skip the creation of the IAM authorization policies required to enable the Secrets Manager IAM credentials engine. If set to false, policies will be created that grants the Secrets Manager instance 'Operator' access to the IAM identity service, and 'Groups Service Member Manage' access to the IAM groups service.", + "required": false + }, + { + "key": "enable_platform_metrics", + "type": "boolean", + "default_value": false, + "description": "Setting this to true will enable platform metrics for the Cloud Monitoring instance, including setting up a metrics routing route to the Cloud Monitoring instance. NOTE: You can configure 1 instance only of the IBM Cloud Monitoring service per region to collect platform metrics in that location.", + "required": false + }, + { + "key": "logs_routing_tenant_regions", + "type": "array", + "default_value": [], + "description": "Pass a list of regions to create a tenant that is targeted to the Cloud Logs instance created by this solution. To manage platform logs that are generated by IBM Cloud® services in a region of IBM Cloud, you must create a tenant in each region that you operate. Leave the list empty if you don't want to create any tenants.", + "required": false, + "custom_config": { + "grouping": "deployment", + "original_grouping": "deployment", + "config_constraints": { + "type": "string" + } + } + }, + { + "key": "event_notifications_email_list", + "type": "array", + "default_value": [], + "description": "List of emails to configure event notifications.", + "required": false, + "custom_config": { + "grouping": "deployment", + "original_grouping": "deployment", + "config_constraints": { + "type": "string" + } + } + }, + { + "key": "enterprise_id", + "type": "string", + "default_value": "__NULL__", + "description": "If the account is an enterprise account and you want to scan sub-accounts for compliance, this value should be set to the enterprise ID (this is different to the account ID).", + "required": false + }, + { + "key": "enterprise_account_group_ids_to_assign", + "type": "array", + "default_value": [ + "all" + ], + "description": "A list of enterprise account group IDs to assign the trusted profile template to in order for the accounts to be scanned for compliance. Supports passing the string 'all' in the list to assign to all account groups. Only applies if a value is being passed for `enterprise_id`.", + "required": false, + "custom_config": { + "grouping": "deployment", + "original_grouping": "deployment", + "config_constraints": { + "type": "string" + } + } + }, + { + "key": "enterprise_account_ids_to_assign", + "type": "array", + "default_value": [ + "all" + ], + "description": "A list of enterprise account IDs to assign the trusted profile template to in order for the accounts to be scanned. Supports passing the string 'all' in the list to assign to all accounts. Only applies if a value is being passed for `enterprise_id`.", + "required": false, + "custom_config": { + "grouping": "deployment", + "original_grouping": "deployment", + "config_constraints": { + "type": "string" + } + } + }, + { + "key": "existing_secrets_manager_crn", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing secret manager instance to use in this solution. If not set, a new secret manager instance is provisioned.", + "required": false + }, + { + "key": "existing_kms_instance_crn", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing KMS instance to use in this solution. If not set, a new KP instance is provisioned.", + "required": false + }, + { + "key": "existing_event_notifications_instance_crn", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing event notification instance to use in this solution. If not set, a new event notification instance is provisioned.", + "required": false + }, + { + "key": "existing_discovery_instance_crn", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing WatsonX SaaS discovery instance to use in this solution. If not set, a new discovery instance is provisioned depending on which plan is selected.", + "required": false + }, + { + "key": "existing_assistant_instance_crn", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing WatsonX SaaS assistant instance to use in this solution. If not set, a new assistant instance is provisioned depending on which plan is selected.", + "required": false + }, + { + "key": "existing_governance_instance_crn", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing WatsonX SaaS governance instance to use in this solution. If not set, a new governance instance is provisioned depending on which plan is selected.", + "required": false + }, + { + "key": "existing_studio_instance_crn", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing WatsonX SaaS studio instance to use in this solution. If not set, a new studio instance is provisioned depending on which plan is selected.", + "required": false + }, + { + "key": "existing_machine_learning_instance", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing WatsonX SaaS machine learning instance to use in this solution. If not set, a new machine learning instance is provisioned depending on which plan is selected.", + "required": false + }, + { + "key": "existing_elasticsearch_instance_crn", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing elasticsearch instance to use in this solution. If not set, a new elasticsearch instance is provisioned.", + "required": false + } + ], + "outputs": [ + { + "name": "cos_instance_crn", + "description": "Cloud Object Storage instance CRN" + }, + { + "name": "cos_instance_guid", + "description": "Cloud Object Storage instance GUID" + }, + { + "name": "cos_instance_name", + "description": "Cloud Object Storage instance name" + }, + { + "key": "elasticsearch_hostname", + "description": "The hostname of the Elasticsearch instance." + }, + { + "key": "elasticsearch_port", + "description": "The port of the Elasticsearch instance." + }, + { + "key": "elasticsearch_service_credentials_json", + "description": "The service credentials of the Elasticsearch instance." + }, + { + "key": "elasticsearch_crn", + "description": "The CRN of the Elasticsearch instance." + }, + { + "key": "watsonx_project_url", + "description": "The URL to the WatsonX project for the sample RAG application." + }, + { + "key": "watsonx_project_id", + "description": "The ID for the WatsonX project for the sample RAG application." + }, + { + "key": "watson_discovery_api_url", + "description": "The URL to the Watson Discovery API endpoint." + }, + { + "key": "watson_discovery_project_id", + "description": "The ID for the Watson Discovery project for the sample RAG application." + } + ], + "install_type": "fullstack" + }, + { + "label": "Standard (Deploy on Red Hat OpenShift)", + "name": "standard-without-app", + "index": 4, + "short_description": "Ideal for Red Hat OpenShift users seeking enterprise-grade flexibility without a sample app or pipeline included.", + "working_directory": "solutions/standard-without-sample-app", + "ignore_readme": true, + "dependency_version_2": true, + "iam_permissions": [ + { + "service_name": "iam-groups", + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Administrator" + ] + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Manager", + "crn:v1:bluemix:public:iam::::role:Editor" + ], + "service_name": "cloud-object-storage" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Administrator", + "crn:v1:bluemix:public:iam-identity::::serviceRole:UserApiKeyCreator" + ], + "service_name": "iam-identity" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Writer", + "crn:v1:bluemix:public:iam::::role:Administrator" + ], + "service_name": "atracker" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Manager", + "crn:v1:bluemix:public:iam::::role:Editor" + ], + "service_name": "kms" + }, + { + "service_name": "sysdig-secure", + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Manager", + "crn:v1:bluemix:public:iam::::role:Editor" + ] + }, + { + "service_name": "apprapp", + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Manager", + "crn:v1:bluemix:public:iam::::role:Editor" + ] + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Editor" + ], + "service_name": "pm-20" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Editor" + ], + "service_name": "data-science-experience" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Editor" + ], + "service_name": "aiopenscale" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Editor" + ], + "service_name": "conversation" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Editor" + ], + "service_name": "discovery" + }, + { + "service_name": "databases-for-elasticsearch", + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Editor" + ] + }, + { + "service_name": "event-notifications", + "role_crns": [ + "crn:v1:bluemix:public:iam::::serviceRole:Manager", + "crn:v1:bluemix:public:iam::::role:Editor" + ] + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Administrator" + ], + "service_name": "containers-kubernetes" + }, + { + "role_crns": [ + "crn:v1:bluemix:public:iam::::role:Administrator" + ], + "service_name": "is.vpc" + } + ], + "architecture": { + "features": [ + { + "title": " ", + "description": "Enables:" + }, + { + "title": "1. Red Hat OpenShift cluster for microservices workloads", + "description": " " + }, + { + "title": "2. Elasticsearch Platinum for building and storing sparse vectors, dense vector indexes or keyword search indexes", + "description": " " + }, + { + "title": "i. watsonx.ai use of Elasticsearch ELSER2 vector index for RAG", + "description": " " + }, + { + "title": "ii. watsonx Assistant Conversational Search with UI feature for uploading documents to create or use Elasticsearch ELSER2 vector index for RAG", + "description": " " + }, + { + "title": "3. watsonx.ai in-memory vector store for RAG trial and exploration", + "description": " " + }, + { + "title": "4. watsonx.ai UI to upload documents", + "description": " " + }, + { + "title": "5. watsonx.ai Prompt Lab for inferencing and Prompt Templates", + "description": " " + }, + { + "title": "6. watsonx Assistant Conversational Search with embedded LLM", + "description": " " + } + ], + "diagrams": [ + { + "diagram": { + "url": "https://raw.githubusercontent.com/terraform-ibm-modules/stack-ibm-retrieval-augmented-generation/main/reference-architectures/rag-pattern.svg", + "caption": "Reference architecture", + "type": "image/svg+xml", + "thumbnail_url": "https://raw.githubusercontent.com/terraform-ibm-modules/stack-ibm-retrieval-augmented-generation/main/reference-architectures/rag-pattern.svg" + }, + "description": "Reference architecture" + }, + { + "diagram": { + "url": "https://raw.githubusercontent.com/terraform-ibm-modules/stack-ibm-retrieval-augmented-generation/main/reference-architectures/rag-stack-without-app-and-alm.svg", + "caption": "Solution components", + "type": "image/svg+xml", + "thumbnail_url": "https://raw.githubusercontent.com/terraform-ibm-modules/stack-ibm-retrieval-augmented-generation/main/reference-architectures/rag-stack-without-app-and-alm.svg" + }, + "description": "Solution components" + } + ] + }, + "configuration": [ + { + "key": "prefix", + "type": "string", + "default_value": "dev", + "random_string" : { + "length": 4 + }, + "description": "The prefix to add to all resources that this solution creates (e.g `prod`, `test`, `dev`). Used to avoid name clashes in the target account when deploying this solution multiple times.", + "required": true, + "value_constraints": [ + { + "type": "regex", + "description": "Prefix must begin with a lowercase letter and may contain only lowercase letters, digits, and hyphens '-'. It must not end with a hyphen('-'), and cannot contain consecutive hyphens ('--'). It should not exceed 16 characters", + "value": "^$|^__NULL__$|^[a-z](?!.*--)(?:[a-z0-9-]{0,14}[a-z0-9])?$" + } + ] + }, + { + "key": "ibmcloud_api_key", + "type": "password", + "description": "The API Key used to provision all resources created in this solution.", + "required": true + }, + { + "key": "region", + "type": "string", + "default_value": "us-south", + "description": "The region in which all resources are deployed.", + "required": false, + "options": [ + { + "displayname": "Dallas (us-south)", + "value": "us-south" + }, + { + "displayname": "Frankfurt (eu-de)", + "value": "eu-de" + }, + { + "displayname": "London (eu-gb)", + "value": "eu-gb" + }, + { + "displayname": "Sydney (au-syd)", + "value": "au-syd" + }, + { + "displayname": "Tokyo (jp-tok)", + "value": "jp-tok" + }, + { + "displayname": "Toronto (ca-tor)", + "value": "ca-tor" + } + ] + }, + { + "key": "resource_group_name", + "type": "string", + "default_value": "rag-services", + "description": "The name of the resource group that is created by this solution. The actual name is prefixed with the value of the input 'prefix'. All resources created by this solution are deployed in this resource group.", + "required": false + }, + { + "key": "existing_resource_group_name", + "type": "string", + "default_value": "__NULL__", + "description": "The name of an existing resource group that is used by this solution, takes precedence over resource_group_name. Prefix is NOT used for existing resource group. All resources created by this solution are deployed in this resource group.", + "required": false, + "custom_config": { + "type": "resource_group", + "grouping": "deployment", + "original_grouping": "deployment", + "config_constraints": { + "identifier": "rg_name" + } + } + }, + { + "key": "watsonx_admin_api_key", + "type": "password", + "description": "The API key used to provision the watson project resources. If not set, the API key used to deploy the solution is used.", + "required": false + }, + { + "key": "secrets_manager_service_plan", + "type": "string", + "default_value": "standard", + "description": "The service/pricing plan to use when provisioning a new Secrets Manager instance. Only one trial instance is allowed per account.", + "required": false, + "options": [ + { + "displayname": "Trial", + "value": "trial" + }, + { + "displayname": "Standard", + "value": "standard" + } + ] + }, + { + "key": "key_protect_plan", + "type": "string", + "default_value": "tiered-pricing", + "description": "The service plan of the Key Protect instance that will be provisioned by this solution. Only used if not supplying `existing_kms_instance_crn`. [Learn more](https://cloud.ibm.com/docs/key-protect?topic=key-protect-pricing-plan).", + "required": false, + "options": [ + { + "displayname": "Standard", + "value": "tiered-pricing" + }, + { + "displayname": "Cross-region Resiliency", + "value": "cross-region-resiliency" + } + ] + }, + { + "key": "cloud_monitoring_plan", + "type": "string", + "default_value": "graduated-tier", + "description": "The IBM Cloud Monitoring plan to provision. Available values are `lite` and `graduated-tier`. [Learn more](https://cloud.ibm.com/docs/monitoring?topic=monitoring-service_plans)", + "required": false, + "options": [ + { + "displayname": "Lite", + "value": "lite" + }, + { + "displayname": "Graduated Tier", + "value": "graduated-tier" + } + ] + }, + { + "key": "scc_workload_protection_service_plan", + "type": "string", + "default_value": "graduated-tier", + "description": "The pricing plan to use for the IBM Cloud Security and Compliance Center Workload Protection instance.", + "required": false, + "options": [ + { + "displayname": "Graduated Tier", + "value": "graduated-tier" + }, + { + "displayname": "Free Trial", + "value": "free-trial" + } + ] + }, + { + "key": "secrets_manager_secret_groups", + "type": "array", + "default_value": "[\n {\n secret_group_name = \"General\"\n secret_group_description = \"A general purpose secrets group with an associated access group which has a secrets reader role\"\n create_access_group = true\n access_group_name = \"general-secrets-group-access-group\"\n access_group_roles = [\"SecretsReader\"]\n }\n ]", + "description": "Secret Manager secret group and access group configurations. If a prefix input variable is specified, it is added to the `access_group_name` value in the `-value` format. If you do not wish to create any groups, set the value to `[]`. [Learn more](https://github.com/terraform-ibm-modules/terraform-ibm-secrets-manager/tree/main/solutions/fully-configurable/provisioning_secrets_groups.md).", + "required": false, + "custom_config": { + "type": "code_editor", + "grouping": "deployment", + "original_grouping": "deployment" + } + }, + { + "key": "skip_secrets_manager_iam_auth_policy", + "display_name": "disable_secrets_manager_iam_credentials_engine", + "type": "boolean", + "default_value": false, + "description": "Whether to skip the creation of the IAM authorization policies required to enable the Secrets Manager IAM credentials engine. If set to false, policies will be created that grants the Secrets Manager instance 'Operator' access to the IAM identity service, and 'Groups Service Member Manage' access to the IAM groups service.", + "required": false + }, + { + "key": "enable_platform_metrics", + "type": "boolean", + "default_value": false, + "description": "Setting this to true will enable platform metrics for the Cloud Monitoring instance, including setting up a metrics routing route to the Cloud Monitoring instance. NOTE: You can configure 1 instance only of the IBM Cloud Monitoring service per region to collect platform metrics in that location.", + "required": false + }, + { + "key": "logs_routing_tenant_regions", + "type": "array", + "default_value": [], + "description": "Pass a list of regions to create a tenant that is targeted to the Cloud Logs instance created by this solution. To manage platform logs that are generated by IBM Cloud® services in a region of IBM Cloud, you must create a tenant in each region that you operate. Leave the list empty if you don't want to create any tenants.", + "required": false, + "custom_config": { + "grouping": "deployment", + "original_grouping": "deployment", + "config_constraints": { + "type": "string" + } + } + }, + { + "key": "event_notifications_email_list", + "type": "array", + "default_value": [], + "description": "List of emails to configure event notifications.", + "required": false, + "custom_config": { + "grouping": "deployment", + "original_grouping": "deployment", + "config_constraints": { + "type": "string" + } + } + }, + { + "key": "enterprise_id", + "type": "string", + "default_value": "__NULL__", + "description": "If the account is an enterprise account and you want to scan sub-accounts for compliance, this value should be set to the enterprise ID (this is different to the account ID).", + "required": false + }, + { + "key": "enterprise_account_group_ids_to_assign", + "type": "array", + "default_value": [ + "all" + ], + "description": "A list of enterprise account group IDs to assign the trusted profile template to in order for the accounts to be scanned for compliance. Supports passing the string 'all' in the list to assign to all account groups. Only applies if a value is being passed for `enterprise_id`.", + "required": false, + "custom_config": { + "grouping": "deployment", + "original_grouping": "deployment", + "config_constraints": { + "type": "string" + } + } + }, + { + "key": "enterprise_account_ids_to_assign", + "type": "array", + "default_value": [ + "all" + ], + "description": "A list of enterprise account IDs to assign the trusted profile template to in order for the accounts to be scanned. Supports passing the string 'all' in the list to assign to all accounts. Only applies if a value is being passed for `enterprise_id`.", + "required": false, + "custom_config": { + "grouping": "deployment", + "original_grouping": "deployment", + "config_constraints": { + "type": "string" + } + } + }, + { + "key": "enterprise_id", + "type": "string", + "default_value": "__NULL__", + "description": "If the account is an enterprise account and you want to scan sub-accounts for compliance, this value should be set to the enterprise ID (this is different to the account ID).", + "required": false + }, + { + "key": "enterprise_account_group_ids_to_assign", + "type": "array", + "default_value": [ + "all" + ], + "description": "A list of enterprise account group IDs to assign the trusted profile template to in order for the accounts to be scanned for compliance. Supports passing the string 'all' in the list to assign to all account groups. Only applies if a value is being passed for `enterprise_id`.", + "required": false, + "custom_config": { + "grouping": "deployment", + "original_grouping": "deployment", + "config_constraints": { + "type": "string" + } + } + }, + { + "key": "enterprise_account_ids_to_assign", + "type": "array", + "default_value": [ + "all" + ], + "description": "A list of enterprise account IDs to assign the trusted profile template to in order for the accounts to be scanned. Supports passing the string 'all' in the list to assign to all accounts. Only applies if a value is being passed for `enterprise_id`.", + "required": false, + "custom_config": { + "grouping": "deployment", + "original_grouping": "deployment", + "config_constraints": { + "type": "string" + } + } + }, + { + "key": "sample_app_git_url", + "type": "string", + "default_value": "https://github.com/IBM/gen-ai-rag-watsonx-sample-application", + "description": "The URL to the public git repository containing the sample RAG application code.", + "required": false + }, + { + "key": "existing_secrets_manager_crn", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing secret manager instance to use in this solution. If not set, a new secret manager instance is provisioned.", + "required": false + }, + { + "key": "existing_kms_instance_crn", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing KMS instance to use in this solution. If not set, a new KP instance is provisioned.", + "required": false + }, + { + "key": "existing_event_notifications_instance_crn", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing event notification instance to use in this solution. If not set, a new event notification instance is provisioned.", + "required": false + }, + { + "key": "existing_discovery_instance_crn", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing WatsonX SaaS discovery instance to use in this solution. If not set, a new discovery instance is provisioned depending on which plan is selected.", + "required": false + }, + { + "key": "existing_assistant_instance_crn", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing WatsonX SaaS assistant instance to use in this solution. If not set, a new assistant instance is provisioned depending on which plan is selected.", + "required": false + }, + { + "key": "existing_governance_instance_crn", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing WatsonX SaaS governance instance to use in this solution. If not set, a new governance instance is provisioned depending on which plan is selected.", + "required": false + }, + { + "key": "existing_studio_instance_crn", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing WatsonX SaaS studio instance to use in this solution. If not set, a new studio instance is provisioned depending on which plan is selected.", + "required": false + }, + { + "key": "existing_machine_learning_instance", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing WatsonX SaaS machine learning instance to use in this solution. If not set, a new machine learning instance is provisioned depending on which plan is selected.", + "required": false + }, + { + "key": "existing_elasticsearch_instance_crn", + "type": "string", + "default_value": "__NULL__", + "description": "The CRN of an existing elasticsearch instance to use in this solution. If not set, a new elasticsearch instance is provisioned.", + "required": false + } + ], + "outputs": [ + { + "name": "cos_instance_crn", + "description": "Cloud Object Storage instance CRN" + }, + { + "name": "cos_instance_guid", + "description": "Cloud Object Storage instance GUID" + }, + { + "name": "cos_instance_name", + "description": "Cloud Object Storage instance name" + }, + { + "key": "elasticsearch_hostname", + "description": "The hostname of the Elasticsearch instance." + }, + { + "key": "elasticsearch_port", + "description": "The port of the Elasticsearch instance." + }, + { + "key": "elasticsearch_service_credentials_json", + "description": "The service credentials of the Elasticsearch instance." + }, + { + "key": "elasticsearch_crn", + "description": "The CRN of the Elasticsearch instance." + }, + { + "key": "watsonx_project_url", + "description": "The URL to the WatsonX project for the sample RAG application." + }, + { + "key": "watsonx_project_id", + "description": "The ID for the WatsonX project for the sample RAG application." + }, + { + "key": "watson_discovery_api_url", + "description": "The URL to the Watson Discovery API endpoint." + }, + { + "key": "watson_discovery_project_id", + "description": "The ID for the Watson Discovery project for the sample RAG application." + }, + { + "key": "kms_instance_crn", + "description": "The CRN of the Hyper Protect Crypto Service instance or Key Protect instance" + }, + { + "key": "kms_private_endpoint", + "description": "Key Management Service instance private endpoint URL." + }, + { + "key": "kms_public_endpoint", + "description": "Key Management Service instance public endpoint URL." + }, + { + "key": "event_notifications_instance_crn", + "description": "Event Notifications crn" + }, + { + "key": "event_notifications_instance_name", + "description": "Event Notifications name" + }, + { + "key": "event_notifications_instance_guid", + "description": "Event Notifications guid" + }, + { + "key": "cloud_logs_for_logging_crn", + "description": "The id of the provisioned IBM Cloud Logs for logging instance." + }, + { + "key": "cloud_logs_for_logging_guid", + "description": "The guid of the provisioned IBM Cloud Logs for logging instance." + }, + { + "key": "cloud_logs_for_activity_tracking_crn", + "description": "The id of the provisioned IBM Cloud Logs for activity tracking instance." + }, + { + "key": "cloud_logs_for_activity_tracking_guid", + "description": "The guid of the provisioned IBM Cloud Logs for activity tracking instance." + }, + { + "key": "cloud_monitoring_crn", + "description": "The id of the provisioned IBM cloud monitoring instance." + }, + { + "key": "cloud_monitoring_guid", + "description": "The guid of the provisioned IBM cloud monitoring instance." + }, + { + "key": "secrets_manager_crn", + "description": "CRN of the Secrets Manager instance" + }, + { + "key": "secrets_manager_guid", + "description": "GUID of Secrets Manager instance" + }, + { + "key": "secrets_manager_name", + "description": "Name of the Secrets Manager instance" + }, + { + "key": "app_config_crn", + "description": "CRN of the App Configuration instance" + }, + { + "key": "app_config_guid", + "description": "GUID of the App Configuration instance" + }, + { + "key": "scc_workload_protection_crn", + "description": "SCC Workload Protection instance CRN" + }, + { + "key": "scc_workload_protection_guid", + "description": "SCC Workload Protection instance ID" + }, + { + "key": "watson_discovery_crn", + "description": "The CRN of the Watson Discovery instance." + }, + { + "key": "watson_discovery_dashboard_url", + "description": "The dashboard URL of the Watson Discovery instance." + }, + { + "key": "watson_machine_learning_crn", + "description": "The CRN of the Watson Machine Learning instance." + }, + { + "key": "watson_machine_learning_dashboard_url", + "description": "The dashboard URL of the Watson Machine Learning instance." + }, + { + "key": "watson_machine_learning_guid", + "description": "The GUID of the Watson Machine Learning instance." + }, + { + "key": "watson_studio_crn", + "description": "The CRN of the Watson Studio instance." + }, + { + "key": "watson_studio_dashboard_url", + "description": "The dashboard URL of the Watson Studio instance." + }, + { + "key": "watson_studio_guid", + "description": "The GUID of the Watson Studio instance." + }, + { + "key": "watsonx_assistant_crn", + "description": "The CRN of the watsonx Assistant instance." + }, + { + "key": "watsonx_assistant_dashboard_url", + "description": "The dashboard URL of the watsonx Assistant instance." + }, + { + "key": "watsonx_data_crn", + "description": "The CRN of the watsonx.data instance." + }, + { + "key": "watsonx_data_dashboard_url", + "description": "The dashboard URL of the watsonx.data instance." + }, + { + "key": "watsonx_data_guid", + "description": "The GUID of the watsonx.data instance." + }, + { + "key": "watson_discovery_guid", + "description": "The GUID of the Watson Discovery instance." + }, + { + "key": "workload_cluster_name", + "description": "The name of the workload cluster. If the cluster name does not exactly match the prefix-workload-cluster pattern it will be null." + }, + { + "key": "workload_cluster_id", + "description": "The id of the workload cluster. If the cluster name does not exactly match the prefix-workload-cluster pattern it will be null." + }, + { + "key": "workload_cluster_private_service_endpoint_url", + "description": "The private service endpoint URL of the Workload cluster, if not then null." + }, + { + "key": "workload_cluster_public_service_endpoint_url", + "description": "The public service endpoint URL of the Workload cluster, if not then null." + } + ], + "install_type": "fullstack" } ] } diff --git a/reference-architectures/rag-stack-without-app-and-alm.svg b/reference-architectures/rag-stack-without-app-and-alm.svg new file mode 100644 index 00000000..e8dadded --- /dev/null +++ b/reference-architectures/rag-stack-without-app-and-alm.svg @@ -0,0 +1,4 @@ + + + +
Account Structure
watsonx.ai
watsonx.data
watsonx.governance
Watson Discovery
watsonx Assistant Orchestrate 
Security and Compliance Center -
Workload Protection
Key Protect
Secrets Manager
Object Storage
Monitoring
Logging
Event Notifications
Code Engine
Red Hat Openshift (ROKS)
Elasticsearch
App Configuration
ibm-cloud--key-protect
\ No newline at end of file diff --git a/solutions/basic-without-sample-app/catalogValidationValues.json.template b/solutions/basic-without-sample-app/catalogValidationValues.json.template new file mode 100644 index 00000000..2d3d4bf2 --- /dev/null +++ b/solutions/basic-without-sample-app/catalogValidationValues.json.template @@ -0,0 +1,4 @@ +{ + "ibmcloud_api_key": $VALIDATION_APIKEY, + "prefix": $PREFIX +} diff --git a/solutions/basic-without-sample-app/stack_definition.json b/solutions/basic-without-sample-app/stack_definition.json new file mode 100644 index 00000000..5ab0738a --- /dev/null +++ b/solutions/basic-without-sample-app/stack_definition.json @@ -0,0 +1,973 @@ +{ + "inputs": [ + { + "name": "prefix", + "required": true, + "type": "string", + "hidden": false + }, + { + "name": "secrets_manager_service_plan", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "key_protect_plan", + "required": false, + "type": "string", + "hidden": false, + "custom_config": {} + }, + { + "name": "cloud_monitoring_plan", + "required": false, + "type": "string", + "hidden": false, + "custom_config": {} + }, + { + "name": "secrets_manager_secret_groups", + "required": false, + "type": "array", + "hidden": false, + "custom_config": {} + }, + { + "name": "skip_secrets_manager_iam_auth_policy", + "required": false, + "type": "boolean", + "hidden": false + }, + { + "name": "watsonx_admin_api_key", + "required": false, + "type": "password", + "hidden": false + }, + { + "name": "resource_group_name", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "existing_resource_group_name", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "region", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "existing_secrets_manager_crn", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "event_notifications_email_list", + "required": false, + "type": "array", + "hidden": false, + "custom_config": {} + }, + { + "name": "existing_kms_instance_crn", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "existing_event_notifications_instance_crn", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "enable_platform_metrics", + "required": false, + "type": "boolean", + "hidden": false + }, + { + "name": "logs_routing_tenant_regions", + "required": false, + "type": "array", + "hidden": false + }, + { + "name": "scc_workload_protection_service_plan", + "required": false, + "type": "string", + "hidden": false, + "custom_config": {} + }, + { + "name": "enterprise_id", + "required": false, + "type": "string", + "hidden": false, + "custom_config": {} + }, + { + "name": "enterprise_account_group_ids_to_assign", + "required": false, + "type": "array", + "hidden": false, + "custom_config": {} + }, + { + "name": "enterprise_account_ids_to_assign", + "required": false, + "type": "array", + "hidden": false, + "custom_config": {} + }, + { + "name": "existing_discovery_instance_crn", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "existing_assistant_instance_crn", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "existing_governance_instance_crn", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "existing_studio_instance_crn", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "existing_machine_learning_instance", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "existing_elasticsearch_instance_crn", + "required": false, + "type": "string", + "hidden": false + } + ], + "members": [ + { + "name": "1 - Account Configuration", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.0e456e60-9ca9-4e9e-8f28-6265f8a12f97-global", + "inputs": [ + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "single_resource_group_name", + "value": "ref:../../inputs/existing_resource_group_name" + }, + { + "name": "security_resource_group_name", + "value": "ref:../../inputs/resource_group_name" + }, + { + "name": "audit_resource_group_name", + "value": "ref:../../inputs/resource_group_name" + }, + { + "name": "observability_resource_group_name", + "value": "ref:../../inputs/resource_group_name" + }, + { + "name": "management_resource_group_name", + "value": "ref:../../inputs/resource_group_name" + }, + { + "name": "workload_resource_group_name", + "value": "ref:../../inputs/resource_group_name" + }, + { + "name": "edge_resource_group_name", + "value": "ref:../../inputs/resource_group_name" + }, + { + "name": "provision_trusted_profile_projects", + "value": false + } + ] + }, + { + "name": "2a - Essential Security - Encryption Key Management", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.fbb4dc92-6318-4f20-afc9-65cc586ac241-global", + "inputs": [ + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/security_resource_group_name" + }, + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "existing_kms_instance_crn", + "value": "ref:../../inputs/existing_kms_instance_crn" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "key_protect_plan", + "value": "ref:../../inputs/key_protect_plan" + } + ] + }, + { + "name": "2b - Essential Security - Cloud Object Storage", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.6433c58f-9e1b-4520-ae52-5ab4f4559cf9-global", + "inputs": [ + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/observability_resource_group_name" + } + ] + }, + { + "name": "2c - Essential Security - Cloud Monitoring", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.4c21c293-3f7d-454b-97bc-9808aee58bfe-global", + "inputs": [ + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/observability_resource_group_name" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "enable_platform_metrics", + "value": "ref:../../inputs/enable_platform_metrics" + }, + { + "name": "enable_metrics_routing_to_cloud_monitoring", + "value": "ref:../../inputs/enable_platform_metrics" + }, + { + "name": "cloud_monitoring_plan", + "value": "ref:../../inputs/cloud_monitoring_plan" + } + ] + }, + { + "name": "2d - Workload - Code Engine Project", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.8f2dddee-2211-4330-bd2d-74c84a72601d-global", + "inputs": [ + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/workload_resource_group_name" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "code_engine_project_name", + "value": "Generative_AI_Basic_Project" + }, + { + "name": "region", + "value": "ref:../../inputs/region" + } + ] + }, + { + "name": "2e - Workload - Container Registry", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.4ddd4d03-09ea-45c0-a591-53dbbed95eeb-global", + "inputs": [ + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/workload_resource_group_name" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "namespace_name", + "value": "ref:../../inputs/region" + }, + { + "name": "upgrade_to_standard_plan", + "value": true + } + ] + }, + { + "name": "3a - Essential Security - Event Notifications", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.29f017cd-7a6f-45cc-a4ed-5f23505380bf-global", + "inputs": [ + { + "name": "existing_cos_instance_crn", + "value": "ref:../2b - Essential Security - Cloud Object Storage/outputs/cos_instance_id" + }, + { + "name": "enable_collecting_failed_events", + "value": true + }, + { + "name": "kms_encryption_enabled", + "value": true + }, + { + "name": "kms_endpoint_url", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_private_endpoint" + }, + { + "name": "existing_kms_instance_crn", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "kms_endpoint_type", + "value": "private" + }, + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/observability_resource_group_name" + }, + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "existing_event_notifications_instance_crn", + "value": "ref:../../inputs/existing_event_notifications_instance_crn" + }, + { + "name": "existing_monitoring_crn", + "value": "ref:../2c - Essential Security - Cloud Monitoring/outputs/cloud_monitoring_crn" + } + ] + }, + { + "name": "3b - Gen AI - WatsonX SaaS services", + "version_locator": "1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc.63f85fe2-082f-44fa-add2-6a0f93d130e8-global", + "inputs": [ + { + "name": "watsonx_admin_api_key", + "value": "ref:../../inputs/watsonx_admin_api_key" + }, + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/workload_resource_group_name" + }, + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "watson_machine_learning_plan", + "value": "v2-standard" + }, + { + "name": "existing_machine_learning_instance", + "value": "ref:../../inputs/existing_machine_learning_instance" + }, + { + "name": "watson_studio_plan", + "value": "professional-v1" + }, + { + "name": "existing_studio_instance", + "value": "ref:../../inputs/existing_studio_instance_crn" + }, + { + "name": "watson_discovery_plan", + "value": "do not install" + }, + { + "name": "existing_discovery_instance", + "value": "ref:../../inputs/existing_discovery_instance_crn" + }, + { + "name": "watsonx_assistant_plan", + "value": "plus" + }, + { + "name": "existing_assistant_instance", + "value": "ref:../../inputs/existing_assistant_instance_crn" + }, + { + "name": "watsonx_governance_plan", + "value": "do not install" + }, + { + "name": "existing_governance_instance", + "value": "ref:../../inputs/existing_governance_instance_crn" + }, + { + "name": "existing_cos_instance_crn", + "value": "ref:../2b - Essential Security - Cloud Object Storage/outputs/cos_instance_crn" + }, + { + "name": "cos_kms_crn", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "enable_cos_kms_encryption", + "value": true + } + ] + }, + { + "name": "4a - Essential Security - Cloud Logs for logging", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.b6bf9a7b-6ac3-4821-b3e4-f274293603f3-global", + "inputs": [ + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "existing_kms_instance_crn", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "kms_encryption_enabled_buckets", + "value": true + }, + { + "name": "kms_endpoint_type", + "value": "private" + }, + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/observability_resource_group_name" + }, + { + "name": "existing_cos_instance_crn", + "value": "ref:../2b - Essential Security - Cloud Object Storage/outputs/cos_instance_crn" + }, + { + "name": "existing_monitoring_crn", + "value": "ref:../2c - Essential Security - Cloud Monitoring/outputs/cloud_monitoring_crn" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "existing_event_notifications_instances", + "value": "ref:../3a - Essential Security - Event Notifications/outputs/crn_list_object" + }, + { + "name": "logs_routing_tenant_regions", + "value": "ref:../../inputs/logs_routing_tenant_regions" + } + ] + }, + { + "name": "4b - Essential Security - App Configuration", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.bff2dc4d-9e19-4b2c-8890-4cda020ce39e-global", + "inputs": [ + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/audit_resource_group_name" + }, + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "app_config_service_plan", + "value": "enterprise" + }, + { + "name": "enable_config_aggregator", + "value": true + }, + { + "name": "config_aggregator_enterprise_id", + "value": "ref:../../inputs/enterprise_id" + }, + { + "name": "config_aggregator_enterprise_account_group_ids_to_assign", + "value": "ref:../../inputs/enterprise_account_group_ids_to_assign" + }, + { + "name": "config_aggregator_enterprise_account_ids_to_assign", + "value": "ref:../../inputs/enterprise_account_ids_to_assign" + }, + { + "name": "kms_encryption_enabled", + "value": true + }, + { + "name": "existing_kms_instance_crn", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "kms_endpoint_url", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_private_endpoint" + }, + { + "name": "enable_event_notifications", + "value": true + }, + { + "name": "existing_event_notifications_instance_crn", + "value": "ref:../3a - Essential Security - Event Notifications/outputs/crn" + }, + { + "name": "event_notifications_endpoint_url", + "value": "ref:../3a - Essential Security - Event Notifications/outputs/event_notifications_private_endpoint" + }, + { + "name": "event_notifications_email_list", + "value": "ref:../../inputs/event_notifications_email_list" + } + ] + }, + { + "name": "4c - Essential Security - Secrets Manager", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.c7ba4599-f65a-4a9b-bd6b-120e52947652-global", + "inputs": [ + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/security_resource_group_name" + }, + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "existing_kms_instance_crn", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "kms_encryption_enabled", + "value": true + }, + { + "name": "existing_secrets_manager_crn", + "value": "ref:../../inputs/existing_secrets_manager_crn" + }, + { + "name": "skip_secrets_manager_iam_auth_policy", + "value": "ref:../../inputs/skip_secrets_manager_iam_auth_policy" + }, + { + "name": "secret_groups", + "value": "ref:../../inputs/secrets_manager_secret_groups" + }, + { + "name": "service_plan", + "value": "ref:../../inputs/secrets_manager_service_plan" + }, + { + "name": "existing_event_notifications_instance_crn", + "value": "ref:../3a - Essential Security - Event Notifications/outputs/crn" + } + ] + }, + { + "name": "4d - Essential Security - Cloud Logs for activity tracking", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.b6bf9a7b-6ac3-4821-b3e4-f274293603f3-global", + "inputs": [ + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "existing_kms_instance_crn", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "kms_encryption_enabled_buckets", + "value": true + }, + { + "name": "kms_endpoint_type", + "value": "private" + }, + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/observability_resource_group_name" + }, + { + "name": "existing_cos_instance_crn", + "value": "ref:../2b - Essential Security - Cloud Object Storage/outputs/cos_instance_crn" + }, + { + "name": "existing_monitoring_crn", + "value": "ref:../2c - Essential Security - Cloud Monitoring/outputs/cloud_monitoring_crn" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "existing_event_notifications_instances", + "value": "ref:../3a - Essential Security - Event Notifications/outputs/crn_list_object" + }, + { + "name": "logs_routing_tenant_regions", + "value": "ref:../../inputs/logs_routing_tenant_regions" + }, + { + "name": "cloud_logs_data_cos_bucket_name", + "value": "at-cloud-logs-logs-bucket" + }, + { + "name": "cloud_logs_metrics_cos_bucket_name", + "value": "at-cloud-logs-metrics-bucket" + }, + { + "name": "cloud_logs_instance_name", + "value": "at-cloud-logs" + } + ] + }, + { + "name": "5a - Essential Security - Security and Compliance Center Workload Protection", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.e543e47d-1b78-4415-963c-3c59fcf5ef2b-global", + "inputs": [ + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/audit_resource_group_name" + }, + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "scc_workload_protection_service_plan", + "value": "ref:../../inputs/scc_workload_protection_service_plan" + }, + { + "name": "cspm_enabled", + "value": true + }, + { + "name": "app_config_crn", + "value": "ref:../4b - Essential Security - App Configuration/outputs/app_config_crn" + }, + { + "name": "existing_monitoring_crn", + "value": "ref:../2c - Essential Security - Cloud Monitoring/outputs/cloud_monitoring_crn" + } + ] + }, + { + "name": "5b - Gen AI - Databases for Elasticsearch", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.2a25caea-0f63-4911-a5fb-c1ef792edea0-global", + "inputs": [ + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/workload_resource_group_name" + }, + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "deletion_protection", + "value": false + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "plan", + "value": "enterprise" + }, + { + "name": "elasticsearch_version", + "value": "8.15" + }, + { + "name": "kms_encryption_enabled", + "value": true + }, + { + "name": "existing_kms_instance_crn", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "kms_endpoint_type", + "value": "private" + }, + { + "name": "member_host_flavor", + "value": "multitenant" + }, + { + "name": "member_cpu_count", + "value": 0 + }, + { + "name": "service_credential_names", + "value": { + "elastic_db_admin": "Administrator", + "wxasst_db_user": "Editor" + } + }, + { + "name": "existing_elasticsearch_instance_crn", + "value": "ref:../../inputs/existing_elasticsearch_instance_crn" + }, + { + "name": "existing_secrets_manager_instance_crn", + "value": "ref:../4c - Essential Security - Secrets Manager/outputs/secrets_manager_crn" + } + ] + }, + { + "name": "5c - Essential Security - Activity Tracker Event Routing", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.1d61413e-c149-4a3a-bd6d-9207e0c60385-global", + "inputs": [ + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "existing_kms_instance_crn", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "kms_encryption_enabled_buckets", + "value": true + }, + { + "name": "kms_endpoint_type", + "value": "private" + }, + { + "name": "existing_cos_instance_crn", + "value": "ref:../2b - Essential Security - Cloud Object Storage/outputs/cos_instance_crn" + }, + { + "name": "existing_cloud_logs_instance_crn", + "value": "ref:../4d - Essential Security - Cloud Logs for activity tracking/outputs/cloud_logs_crn" + }, + { + "name": "enable_activity_tracker_event_routing_to_cos_bucket", + "value": true + } + ] + } + ], + "outputs": [ + { + "name": "kms_instance_crn", + "value": "ref:./members/2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "kms_private_endpoint", + "value": "ref:./members/2a - Essential Security - Encryption Key Management/outputs/kms_private_endpoint" + }, + { + "name": "kms_public_endpoint", + "value": "ref:./members/2a - Essential Security - Encryption Key Management/outputs/kms_public_endpoint" + }, + { + "name": "cos_instance_crn", + "value": "ref:./members/2b - Essential Security - Cloud Object Storage/outputs/cos_instance_crn" + }, + { + "name": "cos_instance_guid", + "value": "ref:./members/2b - Essential Security - Cloud Object Storage/outputs/cos_instance_guid" + }, + { + "name": "cos_instance_name", + "value": "ref:./members/2b - Essential Security - Cloud Object Storage/outputs/cos_instance_name" + }, + { + "name": "cloud_monitoring_crn", + "value": "ref:./members/2c - Essential Security - Cloud Monitoring/outputs/cloud_monitoring_crn" + }, + { + "name": "cloud_monitoring_guid", + "value": "ref:./members/2c - Essential Security - Cloud Monitoring/outputs/cloud_monitoring_guid" + }, + { + "name": "event_notifications_instance_crn", + "value": "ref:./members/3a - Essential Security - Event Notifications/outputs/crn" + }, + { + "name": "event_notifications_instance_name", + "value": "ref:./members/3a - Essential Security - Event Notifications/outputs/event_notification_instance_name" + }, + { + "name": "event_notifications_instance_guid", + "value": "ref:./members/3a - Essential Security - Event Notifications/outputs/guid" + }, + { + "name": "watsonx_project_url", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watsonx_project_url" + }, + { + "name": "watsonx_project_id", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watsonx_project_id" + }, + { + "name": "watson_discovery_crn", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_discovery_crn" + }, + { + "name": "watson_discovery_dashboard_url", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_discovery_dashboard_url" + }, + { + "name": "watson_machine_learning_crn", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_machine_learning_crn" + }, + { + "name": "watson_machine_learning_dashboard_url", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_machine_learning_dashboard_url" + }, + { + "name": "watson_machine_learning_guid", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_machine_learning_guid" + }, + { + "name": "watson_studio_crn", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_studio_crn" + }, + { + "name": "watson_studio_dashboard_url", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_studio_dashboard_url" + }, + { + "name": "watson_studio_guid", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_studio_guid" + }, + { + "name": "watsonx_assistant_crn", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watsonx_assistant_crn" + }, + { + "name": "watsonx_assistant_dashboard_url", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watsonx_assistant_dashboard_url" + }, + { + "name": "watsonx_data_crn", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watsonx_data_crn" + }, + { + "name": "watsonx_data_dashboard_url", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watsonx_data_dashboard_url" + }, + { + "name": "watsonx_data_guid", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watsonx_data_guid" + }, + { + "name": "watson_discovery_guid", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_discovery_guid" + }, + { + "name": "cloud_logs_for_logging_crn", + "value": "ref:./members/4a - Essential Security - Cloud Logs for logging/outputs/cloud_logs_crn" + }, + { + "name": "cloud_logs_for_logging_guid", + "value": "ref:./members/4a - Essential Security - Cloud Logs for logging/outputs/cloud_logs_guid" + }, + { + "name": "app_config_crn", + "value": "ref:./members/4b - Essential Security - App Configuration/outputs/app_config_crn" + }, + { + "name": "app_config_guid", + "value": "ref:./members/4b - Essential Security - App Configuration/outputs/app_config_guid" + }, + { + "name": "secrets_manager_crn", + "value": "ref:./members/4c - Essential Security - Secrets Manager/outputs/secrets_manager_crn" + }, + { + "name": "secrets_manager_guid", + "value": "ref:./members/4c - Essential Security - Secrets Manager/outputs/secrets_manager_guid" + }, + { + "name": "secrets_manager_name", + "value": "ref:./members/4c - Essential Security - Secrets Manager/outputs/secrets_manager_name" + }, + { + "name": "cloud_logs_for_activity_tracking_crn", + "value": "ref:./members/4d - Essential Security - Cloud Logs for activity tracking/outputs/cloud_logs_crn" + }, + { + "name": "cloud_logs_for_activity_tracking_guid", + "value": "ref:./members/4d - Essential Security - Cloud Logs for activity tracking/outputs/cloud_logs_guid" + }, + { + "name": "scc_workload_protection_crn", + "value": "ref:./members/5a - Essential Security - Security and Compliance Center Workload Protection/outputs/scc_workload_protection_crn" + }, + { + "name": "scc_workload_protection_id", + "value": "ref:./members/5a - Essential Security - Security and Compliance Center Workload Protection/outputs/scc_workload_protection_id" + }, + { + "name": "elasticsearch_hostname", + "value": "ref:./members/5b - Gen AI - Databases for Elasticsearch/outputs/hostname" + }, + { + "name": "elasticsearch_port", + "value": "ref:./members/5b - Gen AI - Databases for Elasticsearch/outputs/port" + }, + { + "name": "elasticsearch_service_credentials_json", + "value": "ref:./members/5b - Gen AI - Databases for Elasticsearch/outputs/service_credentials_json" + }, + { + "name": "elasticsearch_crn", + "value": "ref:./members/5b - Gen AI - Databases for Elasticsearch/outputs/crn" + } + ] +} diff --git a/solutions/standard-without-sample-app/catalogValidationValues.json.template b/solutions/standard-without-sample-app/catalogValidationValues.json.template new file mode 100644 index 00000000..2d3d4bf2 --- /dev/null +++ b/solutions/standard-without-sample-app/catalogValidationValues.json.template @@ -0,0 +1,4 @@ +{ + "ibmcloud_api_key": $VALIDATION_APIKEY, + "prefix": $PREFIX +} diff --git a/solutions/standard-without-sample-app/stack_definition.json b/solutions/standard-without-sample-app/stack_definition.json new file mode 100644 index 00000000..9445415c --- /dev/null +++ b/solutions/standard-without-sample-app/stack_definition.json @@ -0,0 +1,1061 @@ +{ + "inputs": [ + { + "name": "prefix", + "required": true, + "type": "string", + "hidden": false + }, + { + "name": "secrets_manager_service_plan", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "key_protect_plan", + "required": false, + "type": "string", + "hidden": false, + "custom_config": {} + }, + { + "name": "cloud_monitoring_plan", + "required": false, + "type": "string", + "hidden": false, + "custom_config": {} + }, + { + "name": "skip_secrets_manager_iam_auth_policy", + "required": false, + "type": "boolean", + "hidden": false + }, + { + "name": "watsonx_admin_api_key", + "required": false, + "type": "password", + "hidden": false + }, + { + "name": "resource_group_name", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "existing_resource_group_name", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "region", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "secrets_manager_secret_groups", + "required": false, + "type": "array", + "hidden": false, + "custom_config": {} + }, + { + "name": "existing_secrets_manager_crn", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "event_notifications_email_list", + "required": false, + "type": "array", + "hidden": false, + "custom_config": {} + }, + { + "name": "existing_kms_instance_crn", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "existing_event_notifications_instance_crn", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "enable_platform_metrics", + "required": false, + "type": "boolean", + "hidden": false + }, + { + "name": "logs_routing_tenant_regions", + "required": false, + "type": "array", + "hidden": false + }, + { + "name": "scc_workload_protection_service_plan", + "required": false, + "type": "string", + "hidden": false, + "custom_config": {} + }, + { + "name": "enterprise_id", + "required": false, + "type": "string", + "hidden": false, + "custom_config": {} + }, + { + "name": "enterprise_account_group_ids_to_assign", + "required": false, + "type": "array", + "hidden": false, + "custom_config": {} + }, + { + "name": "enterprise_account_ids_to_assign", + "required": false, + "type": "array", + "hidden": false, + "custom_config": {} + }, + { + "name": "existing_discovery_instance_crn", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "existing_assistant_instance_crn", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "existing_governance_instance_crn", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "existing_studio_instance_crn", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "existing_machine_learning_instance", + "required": false, + "type": "string", + "hidden": false + }, + { + "name": "existing_elasticsearch_instance_crn", + "required": false, + "type": "string", + "hidden": false + } + ], + "members": [ + { + "name": "1 - Account Configuration", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.0e456e60-9ca9-4e9e-8f28-6265f8a12f97-global", + "inputs": [ + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "single_resource_group_name", + "value": "ref:../../inputs/existing_resource_group_name" + }, + { + "name": "security_resource_group_name", + "value": "ref:../../inputs/resource_group_name" + }, + { + "name": "audit_resource_group_name", + "value": "ref:../../inputs/resource_group_name" + }, + { + "name": "observability_resource_group_name", + "value": "ref:../../inputs/resource_group_name" + }, + { + "name": "management_resource_group_name", + "value": "ref:../../inputs/resource_group_name" + }, + { + "name": "workload_resource_group_name", + "value": "ref:../../inputs/resource_group_name" + }, + { + "name": "edge_resource_group_name", + "value": "ref:../../inputs/resource_group_name" + }, + { + "name": "provision_trusted_profile_projects", + "value": false + } + ] + }, + { + "name": "2a - Essential Security - Encryption Key Management", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.fbb4dc92-6318-4f20-afc9-65cc586ac241-global", + "inputs": [ + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/security_resource_group_name" + }, + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "existing_kms_instance_crn", + "value": "ref:../../inputs/existing_kms_instance_crn" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "key_protect_plan", + "value": "ref:../../inputs/key_protect_plan" + } + ] + }, + { + "name": "2b - Essential Security - Cloud Object Storage", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.6433c58f-9e1b-4520-ae52-5ab4f4559cf9-global", + "inputs": [ + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/observability_resource_group_name" + } + ] + }, + { + "name": "2c - Essential Security - Cloud Monitoring", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.4c21c293-3f7d-454b-97bc-9808aee58bfe-global", + "inputs": [ + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/observability_resource_group_name" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "enable_platform_metrics", + "value": "ref:../../inputs/enable_platform_metrics" + }, + { + "name": "enable_metrics_routing_to_cloud_monitoring", + "value": "ref:../../inputs/enable_platform_metrics" + }, + { + "name": "cloud_monitoring_plan", + "value": "ref:../../inputs/cloud_monitoring_plan" + } + ] + }, + { + "name": "2d - Workload - Container Registry", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.4ddd4d03-09ea-45c0-a591-53dbbed95eeb-global", + "inputs": [ + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/workload_resource_group_name" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "namespace_name", + "value": "ref:../../inputs/region" + }, + { + "name": "upgrade_to_standard_plan", + "value": true + } + ] + }, + { + "name": "3a - Essential Security - Event Notifications", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.29f017cd-7a6f-45cc-a4ed-5f23505380bf-global", + "inputs": [ + { + "name": "existing_cos_instance_crn", + "value": "ref:../2b - Essential Security - Cloud Object Storage/outputs/cos_instance_crn" + }, + { + "name": "enable_collecting_failed_events", + "value": true + }, + { + "name": "kms_encryption_enabled", + "value": true + }, + { + "name": "kms_endpoint_url", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_private_endpoint" + }, + { + "name": "existing_kms_instance_crn", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "kms_endpoint_type", + "value": "private" + }, + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/observability_resource_group_name" + }, + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "existing_event_notifications_instance_crn", + "value": "ref:../../inputs/existing_event_notifications_instance_crn" + }, + { + "name": "existing_monitoring_crn", + "value": "ref:../2c - Essential Security - Cloud Monitoring/outputs/cloud_monitoring_crn" + } + ] + }, + { + "name": "3b - Gen AI - WatsonX SaaS services", + "version_locator": "1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc.63f85fe2-082f-44fa-add2-6a0f93d130e8-global", + "inputs": [ + { + "name": "watsonx_admin_api_key", + "value": "ref:../../inputs/watsonx_admin_api_key" + }, + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/workload_resource_group_name" + }, + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "watson_machine_learning_plan", + "value": "v2-standard" + }, + { + "name": "existing_machine_learning_instance", + "value": "ref:../../inputs/existing_machine_learning_instance" + }, + { + "name": "watson_studio_plan", + "value": "professional-v1" + }, + { + "name": "existing_studio_instance", + "value": "ref:../../inputs/existing_studio_instance_crn" + }, + { + "name": "watson_discovery_plan", + "value": "do not install" + }, + { + "name": "existing_discovery_instance", + "value": "ref:../../inputs/existing_discovery_instance_crn" + }, + { + "name": "watsonx_assistant_plan", + "value": "plus" + }, + { + "name": "existing_assistant_instance", + "value": "ref:../../inputs/existing_assistant_instance_crn" + }, + { + "name": "watsonx_governance_plan", + "value": "do not install" + }, + { + "name": "existing_governance_instance", + "value": "ref:../../inputs/existing_governance_instance_crn" + }, + { + "name": "existing_cos_instance_crn", + "value": "ref:../2b - Essential Security - Cloud Object Storage/outputs/cos_instance_crn" + }, + { + "name": "cos_kms_crn", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "enable_cos_kms_encryption", + "value": true + } + ] + }, + { + "name": "3c - Workload - Compute Red Hat OpenShift Container Platform on VPC", + "version_locator": "1082e7d2-5e2f-0a11-a3bc-f88a8e1931fc.cb341280-efa5-4bdf-8976-cea6ea62c3a4-global", + "inputs": [ + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "vpcs", + "value": [ + "management", + "workload" + ] + }, + { + "name": "ignore_vpcs_for_cluster_deployment", + "value": [ + "management" + ] + }, + { + "name": "enable_transit_gateway", + "value": false + }, + { + "name": "add_atracker_route", + "value": false + }, + { + "name": "existing_kms_instance_name", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/key_protect_name" + }, + { + "name": "existing_kms_resource_group", + "value": "ref:../1 - Account Configuration/outputs/security_resource_group_name" + }, + { + "name": "existing_kms_endpoint_type", + "value": "private" + }, + { + "name": "existing_cos_instance_name", + "value": "ref:../2b - Essential Security - Cloud Object Storage/outputs/cos_instance_name" + }, + { + "name": "existing_cos_resource_group", + "value": "ref:../2b - Essential Security - Cloud Object Storage/outputs/resource_group_name" + }, + { + "name": "use_existing_cos_for_vpc_flowlogs", + "value": true + }, + { + "name": "cluster_zones", + "value": "2" + }, + { + "name": "flavor", + "value": "bx2.4x16" + }, + { + "name": "workers_per_zone", + "value": 1 + } + ] + }, + { + "name": "4a - Essential Security - Cloud Logs for logging", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.b6bf9a7b-6ac3-4821-b3e4-f274293603f3-global", + "inputs": [ + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "existing_kms_instance_crn", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "kms_encryption_enabled_buckets", + "value": true + }, + { + "name": "kms_endpoint_type", + "value": "private" + }, + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/observability_resource_group_name" + }, + { + "name": "existing_cos_instance_crn", + "value": "ref:../2b - Essential Security - Cloud Object Storage/outputs/cos_instance_crn" + }, + { + "name": "existing_monitoring_crn", + "value": "ref:../2c - Essential Security - Cloud Monitoring/outputs/cloud_monitoring_crn" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "existing_event_notifications_instances", + "value": "ref:../3a - Essential Security - Event Notifications/outputs/crn_list_object" + }, + { + "name": "logs_routing_tenant_regions", + "value": "ref:../../inputs/logs_routing_tenant_regions" + } + ] + }, + { + "name": "4b - Essential Security - App Configuration", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.bff2dc4d-9e19-4b2c-8890-4cda020ce39e-global", + "inputs": [ + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/audit_resource_group_name" + }, + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "app_config_service_plan", + "value": "enterprise" + }, + { + "name": "enable_config_aggregator", + "value": true + }, + { + "name": "config_aggregator_enterprise_id", + "value": "ref:../../inputs/enterprise_id" + }, + { + "name": "config_aggregator_enterprise_account_group_ids_to_assign", + "value": "ref:../../inputs/enterprise_account_group_ids_to_assign" + }, + { + "name": "config_aggregator_enterprise_account_ids_to_assign", + "value": "ref:../../inputs/enterprise_account_ids_to_assign" + }, + { + "name": "kms_encryption_enabled", + "value": true + }, + { + "name": "existing_kms_instance_crn", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "kms_endpoint_url", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_private_endpoint" + }, + { + "name": "enable_event_notifications", + "value": true + }, + { + "name": "existing_event_notifications_instance_crn", + "value": "ref:../3a - Essential Security - Event Notifications/outputs/crn" + }, + { + "name": "event_notifications_endpoint_url", + "value": "ref:../3a - Essential Security - Event Notifications/outputs/event_notifications_private_endpoint" + }, + { + "name": "event_notifications_email_list", + "value": "ref:../../inputs/event_notifications_email_list" + } + ] + }, + { + "name": "4c - Essential Security - Secrets Manager", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.c7ba4599-f65a-4a9b-bd6b-120e52947652-global", + "inputs": [ + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/security_resource_group_name" + }, + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "existing_kms_instance_crn", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "kms_encryption_enabled", + "value": true + }, + { + "name": "existing_secrets_manager_crn", + "value": "ref:../../inputs/existing_secrets_manager_crn" + }, + { + "name": "skip_secrets_manager_iam_auth_policy", + "value": "ref:../../inputs/skip_secrets_manager_iam_auth_policy" + }, + { + "name": "service_plan", + "value": "ref:../../inputs/secrets_manager_service_plan" + }, + { + "name": "secret_groups", + "value": "ref:../../inputs/secrets_manager_secret_groups" + }, + { + "name": "existing_event_notifications_instance_crn", + "value": "ref:../3a - Essential Security - Event Notifications/outputs/crn" + } + ] + }, + { + "name": "4d - Essential Security - Cloud Logs for activity tracking", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.b6bf9a7b-6ac3-4821-b3e4-f274293603f3-global", + "inputs": [ + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "existing_kms_instance_crn", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "kms_encryption_enabled_buckets", + "value": true + }, + { + "name": "kms_endpoint_type", + "value": "private" + }, + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/observability_resource_group_name" + }, + { + "name": "existing_cos_instance_crn", + "value": "ref:../2b - Essential Security - Cloud Object Storage/outputs/cos_instance_crn" + }, + { + "name": "existing_monitoring_crn", + "value": "ref:../2c - Essential Security - Cloud Monitoring/outputs/cloud_monitoring_crn" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "existing_event_notifications_instances", + "value": "ref:../3a - Essential Security - Event Notifications/outputs/crn_list_object" + }, + { + "name": "logs_routing_tenant_regions", + "value": "ref:../../inputs/logs_routing_tenant_regions" + }, + { + "name": "cloud_logs_data_cos_bucket_name", + "value": "at-cloud-logs-logs-bucket" + }, + { + "name": "cloud_logs_metrics_cos_bucket_name", + "value": "at-cloud-logs-metrics-bucket" + }, + { + "name": "cloud_logs_instance_name", + "value": "at-cloud-logs" + } + ] + }, + { + "name": "5a - Essential Security - Security and Compliance Center Workload Protection", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.e543e47d-1b78-4415-963c-3c59fcf5ef2b-global", + "inputs": [ + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/audit_resource_group_name" + }, + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "scc_workload_protection_service_plan", + "value": "ref:../../inputs/scc_workload_protection_service_plan" + }, + { + "name": "cspm_enabled", + "value": true + }, + { + "name": "app_config_crn", + "value": "ref:../4b - Essential Security - App Configuration/outputs/app_config_crn" + }, + { + "name": "existing_monitoring_crn", + "value": "ref:../2c - Essential Security - Cloud Monitoring/outputs/cloud_monitoring_crn" + } + ] + }, + { + "name": "5b - Gen AI - Databases for Elasticsearch", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.2a25caea-0f63-4911-a5fb-c1ef792edea0-global", + "inputs": [ + { + "name": "existing_resource_group_name", + "value": "ref:../1 - Account Configuration/outputs/workload_resource_group_name" + }, + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "deletion_protection", + "value": false + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "plan", + "value": "enterprise" + }, + { + "name": "elasticsearch_version", + "value": "8.15" + }, + { + "name": "kms_encryption_enabled", + "value": true + }, + { + "name": "existing_kms_instance_crn", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "kms_endpoint_type", + "value": "private" + }, + { + "name": "member_host_flavor", + "value": "multitenant" + }, + { + "name": "member_cpu_count", + "value": 0 + }, + { + "name": "service_credential_names", + "value": { + "elastic_db_admin": "Administrator", + "wxasst_db_user": "Editor", + "toolchain_db_user": "Editor" + } + }, + { + "name": "existing_elasticsearch_instance_crn", + "value": "ref:../../inputs/existing_elasticsearch_instance_crn" + }, + { + "name": "existing_secrets_manager_instance_crn", + "value": "ref:../4c - Essential Security - Secrets Manager/outputs/secrets_manager_crn" + } + ] + }, + { + "name": "5c - Essential Security - Activity Tracker Event Routing", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.1d61413e-c149-4a3a-bd6d-9207e0c60385-global", + "inputs": [ + { + "name": "region", + "value": "ref:../../inputs/region" + }, + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "existing_kms_instance_crn", + "value": "ref:../2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "kms_encryption_enabled_buckets", + "value": true + }, + { + "name": "kms_endpoint_type", + "value": "private" + }, + { + "name": "existing_cos_instance_crn", + "value": "ref:../2b - Essential Security - Cloud Object Storage/outputs/cos_instance_crn" + }, + { + "name": "existing_cloud_logs_instance_crn", + "value": "ref:../4d - Essential Security - Cloud Logs for activity tracking/outputs/cloud_logs_crn" + }, + { + "name": "enable_activity_tracker_event_routing_to_cos_bucket", + "value": true + } + ] + }, + { + "name": "5d - Workload Essential Security - Red Hat OpenShift logging agent", + "version_locator": "7a4d68b4-cf8b-40cd-a3d1-f49aff526eb3.6a32a898-804a-4e6f-833d-0dde755e1261-global", + "inputs": [ + { + "name": "prefix", + "value": "ref:../../inputs/prefix" + }, + { + "name": "cluster_id", + "value": "ref:../3c - Workload - Compute Red Hat OpenShift Container Platform on VPC/outputs/workload_cluster_id" + }, + { + "name": "cluster_resource_group_id", + "value": "ref:../3c - Workload - Compute Red Hat OpenShift Container Platform on VPC/outputs/workload_rg_id" + }, + { + "name": "cloud_logs_ingress_endpoint", + "value": "ref:../4a - Essential Security - Cloud Logs for logging/outputs/cloud_logs_ingress_private_endpoint" + } + ] + } + ], + "outputs": [ + { + "name": "kms_instance_crn", + "value": "ref:./members/2a - Essential Security - Encryption Key Management/outputs/kms_instance_crn" + }, + { + "name": "kms_private_endpoint", + "value": "ref:./members/2a - Essential Security - Encryption Key Management/outputs/kms_private_endpoint" + }, + { + "name": "kms_public_endpoint", + "value": "ref:./members/2a - Essential Security - Encryption Key Management/outputs/kms_public_endpoint" + }, + { + "name": "cos_instance_crn", + "value": "ref:./members/2b - Essential Security - Cloud Object Storage/outputs/cos_instance_crn" + }, + { + "name": "cos_instance_guid", + "value": "ref:./members/2b - Essential Security - Cloud Object Storage/outputs/cos_instance_guid" + }, + { + "name": "cos_instance_name", + "value": "ref:./members/2b - Essential Security - Cloud Object Storage/outputs/cos_instance_name" + }, + { + "name": "cloud_monitoring_crn", + "value": "ref:./members/2c - Essential Security - Cloud Monitoring/outputs/cloud_monitoring_crn" + }, + { + "name": "cloud_monitoring_guid", + "value": "ref:./members/2c - Essential Security - Cloud Monitoring/outputs/cloud_monitoring_guid" + }, + { + "name": "event_notifications_instance_crn", + "value": "ref:./members/3a - Essential Security - Event Notifications/outputs/crn" + }, + { + "name": "event_notifications_instance_name", + "value": "ref:./members/3a - Essential Security - Event Notifications/outputs/event_notification_instance_name" + }, + { + "name": "event_notifications_instance_guid", + "value": "ref:./members/3a - Essential Security - Event Notifications/outputs/guid" + }, + { + "name": "watsonx_project_url", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watsonx_project_url" + }, + { + "name": "watsonx_project_id", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watsonx_project_id" + }, + { + "name": "watson_discovery_crn", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_discovery_crn" + }, + { + "name": "watson_discovery_dashboard_url", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_discovery_dashboard_url" + }, + { + "name": "watson_machine_learning_crn", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_machine_learning_crn" + }, + { + "name": "watson_machine_learning_dashboard_url", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_machine_learning_dashboard_url" + }, + { + "name": "watson_machine_learning_guid", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_machine_learning_guid" + }, + { + "name": "watson_studio_crn", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_studio_crn" + }, + { + "name": "watson_studio_dashboard_url", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_studio_dashboard_url" + }, + { + "name": "watson_studio_guid", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_studio_guid" + }, + { + "name": "watsonx_assistant_crn", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watsonx_assistant_crn" + }, + { + "name": "watsonx_assistant_dashboard_url", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watsonx_assistant_dashboard_url" + }, + { + "name": "watsonx_data_crn", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watsonx_data_crn" + }, + { + "name": "watsonx_data_dashboard_url", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watsonx_data_dashboard_url" + }, + { + "name": "watsonx_data_guid", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watsonx_data_guid" + }, + { + "name": "watson_discovery_guid", + "value": "ref:./members/3b - Gen AI - WatsonX SaaS services/outputs/watson_discovery_guid" + }, + { + "name": "workload_cluster_name", + "value": "ref:./members/3c - Workload - Compute Red Hat OpenShift Container Platform on VPC/outputs/workload_cluster_name" + }, + { + "name": "workload_cluster_id", + "value": "ref:./members/3c - Workload - Compute Red Hat OpenShift Container Platform on VPC/outputs/workload_cluster_id" + }, + { + "name": "workload_cluster_private_service_endpoint_url", + "value": "ref:./members/3c - Workload - Compute Red Hat OpenShift Container Platform on VPC/outputs/workload_cluster_private_service_endpoint_url" + }, + { + "name": "workload_cluster_public_service_endpoint_url", + "value": "ref:./members/3c - Workload - Compute Red Hat OpenShift Container Platform on VPC/outputs/workload_cluster_public_service_endpoint_url" + }, + { + "name": "cloud_logs_for_logging_crn", + "value": "ref:./members/4a - Essential Security - Cloud Logs for logging/outputs/cloud_logs_crn" + }, + { + "name": "cloud_logs_for_logging_guid", + "value": "ref:./members/4a - Essential Security - Cloud Logs for logging/outputs/cloud_logs_guid" + }, + { + "name": "app_config_crn", + "value": "ref:./members/4b - Essential Security - App Configuration/outputs/app_config_crn" + }, + { + "name": "app_config_guid", + "value": "ref:./members/4b - Essential Security - App Configuration/outputs/app_config_guid" + }, + { + "name": "secrets_manager_crn", + "value": "ref:./members/4c - Essential Security - Secrets Manager/outputs/secrets_manager_crn" + }, + { + "name": "secrets_manager_guid", + "value": "ref:./members/4c - Essential Security - Secrets Manager/outputs/secrets_manager_guid" + }, + { + "name": "secrets_manager_name", + "value": "ref:./members/4c - Essential Security - Secrets Manager/outputs/secrets_manager_name" + }, + { + "name": "cloud_logs_for_activity_tracking_crn", + "value": "ref:./members/4d - Essential Security - Cloud Logs for activity tracking/outputs/cloud_logs_crn" + }, + { + "name": "cloud_logs_for_activity_tracking_guid", + "value": "ref:./members/4d - Essential Security - Cloud Logs for activity tracking/outputs/cloud_logs_guid" + }, + { + "name": "scc_workload_protection_crn", + "value": "ref:./members/5a - Essential Security - Security and Compliance Center Workload Protection/outputs/scc_workload_protection_crn" + }, + { + "name": "scc_workload_protection_guid", + "value": "ref:./members/5a - Essential Security - Security and Compliance Center Workload Protection/outputs/scc_workload_protection_id" + }, + { + "name": "elasticsearch_hostname", + "value": "ref:./members/5b - Gen AI - Databases for Elasticsearch/outputs/hostname" + }, + { + "name": "elasticsearch_port", + "value": "ref:./members/5b - Gen AI - Databases for Elasticsearch/outputs/port" + }, + { + "name": "elasticsearch_service_credentials_json", + "value": "ref:./members/5b - Gen AI - Databases for Elasticsearch/outputs/service_credentials_json" + }, + { + "name": "elasticsearch_crn", + "value": "ref:./members/5b - Gen AI - Databases for Elasticsearch/outputs/crn" + } + ] +} diff --git a/tests/pr_test.go b/tests/pr_test.go index 92a1e114..d609bae5 100644 --- a/tests/pr_test.go +++ b/tests/pr_test.go @@ -3,7 +3,6 @@ package tests import ( "fmt" "log" - "math/rand" "os" "strings" "testing" @@ -60,7 +59,7 @@ func TestProjectsBasicFullTest(t *testing.T) { } options.StackInputs = map[string]interface{}{ "resource_group_name": options.ResourceGroup, - "region": validRegions[rand.Intn(len(validRegions))], + "region": validRegions[common.CryptoIntn(len(validRegions))], "ibmcloud_api_key": options.RequiredEnvironmentVars["TF_VAR_ibmcloud_api_key"], "prefix": options.Prefix, "signing_key": privateKey, @@ -96,7 +95,7 @@ func TestProjectsBasicExistingResourcesTest(t *testing.T) { TerraformDir: tempTerraformDir, Vars: map[string]interface{}{ "prefix": prefix, - "region": validRegions[rand.Intn(len(validRegions))], + "region": validRegions[common.CryptoIntn(len(validRegions))], }, // Set Upgrade to true to ensure latest version of providers and modules are used by terratest. // This is the same as setting the -upgrade=true flag with terraform. @@ -177,7 +176,7 @@ func TestProjectsStandardFullTest(t *testing.T) { } options.StackInputs = map[string]interface{}{ "resource_group_name": options.ResourceGroup, - "region": validRegions[rand.Intn(len(validRegions))], + "region": validRegions[common.CryptoIntn(len(validRegions))], "ibmcloud_api_key": options.RequiredEnvironmentVars["TF_VAR_ibmcloud_api_key"], "prefix": options.Prefix, "signing_key": privateKey,