From 6ebe7504124ccf3d573b68cfc5b1eb02042f10a1 Mon Sep 17 00:00:00 2001 From: Ian Maddaus Date: Tue, 14 Nov 2023 09:02:06 -0500 Subject: [PATCH] Licensing content (#4140) * Very initial draft of license content Signed-off-by: Ian Maddaus * Make terms page a draft Signed-off-by: Ian Maddaus * CSpell fixes Signed-off-by: Ian Maddaus * Update content Signed-off-by: Ian Maddaus * Chef-5952 Signed-off-by: Ian Maddaus * Linting content Signed-off-by: Ian Maddaus * additional editing Signed-off-by: Ian Maddaus * Update menu config Signed-off-by: Ian Maddaus * Release notes Signed-off-by: Ian Maddaus * Linting fixes Signed-off-by: Ian Maddaus * More updates Signed-off-by: Ian Maddaus * Delete page we don't need Signed-off-by: Ian Maddaus * Update license accept page Signed-off-by: Ian Maddaus * additional corrections Signed-off-by: Ian Maddaus * And more corrections Signed-off-by: Ian Maddaus * Add content from license-service Signed-off-by: Ian Maddaus --------- Signed-off-by: Ian Maddaus --- .vale.ini | 2 +- .../license-service/docs-chef-io/config.toml | 2 + .../licensing/local_license_service/_index.md | 34 ++ .../licensing/local_license_service/api.md | 156 +++++++++ .../local_license_service/backup_restore.md | 50 +++ .../local_license_service/install.md | 170 ++++++++++ .../local_license_service/reusable/README.md | 9 + .../local_license_service/reusable/index.md | 5 + _vendor/modules.txt | 1 + config/_default/menu.toml | 24 +- config/_default/module.toml | 13 + config/_default/params.toml | 3 + content/chef_license.md | 50 +-- content/chef_license_accept.md | 286 +---------------- content/licensing/_index.md | 66 ++++ content/licensing/accept.md | 303 ++++++++++++++++++ content/licensing/license_key.md | 45 +++ content/licensing/reusable/index.md | 5 + .../reusable/md/license_accept_options.md | 8 + content/licensing/terms.md | 52 +++ .../release_notes_local_license_service.md | 47 +++ content/release_notes_manage.md | 4 +- content/release_notes_supermarket.md | 2 +- content/release_notes_workstation.md | 2 +- go.mod | 3 +- go.sum | 2 + tools/vale/.vale-github-action.ini | 2 +- tools/vale/chef/chef_products.yml | 4 +- 28 files changed, 1000 insertions(+), 350 deletions(-) create mode 100644 _vendor/github.com/chef/license-service/docs-chef-io/config.toml create mode 100644 _vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/_index.md create mode 100644 _vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/api.md create mode 100644 _vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/backup_restore.md create mode 100644 _vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/install.md create mode 100644 _vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/reusable/README.md create mode 100644 _vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/reusable/index.md create mode 100644 content/licensing/_index.md create mode 100644 content/licensing/accept.md create mode 100644 content/licensing/license_key.md create mode 100644 content/licensing/reusable/index.md create mode 100644 content/licensing/reusable/md/license_accept_options.md create mode 100644 content/licensing/terms.md create mode 100644 content/release_notes_local_license_service.md diff --git a/.vale.ini b/.vale.ini index 976134d1c4..d24388985f 100644 --- a/.vale.ini +++ b/.vale.ini @@ -15,4 +15,4 @@ Vocab = Chef BasedOnStyles = chef, Microsoft, vale, write-good # Ignore SVG markup -TokenIgnores = (\*\*\{\w*\}\*\*) +TokenIgnores = (\*\*\{\w*\}\*\*), (Master License and Services Agreement) diff --git a/_vendor/github.com/chef/license-service/docs-chef-io/config.toml b/_vendor/github.com/chef/license-service/docs-chef-io/config.toml new file mode 100644 index 0000000000..d186a7e7bb --- /dev/null +++ b/_vendor/github.com/chef/license-service/docs-chef-io/config.toml @@ -0,0 +1,2 @@ +[params.license-service] +gh_path = "https://github.com/chef/license-service/tree/main/docs-chef-io/content/" diff --git a/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/_index.md b/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/_index.md new file mode 100644 index 0000000000..42121e5294 --- /dev/null +++ b/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/_index.md @@ -0,0 +1,34 @@ ++++ +title = "Chef Local License Service Overview" +draft = false +gh_repo = "license-service" + +[menu] + [menu.overview] + title = "Overview" + identifier = "overview/licensing/local/overview" + parent = "overview/licensing/local" + weight = 1 ++++ + +Chef Local License Service provides license keys to commercially licensed Chef software in an online or air-gapped environment. +Local License Service doesn't grant licenses, it stores and shares the licenses that a customer has already obtained. +You load license key data on Local License Service and then specify the Local License Service URL or IP address to each instance of a Chef application, then the application automatically connects with Local License Service and retrieves a license key each time it runs. + +For large or isolated (airgapped) fleets, Chef Local License Service has several benefits: + +- End users don't need to know the license keys for the Chef products they're using, only the Local License Service URL. +- You can control network communications to the internet as Local License Service is designed to work in isolation with Chef products. +- You don't have to manage secrets on each node that a Chef application is installed on. +- The Local License Service URL changes less frequently than a license key. +- You can scale Chef Local License Service to match your workload. + +## How Chef Local License Service works + +After installing Local License Service and uploading licensing data, users can configure Chef applications to retrieve licenses from a Local License Service URL or IP address. +Chef applications cache license keys that they've received from Local License Service while they're running and must reconnect to Local License Service to retrieve a license key when they restart. +Local License Service can automatically synchronize commercial licenses from Chef's licensing server (assuming the service has internet connectivity). + +## Get Chef Local License Service + +Contact [Chef Support](https://community.progress.com/s/products/chef) to gain access to the deployment binaries for this service. diff --git a/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/api.md b/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/api.md new file mode 100644 index 0000000000..9208063bb1 --- /dev/null +++ b/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/api.md @@ -0,0 +1,156 @@ ++++ +title = "Chef Local License Service API" +draft = false +gh_repo = "license-service" + +[menu] + [menu.overview] + title = "API" + identifier = "overview/licensing/local/API" + parent = "overview/licensing/local" ++++ + +This document describes the Chef Local License Service API endpoints that manage license data. + +## /v1/listLicenses + +The `/v1/listLicenses` endpoint has the following methods: `GET`. + +### GET + +The `GET` method lists all the licenses present within Chef Local License Service. + +#### Response codes + +| Response Code | Description | +|---------------|-------------| +| 200 | Success. | +| 400 | Error. | + +#### Examples + +```sh +curl --location --request GET 'http://:8000/v1/listLicenses' +``` + +## /v1/loadLicense + +The `/v1/loadLicense` endpoint has the following methods: `POST`. + +This endpoint isn't available in airgapped environments. + +### POST + +The `POST` method loads license data for a single license by passing in a license ID. + +#### Response codes + +| Response Code | Description | +|---------------|-------------| +| 200 | Success. | +| 400 | Error. | + +#### Examples + +```sh +curl --location --request POST 'http://:8000/v1/loadLicense' -d '{"LicenseId " : "" }' +``` + +## /v1/syncAllLicenses + +The `/v1/syncAllLicenses` endpoint has the following methods: `GET`. + +This endpoint isn't available in airgapped environments. + +### GET + +The `GET` method syncs licenses between Chef Local License Service and Chef's licensing server. + +#### Response codes + +| Response Code | Description | +|---------------|-------------| +| 200 | Success. | +| 400 | Error. | + +#### Examples + +```sh +curl --location --request GET 'http://:8000/v1/syncAllLicenses' +``` + +## /v1/uploadLicense + +The `/v1/uploadLicense` endpoint has the following methods: `POST`. + +### POST + +The `POST` method uploads license data. + +with a request body similar to: + +```json +{ + "id": "LICENSE_ID", + "version": "2", + "type": "LICENSE_TYPE", + "generator": "chef/license-(devel)", + "generatedOnDateUTC": "2023-03-28T10:50:58Z", + "refreshLastDateUTC": "2023-03-28T10:50:58Z", + "refreshNextDateUTC": "2033-03-28T10:50:58Z", + "customer": "FIRST LAST", + "customerId": "user@example.com", + "customerVersion": "1", + "bundle": "", + "evidence": { + "generated": "1680000658", + "key_sha256": "256_SHA_STRING", + "hash": "HASH_STRING" + }, + "services": null, + "features": [ + { + "name": "Inspec-Parallel", + "id": "c891f0fa-fa71-8b98-b694-7b5462595f35" + } + ], + "asset": null, + "entitlements": [ + { + "name": "APPLICATION", + "id": "APPLICATION_ID_STRING", + "measure": "node", + "limit": 1, + "grace": { + "limit": 0, + "duration": 0 + }, + "period": { + "start": "2023-03-28", + "end": "2033-03-28" + } + } + ] +} +``` + +#### Response codes + +| Response Code | Description | +|---------------|-------------| +| 200 | Success. | +| 400 | Error. | + +#### Examples + +Upload license data in a data file: + +```sh +curl --location --request POST 'http://:8000/v1/uploadLicense' --header 'Content-Type: application/json' -d @LICENSE_FILENAME.json +``` + +Upload license data as a string: + +```sh +curl --location --request POST 'http://:8000/v1/uploadLicense' --header 'Content-Type: application/json' -d "" +``` diff --git a/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/backup_restore.md b/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/backup_restore.md new file mode 100644 index 0000000000..489e49e164 --- /dev/null +++ b/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/backup_restore.md @@ -0,0 +1,50 @@ ++++ +title = "Backup and Restore" +draft = false +gh_repo = "license-service" + +[menu] + [menu.overview] + title = "Backup and Restore" + identifier = "overview/licensing/local/Backup and Restore" + parent = "overview/licensing/local" + weight = 30 ++++ + +This document provides guidance for backing up and restoring license data. + +## Backup license data + +Use SCP to backup your license data to a remote server. + +```sh +scp :@: +scp :@: +``` + +Replace the following: + +- ``: the local file path matching the `db_path` parameter value found in `/hab/default.toml` +- ``: the local file path matching the `file_path` parameter value found in the `/hab/default.toml` +- ``: the username to log in to the remote server +- ``: the remote server password +- ``: the remote server URL or IP address +- ``: the directory the files will be copied to + +## Restore license data + +Use SCP to restore your license data from a remote server. + +```sh +scp :@: +scp :@: +``` + +Replace the following: + +- ``: the local file path matching the `db_path` parameter value found in `/hab/default.toml` +- ``: the local file path matching the `file_path` parameter value found in the `/hab/default.toml` +- ``: the username to log in to the remote server +- ``: the remote server password +- ``: the remote server URL or IP address +- ``: the directory the files are backed up to diff --git a/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/install.md b/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/install.md new file mode 100644 index 0000000000..b81697b17f --- /dev/null +++ b/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/install.md @@ -0,0 +1,170 @@ ++++ +title = "Install the Chef Local License Service" +draft = false +gh_repo = "license-service" + +[menu] + [menu.overview] + title = "Install" + identifier = "overview/licensing/local/Install Airgap" + parent = "overview/licensing/local" + weight = 20 ++++ + +This document describes how to install the Chef Local License Service in an airgapped environment and load license data on it. + +## Prerequisites + +Before installing the Chef Local License Service: + +- Download the `local-license-service` Habitat package on an internet-connected workstation. Contact [Chef Support](https://community.progress.com/s/products/chef) to get access. + +Chef Local License Service requires: + +- A machine running Linux with kernel 2.6.32 or later on an x86-64 processor +- On your machine, open port 8000 for inbound traffic. + +### Airgapped environment + +If you're deploying Local License Service in an **airgapped environment**, download the license data from the Chef licensing server on an internet-connected workstation. + +```sh +curl --location 'https://services.chef.io/licensing/download?licenseId=&version=2' -o .json +``` + +Replace: + +- `` with your license ID. You can get this from [Chef Support](https://community.progress.com/s/products/chef). +- `` with a filename to save the data locally. + +## Deploy the service + +This procedure will start up the Chef Local License Service from a Chef Habitat package on a server in an airgapped environment. + +1. Unzip and untar the `chef-private-local-license-service` package. + + ```sh + tar -xvf chef-private-local-license-service-0.1.0-20230622141749.tar.gz + ``` + +1. From the directory where the `hab` directory is present, move the `hab` directory to root. + + ```sh + sudo mv hab / + ``` + +1. Create a shell script that runs this service and paste the following content. + + ```sh + cat< /etc/systemd/system/hab-sup.service + [Unit] + Description=Habitat Supervisor + [Service] + Environment=HAB_LICENSE=accept-no-persist + Type=simple + ExecStart=/usr/bin/hab sup run --strategy none + KillMode=process + LimitNOFILE=65535 + [Install] + WantedBy=default.target + EOT + systemctl daemon-reload + systemctl start hab-sup + systemctl enable hab-sup  + # wait for the sup to come up before proceeding. + until hab svc status > /dev/null 2>&1; do +   sleep 1 + done + ``` + +1. Grant permissions to the script. + + ```sh + chmod u+x FILENAME.sh + ``` + +1. Symlink the hab location. + + ```sh + sudo ln -sf /hab/bin/hab /usr/bin/hab + ``` + +1. Execute the shell script. + + ```sh + sudo ./FILENAME.sh + ``` + +1. Verify that the Chef Habitat Supervisor is running. + + ```sh + systemctl --type=service --state=running | grep hab-sup + ``` + + systemctl returns `hab-sup.service loaded active running Habitat Supervisor`. + +1. Create the Habitat user and group. + + ```sh + sudo groupadd hab + sudo useradd -g hab hab + ``` + +1. Load Local License Service package. + + ```sh + sudo hab svc load chef-private/local-license-service + ``` + +1. Verify the service is running. + + ```sh + sudo hab svc status + ``` + + This returns a status similar to: + + ```bash + package type desired state elapsed (s) pid group + chef-private/local-license-service/0.1.0/20230622141749 standalone up up 58 3047 local-license-service.default + ``` + +## Load license data + +You can load license data depending on whether your service is running in an airgapped environment or a non-airgapped environment. + +### Airgapped environment + +In an **airgapped environment**, use the `v1/uploadLicense` endpoint to load your licensing data. + +```sh +curl --location --request POST 'http://:8000/v1/uploadLicense' --header 'Content-Type: application/json' -d @.json +``` + +Replace: + +- `` with your Local Licensing Service IP address +- `` with the path and filename of your license data + +### Non-airgapped environment + +In a **non-airgapped environment**, use the `v1/loadLicense` endpoint to load your licensing data directly from the Chef's licensing server. + +```sh +curl --location 'http://:8000>/v1/loadLicense' --header 'Content-Type: application/json' --data '{"LicenseId": ""}' +``` + +Replace: + +- `` with your Local Licensing Service IP address +- `` with your license ID. + +## Verify license data + +To verify your licenses have loaded, use the `/v1/listLicenses` endpoint to list license data loaded on Local License Service. + +```sh +curl --location --request GET 'http://:8000/v1/listLicenses' +``` + +After you upload the license data, you can set your Local License Service IP address or URL in your Chef applications using the `CHEF_LICENSE_SERVER` environment setting or `--chef-license-server` CLI option. diff --git a/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/reusable/README.md b/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/reusable/README.md new file mode 100644 index 0000000000..3cd62e1350 --- /dev/null +++ b/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/reusable/README.md @@ -0,0 +1,9 @@ + +# Directory for Reusable Content + + +Files in this directory are used in *more than one place* within the Chef docs. + +Store all files in subdirectories organized by file type. For example, all Markdown files should be in `content/reusable/md/` and all Ruby files are stored in `content/reusable/rb/`. + +Add these files to a Markdown page using the [`readfile` shortcode](https://docs.chef.io/style/reuse/#readfile-shortcode). diff --git a/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/reusable/index.md b/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/reusable/index.md new file mode 100644 index 0000000000..41de90ae49 --- /dev/null +++ b/_vendor/github.com/chef/license-service/docs-chef-io/content/licensing/local_license_service/reusable/index.md @@ -0,0 +1,5 @@ ++++ +headless = true +## headless = true makes this directory a headless bundle. +## See https://gohugo.io/content-management/page-bundles/#headless-bundle ++++ diff --git a/_vendor/modules.txt b/_vendor/modules.txt index dd92c773fb..d23d2dc15e 100644 --- a/_vendor/modules.txt +++ b/_vendor/modules.txt @@ -13,6 +13,7 @@ # github.com/chef/effortless/docs-chef-io v0.0.0-20230711123605-c8beb79aba4f # github.com/chef/compliance-profiles/docs-chef-io v0.0.0-20231031143423-5ffd549d4a19 # github.com/chef/compliance-remediation-2022/docs-chef-io v0.0.0-20230809063034-95b117807a75 +# github.com/chef/license-service/docs-chef-io v0.0.0-20231109163703-41a47f861346 # github.com/cowboy/jquery-hashchange v0.0.0-20100902193700-0310f3847f90 # github.com/swiftype/swiftype-autocomplete-jquery v0.0.0-20190222215504-a90008d64b30 # github.com/swiftype/swiftype-search-jquery v1.1.0 diff --git a/config/_default/menu.toml b/config/_default/menu.toml index 1c8ff9f1fd..cb989f74bc 100644 --- a/config/_default/menu.toml +++ b/config/_default/menu.toml @@ -57,17 +57,29 @@ title = "Overview" identifier = "overview" weight = 20 + [[overview]] + title = "Licensing" + identifier = "overview/licensing" + parent = "overview" + weight = 20 + + [[overview]] + title = "Chef Local License Service" + identifier = "overview/licensing/local" + parent = "overview/licensing" + weight = 999 + [[overview]] title = "Community" identifier = "overview/community" parent = "overview" - weight = 20 + weight = 30 [[overview]] title = "Packages & Platforms" identifier = "overview/packages_&_platforms" parent = "overview" - weight = 30 + weight = 40 [[overview]] title = "Download" @@ -75,17 +87,11 @@ weight = 20 parent = "overview/packages_&_platforms" weight = 50 - [[overview]] - title = "Licensing" - identifier = "overview/packages_&_platforms/licensing" - parent = "overview/packages_&_platforms" - weight = 60 - [[overview]] title = "Style Guide" identifier = "overview/style" parent = "overview" - weight = 80 + weight = 90 [[overview]] title = "Formatting" diff --git a/config/_default/module.toml b/config/_default/module.toml index dd81be6a96..531169dc7d 100644 --- a/config/_default/module.toml +++ b/config/_default/module.toml @@ -319,6 +319,19 @@ source = "content" target = "content" +### +# Local License Service +### + +[[imports]] + disable = false + ignoreConfig = false + path = "github.com/chef/license-service/docs-chef-io" + +[[imports.mounts]] + source = "content/licensing/local_license_service" + target = "content/licensing/local_license_service" + ### ## Mount generated/genereted_content to content ### diff --git a/config/_default/params.toml b/config/_default/params.toml index 8c75dd5bb8..811767add2 100644 --- a/config/_default/params.toml +++ b/config/_default/params.toml @@ -7,3 +7,6 @@ robots = '' [chef-web-docs] gh_path = "https://github.com/chef/chef-web-docs/blob/main/content/" + +[license-service] +gh_path = "https://github.com/chef/license-service/tree/main/docs-chef-io/content/" diff --git a/content/chef_license.md b/content/chef_license.md index 7a9613842b..bd3e949a3d 100644 --- a/content/chef_license.md +++ b/content/chef_license.md @@ -2,52 +2,6 @@ title = "About Chef Licenses" draft = false gh_repo = "chef-web-docs" -aliases = ["/chef_license.html"] -product = ["automate", "client", "server", "habitat", "inspec", "supermarket", "workstation"] - -[menu] - [menu.overview] - title = "About Licensing" - identifier = "overview/packages_&_platforms/licensing/chef_license.md About Licensing" - parent = "overview/packages_&_platforms/licensing" - weight = 10 +layout="redirect" +redirect_url="/license/" +++ - -All Chef products have a license that governs the entire product, while -some have separate licenses for the project source code and the -distribution that we build from it. Third-party software included in our -distributions may have individual licenses, which are listed in the -`/opt//LICENSE` file. Individual copies of all referenced -licenses can be found in the `/opt//LICENSES` directory. - -In April 2019 many of our software distributions switched to being -governed under the Chef EULA, while the software projects remained -governed by the Apache 2.0 license. To understand which license applies -to those distributions, see the [versions page](/versions/). General -information about this change can be found in our -[announcement](https://www.chef.io/blog/chef-software-announces-the-enterprise-automation-stack). - -## Chef EULA - -The commercial distributions of our products---such as Chef Infra -Client, Chef Habitat, or Chef InSpec--- are governed by either the -[Chef End User License Agreement (Chef -EULA)](https://www.chef.io/end-user-license-agreement) or your -commercial agreement with Progress Software Corporation as a customer. You are -required to accept these terms when using the distributions for the -first time. For additional information on how to accept the license, see -[Accepting the Chef License](/chef_license_accept/) documentation. - -## Chef MLSA - -Distributions of older proprietary Chef products---such as Chef Automate -1.x and the Chef Management Console---are governed by the [Chef Master -License and Services Agreement (Chef -MLSA)](https://www.chef.io/online-master-agreement), which must be -accepted as part of any install or upgrade process. - -## Apache 2.0 - -All source code of our open source Chef projects---such as Chef Infra Client, Chef -Automate, or Chef InSpec---are governed by the [Apache 2.0 -license](https://www.apache.org/licenses/LICENSE-2.0). diff --git a/content/chef_license_accept.md b/content/chef_license_accept.md index 523551d763..e0008fbfbd 100644 --- a/content/chef_license_accept.md +++ b/content/chef_license_accept.md @@ -1,289 +1,7 @@ +++ title = "Accepting the Chef License" draft = false - gh_repo = "chef-web-docs" - -aliases = ["/chef_license_accept.html"] -product = ["automate", "client", "server", "habitat", "inspec", "supermarket", "workstation"] - -[menu] - [menu.overview] - title = "Accepting License" - identifier = "overview/packages_&_platforms/licensing/chef_license_accept.md Accepting License" - parent = "overview/packages_&_platforms/licensing" - weight = 20 +layout="redirect" +redirect_url="/license/accept/" +++ - -This page aims to document how to accept the Chef license for all Chef Software products. For an overview of the license, see the [Chef license](/chef_license/) documentation. There are two types of license: MLSA and EULA. The MLSA applies to customers with a commercial contract with Chef Software, and the EULA covers all other cases. - -## Accept the Chef MLSA - -There are three ways to accept the Chef MLSA: - -1. When running `chef--ctl reconfigure` the Chef MLSA is printed. Type `yes` to accept it. Anything other than typing `yes` rejects the Chef MLSA, and the upgrade process will exit. Typing `yes` adds a `.license.accepted` file to the `/etc/chef/accepted_licenses/` file. As long as this file exists in this directory, the Chef MLSA is accepted and the reconfigure process will not prompt for `yes`. -2. Run the `chef--ctl reconfigure` command using the `--chef-license=accept` option. This automatically types `yes` and skips printing the Chef MLSA. -3. Add a `.license.accepted` file to the `/var/opt//` directory. The contents of this file do not matter. As long as this file exists in this directory, the Chef MLSA is accepted and the reconfigure process will not prompt for `yes`. - -## Accept the Chef EULA - -Products below are split below into two categories: workstation and server. Affected product versions which require accepting the EULA to use are shown. Versions before this do not require accepting the EULA. More information on supported versions can be seen at the [Supported Versions](/versions/) documentation. - -### Workstation Products - -- Chef Workstation \>= 0.4, which also contains: - - Chef Infra Client - - Chef InSpec -- Chef Infra Client \>= 15.0 -- Chef InSpec \>= 4.0 -- Chef Habitat \>= 0.80 - -These products are typically installed on a user's workstation. Two common methods for accepting the license are: - -1. `--chef-license ` argument passed to the command line invocation. -1. `CHEF_LICENSE=""` as an environment variable. - `` can be specified as one of the following: - 1. `accept` - Accepts the license and attempts to persist a marker file locally. Persisting these marker files means future invocations do not require accepting the license again. - 1. `accept-silent` - Similar to `accept` except no messaging is sent to STDOUT - 1. `accept-no-persist` - Similar to `accept-silent` except no marker file is persisted. Future invocation will require accepting the license again. - -If no command line argument or environment variable is set, these products will attempt to request acceptance through an interactive prompt. If the prompt cannot be displayed, then the product will fail with an exit code 172. - -If the product attempts to persist the accepted license and fails, a message will be sent to STDOUT, but product invocation will continue successfully. In a future invocation, however, the license would need to be accepted again. - -Please see [License File Persistence](https://github.com/chef/license-acceptance#license-file-persistence) for details about persisted marker files. - -The `--chef-license` command line argument is not backwards compatible to older non-EULA versions. If you are managing a multi-version environment, we recommend using the environment variable as that is ignored by older versions. - -Products with specific features or differences from this general behavior are documented below. - -#### Chef Workstation - -Chef Workstation contains multiple Chef Software products. When invoking the `chef` command line tool and accepting the license, users are required to accept the license for all the embedded products as well. The same license applies to all products, but each product must have its own license acceptance. `chef --chef-license accept` will accept the license for Chef Workstation, Chef Infra Client, and Chef InSpec. For example, `chef env --chef-license accept`. - -#### Chef Infra Client - -In addition to the above methods, users can specify `chef_license 'accept'` in their Chef Infra Client and Chef Infra Server config. On a workstation, this can be specified in `~/.chef/config.rb` or `~/.chef/knife.rb`, and on a node, it can be specified in `/etc/chef/client.rb`. This method of license acceptance is backwards-compatible to non-EULA versions of Chef Infra Client. - -#### Chef Habitat - -There are two methods for accepting the Chef Habitat license: - -1. Users can execute `hab license accept` on the command line. -1. Alternatively, users can set `HAB_LICENSE=""` as an environment variable. - `` can be specified as one of the following: - 1. `accept` - Accepts the license and persists a marker file locally. Future invocations do not require accepting the license again. - 1. `accept-no-persist` - accepts the license without persisting an marker file. Future invocation will require accepting the license again. - -If the license is not accepted through either of these methods, Chef Habitat will request acceptance through an interactive prompt. - -Additionally, to accepting the license in CI or other automation, user may choose to create an empty file on the filesystem at `/hab/accepted-licenses/habitat` (if your hab commands run as root) or at `$HOME/.hab/accepted-licenses/habitat` (if your hab commands run as a user other than root). For situations where hab commands run as multiple users, it is advisable to create both files. - -#### Errors - -If the Chef Habitat License prompt cannot be displayed, then the product fails with an exit code 172. If Chef Habitat cannot persist the accepted license, it sends a message STDOUT, but the product invocation will continue successfully. In a future invocation, however, the user will need to accept the license again. - -#### Chef as `hab` packages - -Chef Software products are also distributed as `hab` packages. When Chef products are installed using Chef Habitat, the products request license acceptance at product usage time. Accept the licenses in the same way detailed above. - -### Server Products - -Some Chef products distributed as `hab` packages contain servers. In these cases, Chef Habitat runs the server products as a supervisor. See the below sections for information on how to accept the license for these products when they are distributed as `hab` packages. - - ---- - - - - - - - - - - - - - - - - - - - - -
ProductVersion
Chef Infra Server>= 13.0
Chef Automate>= 2.0
Supermarket>= 4.0
- -Server products are typically installed and managed by some kind of process supervisor. Chef Software server products do not allow interactive license acceptance because process supervisors do not allow interactivity. Instead, the license is accepted during the `reconfigure` command or `upgrade` command for the Omnibus ctl command. For example: - -- `chef-server-ctl reconfigure --chef-license=accept` -- `CHEF_LICENSE="accept-no-persist" supermarket-ctl reconfigure` - -In addition, the Chef license can be accepted via the omnibus configuration file. Specify `chef_license 'accept'` in the `chef-server.rb` or `supermarket.rb` configuration. - -#### Chef Automate - -Chef Automate has its own reconfigure tool, `automate-ctl`. This tool walks users through the install and setup of Chef Automate. The Chef license is accepted after that in the browser. Please follow the in-product prompts. - -#### Chef Infra Server - -When installed as a system package, users accept the license with the ctl command. For example, `chef-server-ctl reconfigure --chef-license=accept`. Acceptance can also be set in the configuration file `chef-server.rb` as `chef_license "accept"`. - -Chef Infra Server is also distributed as a `hab` package and ran using the supervisor. In this mode, users accept the license by setting the correct configuration values. The key is `chef_license.acceptance`. - -For example: Against a supervisor running Chef Infra Server, run `echo "chef_license.acceptance = accept" | hab config apply server.default 100`. See the [Chef Habitat config updates documentation](/habitat/service_updates/) for more information about how to apply this configuration to a service group. - -### Remote Management Products - -- Test Kitchen -- `knife bootstrap` in Chef Infra Client -- `chef-run` in Chef Workstation -- Packer -- Terraform Chef Provider (Deprecated) -- Vagrant - -These products install or manage Chef on a remote instance. If a user has accepted the appropriate product license locally, it will be automatically transferred to the remote instance. For example, if a user has accepted the Chef Infra Client license locally and converges a Test Kitchen instance with the Chef provisioner, it will succeed by copying the acceptance to the remote instance. We aim to support this behavior, so Workstation users do not have their workflow affected, but any differences from that behavior are documented below. - -#### Test Kitchen - -Test Kitchen is not owned by or covered by the Chef license, but installing Chef Infra Client on a test instance is covered by the EULA. Without accepting the license, the converge will fail on the test instance. - -The Chef provisioner in Test Kitchen \>= 2.3 has been updated to simplify accepting this license on behalf of the test instance. Users can set the `CHEF_LICENSE` environment variable or add `chef_license: accept` to their provisioner config in their **kitchen.yml**. Specifying **accept** will attempt to persist the license acceptance locally. If a local license marker file is detected, no configuration is required; acceptance is automatically transferred to the test instance. - -To disable this persistence, specify `accept-no-persist` on every test instance converge. - -`kitchen-inspec` uses Chef InSpec as a library, and is not covered by the EULA when installed as a gem, but is covered by the EULA when packaged as part of the Chef Workstation installation. Accept the license in a similar way to the Chef Infra Client license - specify the `CHEF_LICENSE` environment variable, specify the `chef_license` config under the verifier section in `kitchen.yml` or persist the acceptance locally. - -##### Test Kitchen: Pin to Chef 14 - -You can pin to a specific version of chef in your kitchen.yml: - -```none -provisioner: - name: chef_zero - product_name: chef - product_version: 14.12.3 -``` - -#### `knife bootstrap` - -`knife` usage does not require accepting the EULA. A Chef Infra Client instance does require EULA acceptance. Using `knife bootstrap` to manage a Chef Infra Client instance will prompt a user to accept the license locally before allowing for bootstrapping the remote instance. Without this, `knife bootstrap` would fail. - -In most usage cases via Chef Workstation, this license will already have been accepted and will transfer across transparently. But if a user installs Chef Workstation and the first command they ever run is `knife bootstrap`, it will perform the same license acceptance flow as the Chef Infra Client product. - -##### `knife bootstrap` in Chef Infra Client 14 - -The `knife bootstrap` command in Chef Infra Client 14 cannot accept the Chef Infra Client 15 EULA on remote nodes unless you use a [custom template](/workstation/knife_bootstrap/#custom-templates) and add chef_license "accept" to the client.rb. This applies to workstations who have Chef Infra Client \<= 14.x, ChefDK \<= 3.x or Chef Workstation \<= 0.3 installed. - -##### `knife bootstrap`: Pin to Chef 14 - -Specify the following argument: - -```bash -knife bootstrap --bootstrap-version 14.12.3 -``` - -#### `chef-run` - -`chef-run` in Chef Workstation \>= 0.3 has been updated to add support for accepting the license locally when remotely running Chef Infra Client 15. As of Chef Workstation \<= 0.4 there is no way to manage the version of Chef Infra Client installed on the remote node. It defaults to the latest stable version available. - -To accept the license, complete one of the following three tasks. Either pass the `--chef-license` command line flag, set the `CHEF_LICENSE` environment variable, or add the following to your `~/.chef-workstation/config.toml` file: - -```none -[chef] -chef_license = "accept" -``` - -#### Packer - -Use a custom [Chef configuration template](https://www.packer.io/docs/provisioners/chef/chef-client#chef-configuration). In your provisioners config, include: - -```json -{ - "type": "chef-client", - "config_template": "path/to/client.rb" -} -``` - -In `path/to/client.rb`, include: - -```ruby -chef_license 'accept' -``` - -You may also add it to the [execute_command](https://www.packer.io/docs/provisioners/chef-client.html#execute_command), but this is not backwards-compatible, so it is not suggested. - -##### Packer: Pin to Chef 14 - -In your [Packer provisioners -config](https://www.packer.io/docs/provisioners/chef-client.html#install_command), -include: - -```json -{ - "type": "chef-client", - "install_command": "curl -L https://omnitruck.chef.io/install.sh | sudo bash -s -- -v 14.12.9" -} -``` - -#### Terraform Chef Provisioner - -{{< warning >}} -Terraform deprecated the Chef Provisioner in the [0.13.4](https://www.terraform.io/docs/language/resources/provisioners/chef.html) release and they will remove it in a future version. Terraform continues to support the Chef Provider. -{{< /warning >}} - -The license can be accepted via the Chef Infra Client config file, which is specified by the `client_options` [Terraform provisioner config](https://www.terraform.io/docs/provisioners/chef.html#client_options-array-): - -```none -provisioner "chef" { - client_options = ["chef_license 'accept'"] -} -``` - -##### Terraform: Pin to Chef 14 - -In your [Terraform provisioner config](https://www.terraform.io/docs/provisioners/chef.html#version-string-), include: - -```none -provisioner "chef" { - version = "14.12.3" -} -``` - -#### Vagrant - -This license acceptance can be done via the arguments API: - -```ruby -config.vm.provision 'chef_zero' do |chef| - chef.arguments = '--chef-license accept' -end -``` - -See the [Vagrant documentation](https://www.vagrantup.com/docs/provisioning/chef_common.html#arguments) for details. The `--chef-license` argument is not backwards-compatible to non-EULA Chef Infra Client versions. So instead, users can use the [custom config path](https://www.vagrantup.com/docs/provisioning/chef_common.html#custom_config_path) and point at a local file, which specifies the `chef_license` config. The environment variable is not currently supported. - -##### Vagrant: Pin to Chef 14 - -This version pinning can be done using the [version API](https://www.vagrantup.com/docs/provisioning/chef_common.html#version). In your Chef provisioner config: - -```ruby -config.vm.provision 'chef_zero' do |chef| - chef.version = '14.12.3' -end -``` - -### Pre-upgrade support - -Chef Software aims to make upgrading from a non-EULA version to a EULA version as simple as possible. For some products (Chef Infra Client 14.12.9, Chef InSpec 3.9.3), we added backwards-compatible support for the `--chef-license` command that performs a no-op. This allows customers to start specifying that argument in whatever way they manage those products before upgrading. - -Alternatively, users can specify the `CHEF_LICENSE` environment variable when invoking any of the EULA products to accept the license. This environment variable is ignored by non-EULA products, and so is backwards-compatible to older versions. - -#### `chef-client` cookbook - -For users that manage their Chef Infra Client installation using the `chef-client` cookbook, we added a new attribute that can be specified. Specify the node attribute `node['chef_client']['chef_license'] = 'accept'` when running the cookbook to apply the license acceptance in a backwards-compatible way. - -This functionality allows users to set that attribute for a Chef Infra Client 14 install, upgrade to Chef Infra Client 15, and have the product continue to work correctly. diff --git a/content/licensing/_index.md b/content/licensing/_index.md new file mode 100644 index 0000000000..e4df00004f --- /dev/null +++ b/content/licensing/_index.md @@ -0,0 +1,66 @@ ++++ +title = "About Chef Licenses" +draft = false +gh_repo = "chef-web-docs" +aliases = ["/chef_license.html", "/chef_license/", "/license/"] + +[cascade] + product = ["automate", "client", "server", "habitat", "inspec", "supermarket", "workstation"] + +[menu] + [menu.overview] + title = "About Licensing" + identifier = "overview/licensing/chef_license.md About Licensing" + parent = "overview/licensing" + weight = 10 ++++ + +This document gives an overview of Chef product licenses and license tiers. + +Before you can use distributions of Chef products, you must [accept the Chef End User License Agreement (Chef EULA)](accept). + +The following products also require a [license key](license_key): + +- Chef InSpec 6 or greater + +Licensing is available for non-profit, research, and academic organizations through a special, free, or highly discounted commercial license in [Progress Chef's Non-Profit Entitlement Program](https://www.chef.io/nonprofit-entitlement-program). + +## Licenses + +All Chef products are governed by the [Chef End User License Agreement (Chef EULA)](#chef-eula) or the [Chef Master License and Services Agreement (Chef MLSA)](#chef-mlsa). The source code of open-source Chef projects is governed by the [Apache 2.0 license](#apache-20). + +Third-party software included in our distributions may have individual licenses which are listed in the `/opt//LICENSE` file. You can find individual copies of all referenced licenses in the `/opt//LICENSES` directory. + +### Chef EULA + +The [Chef End User License Agreement (Chef EULA)](https://www.chef.io/end-user-license-agreement) or your commercial agreement with Progress Software Corporation +governs the commercial distributions of Progress Chef products--such as Chef Infra Client, Chef Habitat, or Chef InSpec. You must accept these terms when using the distributions for the first time. For additional information on how to accept the license, see [Accepting the Chef License](accept) documentation. + +### Chef MLSA + +The [Chef Master License and Services Agreement (Chef MLSA)](https://www.chef.io/online-master-agreement) governs distributions of older proprietary Chef products--such as Chef Automate 1.x and the Chef Management Console. You must accept this license as part of any install or upgrade process. + +### Apache 2.0 + +The [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) governs the reuse of source code of open-source Progress Chef projects---including Chef Infra Client ("chef"), Chef InSpec, and Chef Habitat---unless specified otherwise in the project's repository. +Source code is released publicly through repositories in these organizations: + +- [Progress Chef](https://github.com/chef) +- [Progress Chef InSpec](https://github.com/inspec) +- [Progress Chef Habitat](https://github.com/habitat-sh) + +Progress Chef identifies third-party software included in our distributions in the `/opt//LICENSE` file of our distribution. Full copies of all third-party referenced licenses are in the `/opt//LICENSES` directory. + +Intermediate products--such as binaries, modules, containers, and executables (including scripts or interpreted language files such as Ruby)--that Progress Chef releases on sites other than GitHub are governed by the [Chef EULA](#chef-eula). These products require a license and aren't considered open source. + +For further questions, please contact [Chef Developer Relations](https://community.chef.io/). + +## License tiers + +Progress Chef offers three license tiers that have different entitlements: Free, Trial, and Commercial. + +| License | Duration | Environment | Support | Uses | +|---|---|---|---|---| +| Free | Unlimited | Non-production workloads | Community support in Slack | Personal and non-commercial use | +| Trial | 30 days | Non-production workloads | Community support in Slack and solution architect support | Product evaluation in a non-production environment | +| Commercial | Renewable | Production and non-production workloads | Support by contract | Enterprise workloads | diff --git a/content/licensing/accept.md b/content/licensing/accept.md new file mode 100644 index 0000000000..9fe2c61f66 --- /dev/null +++ b/content/licensing/accept.md @@ -0,0 +1,303 @@ ++++ +title = "Accept the Chef License" +draft = false +gh_repo = "chef-web-docs" +aliases = ["/chef_license_accept.html", "/chef_license_accept/"] + +[menu] + [menu.overview] + title = "Accept License" + identifier = "overview/licensing/Accepting License" + parent = "overview/licensing" + weight = 20 ++++ + +This document describes how to accept the End User License Agreement (EULA) and Master License and Services Agreement (MLSA). +For an overview of Chef's license, see the [Chef License](/licensing/) documentation. + +Chef has two licenses: Master License and Services Agreement (MLSA) and End User License Agreement (EULA). + +## Accept the Chef MLSA + +You can accept the Chef MLSA using one of the following ways: + +1. When running `chef--ctl reconfigure` the Chef MLSA is printed. Type `yes` to accept it. Anything other than typing `yes` rejects the Chef MLSA, and the upgrade process will exit. Typing `yes` adds a `.license.accepted` file to the `/etc/chef/accepted_licenses/` file. As long as this file exists in this directory, the Chef MLSA is accepted and the reconfigure process won't prompt for `yes`. +2. Run the `chef--ctl reconfigure` command using the `--chef-license=accept` option. This automatically types `yes` and skips printing the Chef MLSA. +3. Add a `.license.accepted` file to the `/var/opt//` directory. The contents of this file don't matter. As long as this file exists in this directory, the Chef MLSA is accepted and the reconfigure process won't prompt for `yes`. + +### Chef Automate + +The Chef Automate reconfigure tool---`automate-ctl`---walks users through the install and setup of Chef Automate. +Accept the Chef MLSA after that in the browser. Follow the in-product prompts. + +## Accept the Chef EULA + +If no command line argument or environment variable is set, Chef products attempt to request acceptance through an interactive prompt. If the prompt can't be displayed, the product will fail with an exit code 172. + +If the product attempts to persist the accepted license and fails, a message is sent to STDOUT but product invocation will continue successfully. +In a future invocation, you must accept the Chef License again. + +See [License File Persistence](https://github.com/chef/license-acceptance#license-file-persistence) for details about persisted marker files. + +### Chef Habitat + +You can accept the Chef License using a `hab` CLI command or with an environment variable. + +If the license isn't accepted through either of these methods, Chef Habitat will request that you accept the license through an interactive prompt. + +#### Options + +Chef Habitat accepts the following license acceptance options: + +`accept` +: Accept the license and attempts to persist a marker file locally. Persisting these marker files means future invocations don't require accepting the license again. + +`accept-no-persist` +: Accept the license silently but no marker file is persisted. Future invocation will require accepting the license again. + +#### Command line option + +You can use the `hab` CLI to accept the Chef License. + +```sh +hab license +``` + +#### Environment variable + +You can set an environment variable to accept the Chef License. For example: + +```sh +export HAB_LICENSE="" +hab -V +``` + +Replace `` with one of the Chef License options. + +#### CI environment + +To accept the Chef License in CI or other automated environments: + +- If your `hab` commands run as root, create an empty file on the filesystem at `/hab/accepted-licenses/habitat`. +- If your `hab` commands run as a user other than root, create an empty file at `$HOME/.hab/accepted-licenses/habitat`. +- For situations where `hab` commands run as multiple users, create both files. + +#### Errors + +If the Chef Habitat license prompt can't be displayed, then the product fails with an exit code 172. +If Chef Habitat can't persist the accepted license, it sends a message STDOUT but the product invocation will continue successfully. +You must accept the Chef License again in a future invocation. + +#### Chef products as `hab` packages + +Chef products are also distributed as `hab` packages. +When you install Chef products using Chef Habitat, those products also request license acceptance. + +#### Chef server products as `hab` packages + +The following Chef server products are distributed as `hab` packages that Chef Habitat runs as a supervisor: + +- Chef Infra Server +- Chef Automate +- Chef Supermarket + +Server products are typically installed and managed by some kind of process supervisor. +Chef server products don't allow interactive license acceptance because process supervisors don't allow interactivity. +Instead, accept the Chef License during the `reconfigure` command or `upgrade` command for the Omnibus ctl command. + +##### Command line option + +Accept the Chef License with the command line option. For example: + +```sh +chef-server-ctl reconfigure --chef-license= +``` + +##### Environment variable + +Accept the Chef License with an environment variable. For example: + +```sh +CHEF_LICENSE="" supermarket-ctl reconfigure +``` + +##### Config file + +You can also accept the Chef License using the omnibus configuration file. +Specify `chef_license 'accept'` in the `chef-server.rb` or `supermarket.rb` configuration. + +### Chef Infra Client + +Chef Infra Client accepts a license using a command line option, environment variable, or config file. + +#### Options + +Chef Infra Client accepts the following license acceptance options: + +{{< readfile file="content/licensing/reusable/md/license_accept_options.md" >}} + +#### Command line option + +Accept the Chef License with a command line invocation. + +```sh +chef-client --chef-license +``` + +#### Environment variable + +Accept the Chef License by setting an environment variable. For example: + +```sh +export CHEF_LICENSE="" +chef-client OPTION VALUE +``` + +#### Config file + +You can accept the Chef License with the Chef Infra Client or Knife config files. + +On a workstation, you can set this in the [`~/.chef/config.rb` or `~/.chef/knife.rb` files](/workstation/config_rb/), and on a node you can set this in the [`/etc/chef/client.rb`]({{< relref "/config_rb_client" >}}) file. + +```ruby +chef_license "" +``` + +### Chef Infra Server + +When installed as a system package, users accept the Chef License with the `chef-server-ctl` command or with the [`chef-server.rb`](/server/config_rb_server/) file. + +#### Options + +Chef Infra Server accepts the following license acceptance options: + +{{< readfile file="content/licensing/reusable/md/license_accept_options.md" >}} + +#### Command line option + +You can accept the Chef License with the `chef-server-ctl` command. + +```sh +chef-server-ctl reconfigure --chef-license= +``` + +#### Config file + +You can accept the Chef License with the [`chef-server.rb`](/server/config_rb_server/) file. + +```ruby +chef_license "" +``` + +#### Chef Habitat package + +Chef Infra Server is also distributed as a `hab` package and run using the Chef Habitat Supervisor. In this mode, users accept the Chef License by setting the correct configuration values. The key is `chef_license.acceptance`. + +For example, against a Supervisor running Chef Infra Server, run `echo "chef_license.acceptance = accept" | hab config apply server.default 100`. +See the [Chef Habitat config updates documentation]({{< relref "/habitat/service_updates" >}}) for more information about how to apply this configuration to a service group. + +### Chef InSpec + +Chef InSpec accepts a license using a command line option or environment variable. + +#### Options + +Chef InSpec accepts the following license acceptance options: + +{{< readfile file="content/licensing/reusable/md/license_accept_options.md" >}} + +#### Command line option + +Accept the Chef License with a command line invocation. + +```sh +inspec exec --chef-license +``` + +#### Environment variable + +Accept the Chef License by setting an environment variable. For example: + +```sh +export CHEF_LICENSE="" +inspec exec +``` + +### Chef Workstation + +Chef Workstation is bundled with several Chef products. +When invoking the `chef` command line tool and accepting the Chef License, you must accept the license for all the embedded products as well. +The same license applies to all products, but each product must have its own license acceptance. + +#### Options + +Chef Workstation accepts the following license acceptance options: + +{{< readfile file="content/licensing/reusable/md/license_accept_options.md" >}} + +#### Command line option + +Use the [`chef` executable](/workstation/ctl_chef/) to accept the Chef License for Chef Workstation, Chef Infra Client, and Chef InSpec. + +```sh +chef --chef-license +``` + +### Remote management products + +If a user has accepted the appropriate product license locally, the following remote management products that can install or manage Chef products on a remote instance, will transfer the Chef License acceptance to the remote instance. + +- Test Kitchen +- `knife bootstrap` in Chef Infra Client +- `chef-run` in Chef Workstation +- Packer +- Terraform Chef Provider (Deprecated) +- Vagrant + +For example, if a user has accepted the Chef Infra Client license locally and converges a Test Kitchen instance with the Chef provisioner, it will succeed by copying the acceptance to the remote instance. +We aim to support this behavior so Workstation users don't have their workflow affected, but any differences from that behavior are documented below. + +#### Test Kitchen + +Test Kitchen isn't owned by or covered by the Chef License, but installing Chef Infra Client on a test instance is covered by the EULA. Without accepting the Chef License, the converge will fail on the test instance. + +Users can set the `CHEF_LICENSE` environment variable or add `chef_license: accept` to their provisioner config in the [`kitchen.yml` file](/workstation/kitchen/#kitchenyml). +If you specify `accept`, Test Kitchen will attempt to persist the license acceptance locally. +If Test Kitchen detects a local license marker file, acceptance is automatically transferred to the test instance. + +To disable this persistence, specify `accept-no-persist` on every test instance converge. + +`kitchen-inspec` uses Chef InSpec as a library and isn't covered by the EULA when installed as a gem, but is covered by the EULA when packaged as part of the Chef Workstation installation. +Accept the license in a similar way to the Chef Infra Client license - specify the `CHEF_LICENSE` environment variable, specify the `chef_license` config under the verifier section in `kitchen.yml` or persist the acceptance locally. + +#### `knife bootstrap` + +You don't have to accept the EULA to use the `knife` executable, but a Chef Infra Client instance does require EULA acceptance. Using `knife bootstrap` to manage a Chef Infra Client instance will prompt a user to accept the license locally before allowing for bootstrapping the remote instance. Without this, `knife bootstrap` fails. + +Usually with Chef Workstation, this license will already have been accepted and will transfer across transparently. +But if a user installs Chef Workstation and the first command they run is `knife bootstrap`, it will perform the same license acceptance flow as the Chef Infra Client product. + +#### `chef-run` + +To accept the Chef License using the [`chef-run` executable](/workstation/chef_run/), complete one of the following three tasks: + +- Pass the `--chef-license` command line flag +- Set the `CHEF_LICENSE` environment variable +- Add the license acceptance to your `~/.chef-workstation/config.toml` file: + + ```toml + [chef] + chef_license = "accept" + ``` + +#### Vagrant + +You can accept the Chef License with the arguments API: + +```ruby +config.vm.provision 'chef_zero' do |chef| + chef.arguments = '--chef-license accept' +end +``` + +See the [Vagrant documentation](https://www.vagrantup.com/docs/provisioning/chef_common.html#arguments) for details. diff --git a/content/licensing/license_key.md b/content/licensing/license_key.md new file mode 100644 index 0000000000..4b5d440d8e --- /dev/null +++ b/content/licensing/license_key.md @@ -0,0 +1,45 @@ ++++ +title = "Add a Chef License Key" +draft = false +gh_repo = "chef-web-docs" + +[menu] + [menu.overview] + title = "Add License Key" + identifier = "overview/licensing/Add License" + parent = "overview/licensing" + weight = 30 ++++ + +This page describes how to add a license key to a Chef product. + +You can find your license key on the [customer support portal](https://community.progress.com/s/products-list). + +## Products + +The following products require a Chef License key to run: + +- [Chef InSpec 6 or greater](/inspec/license/) + +## Add license key + +Chef products accept a license key with either an environment variable or as a command line argument. + +License data is stored locally in a configuration file at `$HOME/.chef/licenses.yaml`. + +### Command line option + +Use the `--chef-license-key` command line option to add a license key. + +```sh + --chef-license-key +``` + +### Environment variable + +Use the `CHEF_LICENSE_KEY` environment variable to add a license. + +```sh +export CHEF_LICENSE_KEY= + +``` diff --git a/content/licensing/reusable/index.md b/content/licensing/reusable/index.md new file mode 100644 index 0000000000..41de90ae49 --- /dev/null +++ b/content/licensing/reusable/index.md @@ -0,0 +1,5 @@ ++++ +headless = true +## headless = true makes this directory a headless bundle. +## See https://gohugo.io/content-management/page-bundles/#headless-bundle ++++ diff --git a/content/licensing/reusable/md/license_accept_options.md b/content/licensing/reusable/md/license_accept_options.md new file mode 100644 index 0000000000..179ba8b28d --- /dev/null +++ b/content/licensing/reusable/md/license_accept_options.md @@ -0,0 +1,8 @@ +`accept` +: Accept the license and attempts to persist a marker file locally. Persisting these marker files means future invocations don't require accepting the license again. + +`accept-silent` +: Similar to `accept`, but no messaging is sent to STDOUT. + +`accept-no-persist` +: Similar to `accept-silent`, but no marker file is persisted. Future invocation will require accepting the license again. diff --git a/content/licensing/terms.md b/content/licensing/terms.md new file mode 100644 index 0000000000..35da094a46 --- /dev/null +++ b/content/licensing/terms.md @@ -0,0 +1,52 @@ ++++ +title = "Chef Licensing Terms" +draft = false +gh_repo = "chef-web-docs" + +[menu] + [menu.overview] + title = "Terms" + identifier = "overview/licensing/Terms" + parent = "overview/licensing" + weight = 30 ++++ + +Node +: An individual component of your system, physical or virtual (for example, a server, workstation, IP router, virtual machine, or another device or component), that's assessed, installed, configured, updated, scanned and/or managed using any Chef product. + +Scan +: A rules-based inspection of a target. There can be many scans applied to a target. + +Target +: Each instance of infrastructure, software, configuration, cloud accounts, container hosts, or other technical resource that's the compliance target of one or more Chef InSpec profiles used by you. Each target can access a resource with its credentials and locations. + +Subscription License +: One of the license types that continue until the expiration of the subscription period identified in the order, unless earlier terminated in accordance with the terms of the [Progress Chef End User License Agreement](https://www.chef.io/end-user-license-agreement). + +Licensed Unit +: "License Unit" types/metrics include node, entitled content, service instance, target and/or endpoint. + +Measurement of License Units/License Consumption Data +: Measurement of usage of a license unit. It's a numerical value based on the bundle\SKU or add-on(s) customer has purchased. + +Free-tier Users +: Users using a Free License of Chef (User will only get the executable but restricted in some way), not the code base. + +Trial Users +: Users downloading Chef products to evaluate its benefit to their organizations (restricted by time and limited features) + +Commercial Users +: Customers who have purchased a Chef license and are entitled to features/services (restricted based on the purchase order - #of days, #of nodes/target) + +Community Users +: [Open Source] CINC Users. [Free] Infra <= 12, Inspec <= 3 + Users that use older versions of Chef open-source software or downstream OSS distributions of Chef (CINC). + +Open Source +: Chef Code available to all under Apache License, Version 2.0. This isn't same as access to any licensed Chef products or free Chef products. + +Open Source Users +: Users who download the source code and build executables on their own, or get binaries/executables from open derivative work to confirming Apache License, Version 2.0. These users need not purchase license to use the product. + +Endpoint +: A compute device such as a laptop, desktop, or a tablet that's a primary workstation of a knowledge worker/student that has Chef supported platforms and is assessed, installed, configured, updated, scanned and is managed using Chef Desktop. diff --git a/content/release_notes_local_license_service.md b/content/release_notes_local_license_service.md new file mode 100644 index 0000000000..9b67dca221 --- /dev/null +++ b/content/release_notes_local_license_service.md @@ -0,0 +1,47 @@ ++++ +title = "Chef Local License Service Release Notes" +draft = false +product = [] + +[menu] + [menu.release_notes] + title = "Chef Local License Service" + identifier = "release_notes/Chef Local License Service" + parent = "release_notes" + weight = 70 ++++ + +Chef Local License Service provides license keys to commercially licensed Chef software in an online or air-gapped environment. +You load license key data on Local License Service and then specify the Local License Service URL or IP address to each instance of a Chef application, then the application connects with Local License Service and retrieves a license key each time it runs automatically. + +For large or isolated (airgapped) fleets, Chef Local License Service has several benefits: + +- End users don't need to know the license keys for the Chef products they're using, only the Local License Service URL. +- You can control network communications to the internet as Local License Service is designed to work in isolation with Chef products. +- You don't have to manage secrets on each node that a Chef application is installed on. +- The Local License Service URL changes less frequently than a license key. +- You can scale Chef Local License Service to match your workload. + +See the [Chef Local License Service documentation](/licensing/local_license_service/) for more information. + +## 0.1.0 + +### Features + +Chef Local License Service has four API endpoints that you can use to manage licenses. + +#### /v1/listLicenses + +The `/v1/listLicenses` endpoint lists all licenses present on Chef Local Licensing Service. + +#### /v1/loadLicense + +The `/v1/loadLicense` endpoint loads a single license by passing in a license key. This endpoint isn't available in airgapped environments. + +#### /v1/syncAllLicenses + +The `/v1/syncAllLicenses` endpoint syncs the license data from the local License datastore to Chef's licensing server. This endpoint isn't available in airgapped environments. + +#### /v1/uploadLicense + +The `/v1/uploadLicense` endpoint uploads a license. diff --git a/content/release_notes_manage.md b/content/release_notes_manage.md index 499c118a06..398999b773 100644 --- a/content/release_notes_manage.md +++ b/content/release_notes_manage.md @@ -13,10 +13,10 @@ toc_layout = "release_notes_toc" title = "Chef Manage" identifier = "release_notes/release_notes_manage.md Chef Manage" parent = "release_notes" - weight = 70 + weight = 80 +++ -Chef Manage provides a web-based user interface that manages Chef Infra nodes and other policy objects, such as data bags and roles, on the instance of Chef Infra Server that it is installed on. +Chef Manage provides a web-based user interface that manages Chef Infra nodes and other policy objects, such as data bags and roles, on the instance of Chef Infra Server that it's installed on. Chef Manage is [deprecated](/versions/#deprecated) and users should plan to migrate to [Chef Automate](/automate/) as the replacement. diff --git a/content/release_notes_supermarket.md b/content/release_notes_supermarket.md index c80c3c69da..8f12997925 100644 --- a/content/release_notes_supermarket.md +++ b/content/release_notes_supermarket.md @@ -11,5 +11,5 @@ toc_layout = "release_notes_toc" title = "Chef Supermarket" identifier = "release_notes/Chef Supermarket" parent = "release_notes" - weight = 80 + weight = 90 +++ diff --git a/content/release_notes_workstation.md b/content/release_notes_workstation.md index df501d2ebc..ed80a3e957 100644 --- a/content/release_notes_workstation.md +++ b/content/release_notes_workstation.md @@ -11,5 +11,5 @@ toc_layout = "release_notes_toc" title = "Chef Workstation" identifier = "release_notes/release_notes.md Chef Workstation" parent = "release_notes" - weight = 90 + weight = 100 +++ \ No newline at end of file diff --git a/go.mod b/go.mod index df14edecbd..0f41359eac 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/chef/chef-web-docs -go 1.16 +go 1.18 require ( github.com/chef/automate/components/docs-chef-io v0.0.0-20231027151655-61e0a5d70b2c // indirect @@ -10,6 +10,7 @@ require ( github.com/chef/compliance-remediation-2022/docs-chef-io v0.0.0-20230809063034-95b117807a75 // indirect github.com/chef/desktop-config/docs-chef-io v0.0.0-20230711052355-bad26ce3ac0b // indirect github.com/chef/effortless/docs-chef-io v0.0.0-20230711123605-c8beb79aba4f // indirect + github.com/chef/license-service/docs-chef-io v0.0.0-20231109163703-41a47f861346 // indirect github.com/chef/supermarket/docs-chef-io v0.0.0-20231004141257-7ada2c50bece // indirect github.com/cowboy/jquery-hashchange v0.0.0-20100902193700-0310f3847f90 // indirect github.com/habitat-sh/habitat/components/docs-chef-io v0.0.0-20230808222519-d0c20bbe8c45 // indirect diff --git a/go.sum b/go.sum index 298ffe4658..69bf8efb4b 100644 --- a/go.sum +++ b/go.sum @@ -15,6 +15,8 @@ github.com/chef/desktop-config/docs-chef-io v0.0.0-20230711052355-bad26ce3ac0b h github.com/chef/desktop-config/docs-chef-io v0.0.0-20230711052355-bad26ce3ac0b/go.mod h1:90xAx6sIfgSL50M2KzeBmx7V7s7dlhQU3xpUkJO0qW0= github.com/chef/effortless/docs-chef-io v0.0.0-20230711123605-c8beb79aba4f h1:6+VjBykE1b9LGfJEBstSKLAGJySrhu6NY162gz+cnxo= github.com/chef/effortless/docs-chef-io v0.0.0-20230711123605-c8beb79aba4f/go.mod h1:Lfq+HjwAQwUJ41EPTO/8qbI1oJb2i415fR28d2Ig9kc= +github.com/chef/license-service/docs-chef-io v0.0.0-20231109163703-41a47f861346 h1:DB0UwtZ2I3utBAr+4TrA8+rPEgjO6hh+OdvcZDQHoh4= +github.com/chef/license-service/docs-chef-io v0.0.0-20231109163703-41a47f861346/go.mod h1:leNCF0KadV7zjm7YpVegNnbmWYUFXgaPKHP4tTDacos= github.com/chef/supermarket/docs-chef-io v0.0.0-20231004141257-7ada2c50bece h1:qCHZDu6a+UgOvMvLRsT9wAfi7P2+uKQm+H1kvpeZ7k4= github.com/chef/supermarket/docs-chef-io v0.0.0-20231004141257-7ada2c50bece/go.mod h1:L0DhIJHTKsPYhAr9TrhAIg3KXtrS9BJF0XNHfGDDGGg= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= diff --git a/tools/vale/.vale-github-action.ini b/tools/vale/.vale-github-action.ini index 9b83eeebe0..4453c363be 100644 --- a/tools/vale/.vale-github-action.ini +++ b/tools/vale/.vale-github-action.ini @@ -16,4 +16,4 @@ Vocab = Chef BasedOnStyles = chef, Microsoft, vale, write-good # Ignore SVG markup -TokenIgnores = (\*\*\{\w*\}\*\*) +TokenIgnores = (\*\*\{\w*\}\*\*), (Master License and Services Agreement) diff --git a/tools/vale/chef/chef_products.yml b/tools/vale/chef/chef_products.yml index 0468bc931d..cfffa09ff6 100644 --- a/tools/vale/chef/chef_products.yml +++ b/tools/vale/chef/chef_products.yml @@ -1,6 +1,6 @@ extends: substitution message: "Use '%s' instead of '%s'" -level: error +level: warning ignorecase: false swap: '(?:[^\s]*) ?Automate': Chef Automate @@ -18,4 +18,4 @@ swap: '(?:[^\s]* ){0,2}Builder': Chef Habitat Builder 'Depot': Chef Habitat Artifact storage '(?:[^\s]* ){0,2}Studio': Chef Habitat Studio - '(?:[^\s]* ){0,2}Supervisor': Chef Habitat Supervisor + '(?