diff --git a/content/boundary/v0.20.x/content/docs/configuration/controller.mdx b/content/boundary/v0.20.x/content/docs/configuration/controller.mdx index e298e9c9b5..25ea46ae2d 100644 --- a/content/boundary/v0.20.x/content/docs/configuration/controller.mdx +++ b/content/boundary/v0.20.x/content/docs/configuration/controller.mdx @@ -84,6 +84,13 @@ description will be read. address will be read; or a [go-sockaddr template](https://godoc.org/github.com/hashicorp/go-sockaddr/template). Note that the address should not include the protocol prefixes like `http://` or `https://`. +- `license` - The license key value to enable Boundary Enterprise. +The HashiCorp account team sends you a license to enable enterprise features. +You can enter the raw license key or the directory path to the file that contains the license key. +Alternatively, you can configure the license as an environment variable. + + For more information, refer to [Boundary Enterprise licensing](/boundary/docs/enterprise/licensing). + - `auth_token_time_to_live` - Maximum time to live (TTL) for all auth tokens globally (pertains to all tokens from all auth methods). Valid time units are anything specified by Golang's [ParseDuration()](https://golang.org/pkg/time/#ParseDuration) method. Default is 7 days. @@ -229,6 +236,9 @@ controller { name = "demo-controller-1" description = "A controller for a demo!" + # Path to a valid license to enable Boundary Enterprise. + license = "file:///folder_path/license.hclic" + # After receiving a shutdown signal, Boundary will wait 10s before initiating the shutdown process. graceful_shutdown_wait_duration = "10s" diff --git a/content/boundary/v0.20.x/content/docs/enterprise/licensing.mdx b/content/boundary/v0.20.x/content/docs/enterprise/licensing.mdx index d1ec784916..75cc44d448 100644 --- a/content/boundary/v0.20.x/content/docs/enterprise/licensing.mdx +++ b/content/boundary/v0.20.x/content/docs/enterprise/licensing.mdx @@ -5,12 +5,16 @@ description: >- Learn how to enable Boundary Enterprise with a valid license. Request access from an account team to enable enterprise features. --- -# License Boundary Enterprise +# Boundary Enterprise licensing + +This feature requires Boundary Enterprise The Boundary Enterprise binaries require a license key to enforce entitlements and time restrictions according to your contractual agreement. -Once purchased, your HashiCorp account team send you a valid Boundary license for environment activation. +Once purchased, your HashiCorp account team sends you a valid Boundary license to activate the environment. If you don't yet have an acccount team, but are interested in Boundary Enterprise, you can [contact sales](https://www.hashicorp.com/contact-sales). +## Enable Boundary Enterprise + Once you have received your valid Boundary license, there are two options for enabling Boundary Enterprise: 1. You may set the enterprise license for Boundary using an environment variable. @@ -53,4 +57,84 @@ Refer to the sample configurations below: } ``` - Refer to the [controller](/boundary/docs/configuration/controller) configuration documentation for more information. \ No newline at end of file +Refer to the [controller](/boundary/docs/configuration/controller) configuration documentation for more information. + +## License expiration + +When the account team generates a new Boundary Enterprise license, it contains an expiration date based on your contractual agreement. +Prior to the license expiration, Boundary logs five system event warnings to the event stream at the following intervals: + +| Warning | Interval | +|---------|-------------------------------------| +| First | 30 days before license expiration | +| Second | 7 days before license expiration | +| Third | 24 hours before license expiration | +| Fourth | 1 hour before license expiration | +| Fifth | 1 minute before license expiration | + +If you use an external monitoring system, you can create alerts for `"msg": "license warning"` and `"op": "licensing.StartWatching"` to watch for license expiration warnings. + +Refer to the following example of how the warnings appear in the log: + + + +```plaintext +{ + "id": "ymFHcb1H1Z", + "source": "https://hashicorp.com/boundary/nixos/controller+worker", + "specversion": "1.0", + "type": "system", + "data": { + "version": "v0.1", + "op": "licensing.StartWatching", + "data": { + "expiration_time": "2025-09-08T11:14:33-07:00", + "msg": "licensing warning", + "time_left_seconds": 60 + } + }, + "datacontentype": "text/plain", + "time": "2025-09-08T11:14:03.457471753-07:00" +} +``` + + + +When the license expires, you receive the following message as an error: + + + +```plaintext +{ + "id": "SJkaNV09xP", + "source": "https://hashicorp.com/boundary/nixos/controller+worker", + "specversion": "1.0", + "type": "error", + "data": { + "error": "error from licensing watcher: invalid license or license is expired", + "error_fields": {}, + "id": "e_33IKa8BqB3", + "version": "v0.1", + "op": "licensing.StartWatching" + }, + "datacontentype": "text/plain", + "time": "2025-08-01T16:54:14.34408533-07:00" +} +==> Boundary dev environment self-terminating +==> Health is enabled, waiting 0s before shutdown +==> Boundary dev environment graceful shutdown triggered, interrupt again to enter shutdown +``` + + + +When the license expires, Boundary performs a graceful shutdown. +A graceful shutdown closes listeners and servers before shutting down the controller to preemptively stop any new traffic to the Boundary instance. + +To update your license key, refer to the steps in [Enable Boundary Enterprise](#enable-boundary-enterprise). +As a best practice, we recommend restarting the controller after you update the license key. + +## More information + +Refer to the [Upgrade and database migration](/boundary/tutorials/self-managed-deployment/upgrade-version) tutorial for step-by-step instructions to upgrade Boundary to the latest version, including database backup and data migration. + +Refer to [Monitor Boundary](/boundary/docs/monitor) for more information about configuring Boundary to monitor events. \ No newline at end of file diff --git a/content/boundary/v0.20.x/data/docs-nav-data.json b/content/boundary/v0.20.x/data/docs-nav-data.json index c437587879..dd824f121f 100644 --- a/content/boundary/v0.20.x/data/docs-nav-data.json +++ b/content/boundary/v0.20.x/data/docs-nav-data.json @@ -798,7 +798,7 @@ "title": "Overview", "path": "hcp", "badge": { - "text": "HCP/ENT", + "text": "HCP", "type": "outlined", "color": "neutral" } @@ -810,7 +810,7 @@ "title": "Deploy and log in", "path": "hcp/get-started/deploy-and-login", "badge": { - "text": "HCP/ENT", + "text": "HCP", "type": "outlined", "color": "neutral" } @@ -819,7 +819,7 @@ "title": "Connect to a target", "path": "hcp/get-started/connect-to-target", "badge": { - "text": "HCP/ENT", + "text": "HCP", "type": "outlined", "color": "neutral" } @@ -830,7 +830,7 @@ "title": "Documentation", "href": "https://cloud.hashicorp.com/docs/boundary", "badge": { - "text": "HCP/ENT", + "text": "HCP", "type": "outlined", "color": "neutral" } @@ -844,7 +844,7 @@ "title": "Overview", "path": "enterprise", "badge": { - "text": "HCP/ENT", + "text": "ENT", "type": "outlined", "color": "neutral" } @@ -853,7 +853,7 @@ "title": "Licensing", "path": "enterprise/licensing", "badge": { - "text": "HCP/ENT", + "text": "ENT", "type": "outlined", "color": "neutral" } @@ -862,7 +862,7 @@ "title": "Automated license reporting", "path": "enterprise/automated-license-reporting", "badge": { - "text": "HCP/ENT", + "text": "ENT", "type": "outlined", "color": "neutral" } @@ -871,7 +871,7 @@ "title": "Supported versions policy", "path": "enterprise/supported-versions", "badge": { - "text": "HCP/ENT", + "text": "ENT", "type": "outlined", "color": "neutral" } @@ -880,7 +880,7 @@ "title": "Deployment guide", "href": "https://developer.hashicorp.com/boundary/tutorials/enterprise/ent-deployment-guide", "badge": { - "text": "HCP/ENT", + "text": "ENT", "type": "outlined", "color": "neutral" } @@ -889,7 +889,7 @@ "title": "Reference architecture", "href": "https://developer.hashicorp.com/boundary/tutorials/enterprise/ent-reference-architecture", "badge": { - "text": "HCP/ENT", + "text": "ENT", "type": "outlined", "color": "neutral" }