Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
d8ea80e
DA improvements
Aayush-Abhyarthi Jul 10, 2025
5ed9f4a
add: index
Aayush-Abhyarthi Jul 11, 2025
e72ee13
Merge branch 'main' into improve-DA
Aayush-Abhyarthi Jul 14, 2025
d0de98e
add: permissions
Aayush-Abhyarthi Jul 14, 2025
3691571
Merge remote-tracking branch 'origin/improve-DA' into improve-DA
Aayush-Abhyarthi Jul 14, 2025
2586f3b
resolve conflicts
Aayush-Abhyarthi Jul 21, 2025
1f0e999
revert
Aayush-Abhyarthi Jul 22, 2025
48e4812
resolve comments
Aayush-Abhyarthi Jul 24, 2025
6aa57ec
Merge branch 'main' into improve-DA
Aayush-Abhyarthi Jul 24, 2025
c50c333
resolve conflicts
Aayush-Abhyarthi Jul 27, 2025
ee542d4
Merge branch 'main' into improve-DA
Aayush-Abhyarthi Jul 27, 2025
ea00a80
Update ibm_catalog.json
Aayush-Abhyarthi Jul 29, 2025
00d76ca
Update ibm_catalog.json
Aayush-Abhyarthi Jul 29, 2025
51f2158
Update ibm_catalog.json
Aayush-Abhyarthi Jul 29, 2025
c2a216c
resolve comments
Aayush-Abhyarthi Jul 29, 2025
2810162
Merge branch 'main' into improve-DA
Aayush-Abhyarthi Aug 3, 2025
36d8a65
resolve comments
Aayush-Abhyarthi Aug 11, 2025
9410b44
Merge branch 'main' into improve-DA
Aayush-Abhyarthi Aug 11, 2025
405de98
fix: diagram
Aayush-Abhyarthi Aug 18, 2025
fdabc65
more fixes
Aayush-Abhyarthi Aug 19, 2025
1efbc11
Update ibm_catalog.json
Aayush-Abhyarthi Aug 24, 2025
95209e3
Update ibm_catalog.json
Aayush-Abhyarthi Aug 24, 2025
67ca1ce
Update ibm_catalog.json
Aayush-Abhyarthi Aug 24, 2025
f7ddd2a
Update ibm_catalog.json
Aayush-Abhyarthi Aug 24, 2025
32d5403
Update ibm_catalog.json
Aayush-Abhyarthi Aug 24, 2025
6e51e85
Update ibm_catalog.json
Aayush-Abhyarthi Aug 24, 2025
3b2ae3c
Update ibm_catalog.json
Aayush-Abhyarthi Aug 24, 2025
9c63070
Update ibm_catalog.json
Aayush-Abhyarthi Aug 25, 2025
7ffcaa7
Update ibm_catalog.json
Aayush-Abhyarthi Aug 25, 2025
f18ef1e
resolve comments
Aayush-Abhyarthi Aug 25, 2025
149d759
Merge branch 'main' into improve-DA
Aayush-Abhyarthi Aug 25, 2025
a7b043f
Update ibm_catalog.json
Aayush-Abhyarthi Aug 27, 2025
ad6dd9c
Update ibm_catalog.json
Aayush-Abhyarthi Aug 27, 2025
974216e
fix: capitalization
Aayush-Abhyarthi Aug 27, 2025
b46e672
fix: diagram
Aayush-Abhyarthi Aug 27, 2025
27a3f3b
Merge branch 'main' into improve-DA
Aayush-Abhyarthi Aug 31, 2025
68610bc
Update solutions/fully-configurable/README.md
Aayush-Abhyarthi Sep 3, 2025
bd173d4
resolve comments
Aayush-Abhyarthi Sep 3, 2025
d47ecd4
pass cis
Aayush-Abhyarthi Sep 3, 2025
91700c7
revert prefix
Aayush-Abhyarthi Sep 3, 2025
cf5ec43
revert prefix
Aayush-Abhyarthi Sep 3, 2025
5270ce0
Update ibm_catalog.json
Aayush-Abhyarthi Sep 7, 2025
4bdbef7
Merge branch 'main' into improve-DA
Aayush-Abhyarthi Sep 7, 2025
5ef5e88
resolve comments
Aayush-Abhyarthi Sep 7, 2025
466776f
update diagram
Aayush-Abhyarthi Sep 10, 2025
9c16099
update: diagram
Aayush-Abhyarthi Sep 15, 2025
565d589
Merge branch 'main' into improve-DA
Aayush-Abhyarthi Sep 15, 2025
95894de
Merge branch 'main' into improve-DA
Aayush-Abhyarthi Sep 24, 2025
6f3deec
fix: split observability related updates
Aayush-Abhyarthi Sep 24, 2025
145b7b8
fixes
Aayush-Abhyarthi Sep 26, 2025
5053157
update content
Sep 30, 2025
68404e5
update cert name
Aayush-Abhyarthi Sep 30, 2025
c8b3ee0
Merge remote-tracking branch 'origin/improve-DA' into improve-DA
Aayush-Abhyarthi Sep 30, 2025
6af423f
resolve comment
Aayush-Abhyarthi Sep 30, 2025
bc69586
remove cda
Aayush-Abhyarthi Sep 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
167 changes: 115 additions & 52 deletions ibm_catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,108 +20,149 @@
"terraform",
"solution"
],
"short_description": "Creates and configures a Secrets Manager Public Certificates Engine.",
"long_description": "This deployable architecture is used to configure an Internet Service DNS configuration, establish authorization between Secrets Manager and the Internet Service, and set up Let's Encrypt as the certificate authority. This Terraform-based automation is part of a broader suite of IBM-maintained Infrastructure as Code (IaC) asset collection, each following the naming pattern \"Cloud automation for *servicename*\" and focusing on single IBM Cloud service. These deployable architectures can be used on their own to streamline and automate service deployments through an [IaC approach](https://cloud.ibm.com/docs/secure-enterprise?topic=secure-enterprise-understanding-projects), or assembled together into a broader [Automated IaC stack](https://cloud.ibm.com/docs/secure-enterprise?topic=secure-enterprise-config-stack) to automate the deployment of an end-to-end solution architecture.",
"short_description": "Creates and configures a Secrets Manager public certificates engine",
"long_description": "This deployable architecture sets up a public certificates engine in IBM Cloud Secrets Manager, enabling automated provisioning and management of publicly trusted Transport Layer Security (TLS) certificates. These certificates are issued by Let’s Encrypt, a widely trusted Certificate Authority (CA) that helps secure websites and applications with HTTPS. This deployable architecture configures integration between IBM Cloud Secrets Manager, Cloud Internet Services (CIS) for Domain Name System (DNS) validation, and Let’s Encrypt as the Certificate Authority (CA). It provisions the required authorization policies, DNS configuration, and CA configuration so that applications can obtain and renew public certificates automatically.\n\nℹ️ This Terraform-based automation is part of a broader suite of IBM-maintained Infrastructure as Code (IaC) assets, each following the naming pattern \"Cloud automation for *servicename*\" and focusing on single IBM Cloud service. These single-service deployable architectures can be used on their own to streamline and automate service deployments through an [IaC approach](https://cloud.ibm.com/docs/secure-enterprise?topic=secure-enterprise-understanding-projects), or assembled together into a broader [automated IaC stack](https://cloud.ibm.com/docs/secure-enterprise?topic=secure-enterprise-config-stack) to automate the deployment of an end-to-end solution architecture.",
"offering_docs_url": "https://github.com/terraform-ibm-modules/terraform-ibm-secrets-manager-public-cert-engine/blob/main/README.md",
"offering_icon_url": "https://raw.githubusercontent.com/terraform-ibm-modules/terraform-ibm-secrets-manager-public-cert-engine/main/images/secrets_manager_public_cert_engine.svg",
"provider_name": "IBM",
"features": [
{
"title": "Configures Internet Service DNS",
"description": "Configures Internet Service DNS."
"title": "DNS configuration in Internet Services",
"description": "Adds DNS configuration in Internet Services for domain validation when ordering certificates. [Learn more](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-add-dns-provider&interface=ui)."
},
{
"title": "Creates Secrets Manager Internet Service authorization",
"description": "Creates authorization between Secrets Manager and Internet Service."
"title": "Service-to-Service Authorization",
"description": "Creates [authorization](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-prepare-order-certificates#authorize-cis) between the Secrets Manager and Internet Services."
},
{
"title": "Configures Let's Encrypt certificate authority",
"description": "Configures Let's Encrypt certificate authority."
"title": "Certificate Authority",
"description": "Configures Let's Encrypt certificate authority for getting the SSL/TLS certificates approved. [Learn more](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-add-certificate-authority&interface=terraform)."
}
],
"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/terraform-ibm-secrets-manager-public-cert-engine/issues](https://github.com/terraform-ibm-modules/terraform-ibm-secrets-manager-public-cert-engine/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 [original repo](https://github.com/terraform-ibm-modules/terraform-ibm-secrets-manager-public-cert-engine). If you experience issues please open an issue [here](https://github.com/terraform-ibm-modules/terraform-ibm-secrets-manager-public-cert-engine/issues). Please note this product is not supported via the IBM Cloud Support Center.",
"flavors": [
{
"label": "Fully configurable",
"name": "fully-configurable",
"index": 1,
"install_type": "fullstack",
"working_directory": "solutions/fully-configurable",
"architecture": {
"descriptions": "This architecture supports creating and configuring a Secrets Manager Public Certificates Engine.",
"features": [
{
"title": "Internet Service DNS",
"description": "Configures Internet Service DNS configuration."
},
{
"title": "Authorization between Secrets Manager and Internet Service",
"description": "Creates authorization between Secrets Manager and Internet Service."
},
{
"title": "Let's Encrypt certificate authority",
"description": "Provisions a Let's Encrypt certificate authority."
"title": " ",
"description": "Configured to use IBM secure-by-default standards, but can be edited to fit your use case."
}
],
"diagrams": [
{
"diagram": {
"caption": "Secrets Manager Public Certificates Engine",
"url": "https://raw.githubusercontent.com/terraform-ibm-modules/terraform-ibm-secrets-manager-public-cert-engine/main/reference-architecture/secrets_manager_public_cert_engine.svg",
"url": "https://raw.githubusercontent.com/terraform-ibm-modules/terraform-ibm-secrets-manager-public-cert-engine/main/reference-architecture/deployable-architecture-sm-public-cert-engine.svg",
"type": "image/svg+xml"
},
"description": "This architcture supports creating secrets manager public certificates engine within a secrets manager instance."
"description": "This architecture supports creating a Secrets Manager public certificates engine within a Secrets Manager instance. The Secrets Manager public certificates engine enables you to issue and manage publicly trusted TLS/SSL certificates by integrating with external Certificate Authorities such as Let's Encrypt. It supports configuring DNS providers like IBM Cloud Internet Services (CIS) for domain validation, managing CA configurations, and automating the issuance and renewal of public certificates for internet-facing applications and services."
}
]
},
"iam_permissions": [
{
"service_name": "iam-access-groups",
"role_crns": [
"crn:v1:bluemix:public:iam::::role:Editor"
]
],
"service_name": "iam-groups",
"notes": "[Optional] Required for managing IAM access groups."
},
{
"service_name": "iam-identity",
"role_crns": [
"crn:v1:bluemix:public:iam::::role:Operator"
]
"crn:v1:bluemix:public:iam::::role:Administrator"
],
"service_name": "All Account Management services",
"notes": "[Optional] Required to create new resource groups when enabling the Account Configuration integration."
},
{
"role_crns": [
"crn:v1:bluemix:public:iam::::role:Administrator"
],
"service_name": "All Identity and Access enabled services",
"notes": "[Optional] Required to create new resource groups with account settings when enabling the Account Configuration integration."
},
{
"service_name": "resource-group",
"role_crns": [
"crn:v1:bluemix:public:iam::::role:Viewer"
]
],
"service_name": "Resource group only",
"notes": "Viewer access is required in the resource group you want to provision in."
},
{
"service_name": "secrets-manager",
"role_crns": [
"crn:v1:bluemix:public:iam::::serviceRole:Administrator",
"crn:v1:bluemix:public:iam::::role:Editor",
"crn:v1:bluemix:public:iam::::serviceRole:Manager"
]
],
"service_name": "secrets-manager",
"notes": "Required to create a Secrets Manager instance."
},
{
"role_crns": [
"crn:v1:bluemix:public:iam::::serviceRole:Manager",
"crn:v1:bluemix:public:iam::::role:Editor"
],
"service_name": "event-notifications",
"notes": "[Optional] Required to create an Event Notifications instance."
},
{
"role_crns": [
"crn:v1:bluemix:public:iam::::serviceRole:Manager",
"crn:v1:bluemix:public:iam::::role:Editor"
],
"service_name": "sysdig-monitor",
"notes": "[Optional] Required to create an instance of Cloud Monitoring."
},
{
"role_crns": [
"crn:v1:bluemix:public:iam::::serviceRole:Writer",
"crn:v1:bluemix:public:iam::::role:Editor"
],
"service_name": "atracker",
"notes": "[Optional] Required when enabling the Activity Tracker Event Routing."
},
{
"role_crns": [
"crn:v1:bluemix:public:iam::::serviceRole:Manager",
"crn:v1:bluemix:public:iam::::role:Editor"
],
"service_name": "cloud-object-storage",
"notes": "[Optional] Required to create Object Storage instance."
},
{
"role_crns": [
"crn:v1:bluemix:public:iam::::serviceRole:Manager",
"crn:v1:bluemix:public:iam::::role:Editor"
],
"service_name": "logs",
"notes": "[Optional] Required to create an instance of Cloud Logs."
},
{
"role_crns": [
"crn:v1:bluemix:public:iam::::serviceRole:Manager",
"crn:v1:bluemix:public:iam::::role:Editor"
],
"service_name": "hs-crypto",
"notes": "[Optional] Required if Hyper Protect Crypto Service is used for encryption."
},
{
"role_crns": [
"crn:v1:bluemix:public:iam::::serviceRole:Manager",
"crn:v1:bluemix:public:iam::::role:Editor"
],
"service_name": "kms",
"notes": "[Optional] Required if Key Protect is used for encryption."
}
],
"configuration": [
{
"key": "ibmcloud_api_key"
},
{
"key": "provider_visibility",
"options": [
{
"displayname": "private",
"value": "private"
},
{
"displayname": "public",
"value": "public"
},
{
"displayname": "public-and-private",
"value": "public-and-private"
}
],
"hidden": true
},
{
"key": "existing_secrets_manager_crn",
"required": true
Expand All @@ -135,7 +176,7 @@
"required": true,
"virtual": true,
"default_value": "us-south",
"description": "The region to provision a new Secrets Manager instance in.",
"description": "The region to provision a Secrets Manager instance.",
"options": [
{
"displayname": "Osaka (jp-osa)",
Expand Down Expand Up @@ -201,6 +242,10 @@
"default_value": "standard",
"description": "The pricing plan to use when provisioning a Secrets Manager instance. Possible values: `standard`, `trial`. You can create only one Trial instance of Secrets Manager per account. Before you can create a new Trial instance, you must delete the existing Trial instance and its reclamation. [Learn more](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-create-instance&interface=ui#upgrade-instance-standard)."
},
{
"key": "service_endpoints",
"hidden": true
},
{
"key": "ibmcloud_cis_api_key"
},
Expand Down Expand Up @@ -241,12 +286,30 @@
},
{
"key": "skip_iam_authorization_policy"
},
{
"key": "provider_visibility",
"options": [
{
"displayname": "private",
"value": "private"
},
{
"displayname": "public",
"value": "public"
},
{
"displayname": "public-and-private",
"value": "public-and-private"
}
],
"hidden": true
}
],
"dependencies": [
{
"name": "deploy-arch-ibm-secrets-manager",
"description": "Create a new Secrets Manager instance.",
"description": "Configure Secrets Manager to deploy public certificates engine.",
"id": "6d6ebc76-7bbd-42f5-8bc7-78f4fabd5944-global",
"version": "v2.8.6",
"flavors": [
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

11 changes: 2 additions & 9 deletions solutions/fully-configurable/README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
# Secrets Manager Public Certificate Engine
# Cloud automation for Secrets Manager public certificates engine (Fully configurable)

This solution supports the following:
- Provisioning a Secrets Manager public certificate authority configuration to configure Let's Encrypt as a Certificate Authority (CA).
- Provisioning a Secrets Manager DNS provider configuration for IBM Cloud Internet Services.
- Provisioning a Secrets Manager to Cloud Internet Service authorization policy.

![secrets-manager-public-cert-engine-deployable-architecture](../../reference-architecture/secrets_manager_public_cert_engine.svg)

**NB:** This solution is not intended to be invoked by other modules, as it includes provider configuration. As a result, it is incompatible with the `for_each`, `count`, and `depends_on` arguments. For more information see [Providers Within Modules](https://developer.hashicorp.com/terraform/language/modules/develop/providers)
:exclamation: **Important:** This solution is not intended to be called by other modules because it contains a provider configuration and is not compatible with the `for_each`, `count`, and `depends_on` arguments. For more information, see [Providers Within Modules](https://developer.hashicorp.com/terraform/language/modules/develop/providers).
2 changes: 1 addition & 1 deletion solutions/fully-configurable/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ module "secrets_manager_public_cert_engine" {
ca_config_name = "${local.prefix}${var.ca_config_name}"
lets_encrypt_environment = var.lets_encrypt_environment
acme_letsencrypt_private_key = var.acme_letsencrypt_private_key
service_endpoints = "private"
service_endpoints = var.service_endpoints
skip_iam_authorization_policy = var.skip_iam_authorization_policy
private_key_secrets_manager_instance_guid = local.existing_secrets_manager_guid
private_key_secrets_manager_secret_id = local.secret_id
Expand Down
7 changes: 4 additions & 3 deletions solutions/fully-configurable/provider.tf
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
provider "ibm" {
ibmcloud_api_key = var.ibmcloud_api_key
region = local.existing_secrets_manager_region
visibility = var.provider_visibility
ibmcloud_api_key = var.ibmcloud_api_key
region = local.existing_secrets_manager_region
visibility = var.provider_visibility
private_endpoint_type = (var.provider_visibility == "private" && local.existing_secrets_manager_region == "ca-mon") ? "vpe" : null
}

provider "ibm" {
Expand Down
9 changes: 7 additions & 2 deletions solutions/fully-configurable/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,11 @@ variable "prefix" {
}
}

variable "service_endpoints" {
type = string
description = "The service endpoint type to communicate with the provided secrets manager instance."
default = "private"
}

variable "ibmcloud_cis_api_key" {
type = string
Expand Down Expand Up @@ -75,7 +80,7 @@ variable "internet_service_domain_id" {

variable "dns_config_name" {
type = string
description = "Name of the DNS config for the public_cert secrets engine. If passing a value for `dns_config_name` a value for `internet_services_crn` is required. [Learn more](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-secrets-manager-cli#secrets-manager-configurations-cli)."
description = "Name of the DNS config for the Public Certificates Secrets Engine. If passing a value for `dns_config_name` a value for `internet_services_crn` is required. [Learn more](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-secrets-manager-cli#secrets-manager-configurations-cli)."
default = null

validation {
Expand All @@ -92,7 +97,7 @@ variable "ca_config_name" {

variable "lets_encrypt_environment" {
type = string
description = "Let's Encrypt environment (staging, production). [Learn more](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-secrets-manager-cli#secrets-manager-configurations-cli)."
description = "The configuration of the Let's Encrypt Certificate Authority environment. [Learn more](https://cloud.ibm.com/docs/secrets-manager?topic=secrets-manager-secrets-manager-cli#secrets-manager-configurations-cli)."
default = "production"

validation {
Expand Down
2 changes: 1 addition & 1 deletion tests/pr_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ func TestRunSolutionsFullyConfigurableUpgradeSchematics(t *testing.T) {
{Name: "prefix", Value: options.Prefix, DataType: "string"},
{Name: "existing_secrets_manager_crn", Value: permanentResources["secretsManagerCRN"], DataType: "string"},
{Name: "acme_letsencrypt_private_key_secrets_manager_secret_crn", Value: permanentResources["acme_letsencrypt_private_key_secret_crn"], DataType: "string"},
{Name: "dns_config_name", Value: "cer-dns", DataType: "string"},
{Name: "dns_config_name", Value: "cert-dns", DataType: "string"},
{Name: "internet_services_crn", Value: permanentResources["cisInstanceId"], DataType: "string"},
{Name: "skip_iam_authorization_policy", Value: true, DataType: "bool"}, // A permanent cis-sm auth policy already exists in the account
}
Expand Down