Skip to content

Commit 9353a5d

Browse files
SandyPantsLaiheicheng18mars
authored
Doc updates for Fir/CNBs (#413)
* Update app.md Signed-off-by: Sandy Lai <[email protected]> * Update app.md Signed-off-by: Sandy Lai <[email protected]> * Update app.md Signed-off-by: Sandy Lai <[email protected]> * Update build.md Update for style, de-emphasize CNBs=Fir, add Optional to buildpacks text definition for CNBs, change mentions of slug where appropriate to artifact, add note that slug_id is only for apps with classic buildpacks. Signed-off-by: Sandy Lai <[email protected]> * Update build.md fix typo Signed-off-by: Sandy Lai <[email protected]> * Plain english guidelines updates app.md Signed-off-by: Sandy Lai <[email protected]> * rephrase note as positive app.md Signed-off-by: Sandy Lai <[email protected]> * Update space.md to use plain technical English Signed-off-by: Sandy Lai <[email protected]> * Update space.md Signed-off-by: Sandy Lai <[email protected]> * Update pipeline.md to plain technical English, change slug to artifacts Signed-off-by: Sandy Lai <[email protected]> * Peer review terraform docs (#412) * Peer review on app.md Signed-off-by: Helen Cheng <[email protected]> * Peer review for build.md Signed-off-by: Helen Cheng <[email protected]> * Peer review for pipeline.md Signed-off-by: Helen Cheng <[email protected]> * Peer review for space.md Signed-off-by: Helen Cheng <[email protected]> --------- Signed-off-by: Helen Cheng <[email protected]> * Update app.md Signed-off-by: Sandy Lai <[email protected]> * Add revised telemetry_drain.md Signed-off-by: Sandy Lai <[email protected]> * Add reviewed pipeline_promotion.md Signed-off-by: Sandy Lai <[email protected]> * Delete docs/pipeline_promotion.md Signed-off-by: Sandy Lai <[email protected]> * Create pipeline_promotion.md Signed-off-by: Sandy Lai <[email protected]> * Add Cedar-only note to app_release.md Signed-off-by: Sandy Lai <[email protected]> * Update note about classic buildpacks app_release.md Signed-off-by: Sandy Lai <[email protected]> * Add classic buildpacks-only note to slug.md Also conform to style guidelines Signed-off-by: Sandy Lai <[email protected]> * Add Cedar-only note to space_inbound_ruleset.md Signed-off-by: Sandy Lai <[email protected]> * Add Cedar-only note space_peering_connection_accepter.md And changes to conform to style guidelines Signed-off-by: Sandy Lai <[email protected]> * Update pipeline.md Signed-off-by: Sandy Lai <[email protected]> * Add classic buildpack note to app.md and changes to conform to style guidelines Signed-off-by: Sandy Lai <[email protected]> * Add Cedar-only note review_app_config.md also changes to conform to style guidelines Signed-off-by: Sandy Lai <[email protected]> * Change slug to build artifacts in pipeline_coupling.md Signed-off-by: Sandy Lai <[email protected]> * Update CIDR attributes to say only for Cedar in space.md Signed-off-by: Sandy Lai <[email protected]> * Fix formatting docs/data-sources/app.md Co-authored-by: Mars Hall <[email protected]> Signed-off-by: Sandy Lai <[email protected]> * Peer review for terraform docs (#414) * Peer review pipeline_promotion.md Signed-off-by: Helen Cheng <[email protected]> * Update telemetry_drain.md Signed-off-by: Helen Cheng <[email protected]> * Correct note format pipeline_promotion.md Signed-off-by: Sandy Lai <[email protected]> --------- Signed-off-by: Helen Cheng <[email protected]> Signed-off-by: Sandy Lai <[email protected]> Co-authored-by: Sandy Lai <[email protected]> * Fix note formatting app.md Signed-off-by: Sandy Lai <[email protected]> * Fix note formatting in build.md Signed-off-by: Sandy Lai <[email protected]> * Update space.md Signed-off-by: Sandy Lai <[email protected]> --------- Signed-off-by: Sandy Lai <[email protected]> Signed-off-by: Helen Cheng <[email protected]> Co-authored-by: Helen Cheng <[email protected]> Co-authored-by: Mars Hall <[email protected]>
1 parent 72705e3 commit 9353a5d

File tree

13 files changed

+363
-353
lines changed

13 files changed

+363
-353
lines changed

docs/data-sources/app.md

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ description: |-
88

99
# Data Source: heroku_app
1010

11-
Use this data source to get information about a Heroku App.
11+
Use this data source to get information about a Heroku app.
12+
13+
~> **NOTE:** This resource is only supported for apps that use [classic buildpacks](https://devcenter.heroku.com/articles/buildpacks#classic-buildpacks).
1214

1315
## Example Usage
1416

@@ -23,50 +25,48 @@ data "heroku_app" "default" {
2325

2426
The following arguments are supported:
2527

26-
* `name` - (Required) The name of the application. In Heroku, this is also the
28+
* `name`: (Required) The name of the application. In Heroku, it's a
2729
unique ID, so it must be unique and have a minimum of 3 characters.
2830

2931
## Attributes Reference
3032

3133
The following attributes are exported:
3234

33-
* `id` - The unique UUID of the Heroku app.
35+
* `id`: The unique UUID of the Heroku app.
3436

35-
* `name` - The name of the application. In Heroku, this is also the
37+
* `name`: The name of the application. In Heroku, it's also the
3638
unique ID.
3739

38-
* `stack` - The application stack is what platform to run the application
39-
in.
40+
* `stack`: The application [stack](https://devcenter.heroku.com/articles/stack) is what platform to run the application in.
4041

41-
* `buildpacks` - A list of buildpacks that this app uses.
42+
* `buildpacks`: A list of buildpacks that this app uses.
4243

43-
* `space` - The private space in which the app runs. Not present if this is a common runtime app.
44+
* `space`: The [space](https://devcenter.heroku.com/articles/private-spaces) in which the app runs. Not present for [Common Runtime](https://devcenter.heroku.com/articles/dyno-runtime#common-runtime) apps.
4445

45-
* `region` - The region in which the app is deployed.
46+
* `region`: The region in the app is deployed in.
4647

47-
* `git_url` - The Git URL for the application. This is used for
48+
* `git_url`: The Git URL for the application, used for
4849
deploying new versions of the app.
4950

50-
* `web_url` - The web (HTTP) URL that the application can be accessed
51-
at by default.
51+
* `web_url`: The web (HTTP) URL to access the application at by default.
5252

53-
* `heroku_hostname` - The hostname for the Heroku application, suitable
53+
* `heroku_hostname`: The hostname for the Heroku application, suitable
5454
for pointing DNS records.
5555

56-
* `last_release_id` - The last successful Release ID for the app. May be empty.
56+
* `last_release_id`: The last successful Release ID for the app. May be empty.
5757

58-
* `last_slug_id` - The Slug ID from the last successful release. May be empty.
58+
* `last_slug_id`: The slug ID from the last successful release. May be empty.
5959

60-
* `config_vars` - A map of all configuration variables for the app.
60+
* `config_vars`: The map of all configuration variables for the app.
6161

62-
* `acm` - True if Heroku ACM is enabled for this app, false otherwise.
62+
* `acm`: True if [Heroku Automated Certificate Management](https://devcenter.heroku.com/articles/automated-certificate-management) is enabled for this app, false otherwise.
6363

64-
* `organization` - The Heroku Team that owns this app.
64+
* `organization`: The Heroku team that owns this app.
6565

66-
* `name` - The name of the Heroku Team (organization).
66+
* `name`: The name of the Heroku team (organization).
6767

68-
* `locked` - True if the app access is locked
68+
* `locked`: True if the app access is locked
6969

70-
* `personal`
70+
* `personal`: True for personal apps
7171

72-
* `uuid` - The unique UUID of the Heroku app.
72+
* `uuid`: The unique UUID of the Heroku app.

docs/resources/app.md

Lines changed: 68 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,22 @@ layout: "heroku"
33
page_title: "Heroku: heroku_app"
44
sidebar_current: "docs-heroku-resource-app-x"
55
description: |-
6-
Provides a Heroku App resource. This can be used to create and manage applications on Heroku.
6+
Provides a Heroku App resource. Use this resource to create and manage applications on Heroku.
77
---
88

99
# heroku\_app
1010

11-
Provides a Heroku App resource. This can be used to create and manage applications on Heroku.
11+
Provides a [Heroku App](https://devcenter.heroku.com/articles/platform-api-reference#app) resource. Use this resource to create and manage applications on Heroku.
1212

13-
The Heroku platform supports two generations:
14-
- **Cedar** (default): Traditional platform with support for buildpacks, stack configuration, and internal routing
15-
- **Fir**: Next-generation platform with Cloud Native Buildpacks (CNB), enhanced security, and modern containerization
13+
The Heroku platform supports two [generations](https://devcenter.heroku.com/articles/generations):
14+
- **Cedar** (default): Legacy platform with support for classic buildpacks, stack configuration, and internal routing
15+
- **Fir**: Next-generation platform with enhanced security, and modern containerization
1616

17-
-> **Always reference apps by ID (UUID) in Terraform configuration**
18-
Starting with v5.0 of this provider, all HCL app references are by ID. Read more details in [Upgrading](guides/upgrading.html).
17+
-> **Note:** Always reference apps by ID (UUID) in Terraform configuration. Starting with v5.0 of this provider, all HCL app references are by ID. Read more details in [Upgrading](guides/upgrading.html).
1918

2019
## Example Usage
2120

22-
### Cedar Generation (Default)
21+
### Cedar Generation Using Classic Buildpacks (Default)
2322
```hcl-terraform
2423
resource "heroku_app" "cedar_app" {
2524
name = "my-cedar-app"
@@ -37,9 +36,9 @@ resource "heroku_app" "cedar_app" {
3736
}
3837
```
3938

40-
### Fir Generation (via Fir Space)
39+
### Fir Generation Using Cloud Native Buildpacks (via Fir Space)
4140
```hcl-terraform
42-
# Create a Fir generation space first
41+
# Create a Fir-generation space first
4342
resource "heroku_space" "fir_space" {
4443
name = "my-fir-space"
4544
organization = "my-org"
@@ -61,14 +60,14 @@ resource "heroku_app" "fir_app" {
6160
FOOBAR = "baz"
6261
}
6362
64-
# Note: buildpacks and stack are not supported for Fir generation
63+
# Note: buildpacks and stack are not supported for Fir-generation apps as they use Cloud Native Buildpacks
6564
# Use project.toml in your application code instead
6665
}
6766
```
6867

6968
## Example Usage for a Team
7069

71-
A Heroku "team" was originally called an "organization", and that is still the identifier used in this resource.
70+
A Heroku "team" was originally called an "organization", and that's still the identifier used in this resource.
7271

7372
```hcl-terraform
7473
resource "heroku_app" "default" {
@@ -83,79 +82,76 @@ resource "heroku_app" "default" {
8382

8483
## Argument Reference
8584

86-
The following arguments are supported:
87-
88-
* `name` - (Required) The name of the application. In Heroku, this is also the
89-
unique ID, so it must be unique and have a minimum of 3 characters.
90-
* `region` - (Required) The region that the app should be deployed in.
91-
* `generation` - (Computed) Generation of the app platform. Automatically determined based on the space the app is deployed to. Apps in Fir generation spaces will be `fir`, all other apps will be `cedar`.
92-
- `cedar`: Traditional platform supporting buildpacks, stack configuration, and internal routing
93-
- `fir`: Next-generation platform with Cloud Native Buildpacks (CNB). Does not support `buildpacks`, `stack`, or `internal_routing` fields
94-
* `stack` - (Optional) The application stack is what platform to run the application in. **Note**: Not supported for `fir` generation apps.
95-
* `buildpacks` - (Optional) Buildpack names or URLs for the application.
96-
Buildpacks configured externally won't be altered if this is not present. **Note**: Not supported for `fir` generation apps. Use project.toml for Cloud Native Buildpacks configuration instead.
97-
* `config_vars`<sup>[1](#deleting-vars)</sup> - (Optional) Configuration variables for the application.
98-
The config variables in this map are not the final set of configuration
99-
variables, but rather variables you want present. That is, other
100-
configuration variables set externally won't be removed by Terraform
85+
The resource supports the following arguments:
86+
87+
* `name`: (Required) The name of the application. In Heroku, this argument is the unique ID, so it must be unique and have a minimum of 3 characters.
88+
* `region`: (Required) The region to deploy the app in.
89+
* `generation`: (Computed) Generation of the app platform. Automatically determined based on the space the app is deployed to. Apps in Fir-generation spaces are `fir`, all other apps are `cedar`.
90+
- `cedar`: Legacy platform supporting classic buildpacks, stack configuration, and internal routing.
91+
- `fir`: Next-generation platform with Cloud Native Buildpacks (CNB). No support for `buildpacks`, `stack`, or `internal_routing` fields.
92+
* `stack`: (Optional) The name of the [stack](https://devcenter.heroku.com/articles/stack) to run the application in. **Note**: Not supported for `fir` generation apps.
93+
* `buildpacks`: (Optional) Classic buildpack names or URLs for the application.
94+
Buildpacks configured externally won't be altered if this isn't present. **Note**: Not supported for apps using Cloud Native Buildpacks, like Fir-generation apps. Use `project.toml` for configuration instead.
95+
* `config_vars`<sup>[1](#deleting-vars)</sup>: (Optional) Configuration variables for the application.
96+
The config variables in this map aren't the final set of configuration
97+
variables, but rather variables you want present. Terraform doesn't remove configuration variables set externally
10198
if they aren't present in this list.
102-
* `sensitive_config_vars`<sup>[1](#deleting-vars)</sup> - (Optional) This argument is the same as `config_vars`.
99+
* `sensitive_config_vars`<sup>[1](#deleting-vars)</sup>: (Optional) This argument is the same as `config_vars`.
103100
The main difference between the two is when `sensitive_config_vars` outputs
104-
are displayed on-screen following a terraform apply or terraform refresh,
105-
they are redacted, with <sensitive> displayed in place of their value.
106-
It is recommended to put private keys, passwords, etc in this argument.
107-
* `space` - (Optional) The name of a private space to create the app in.
108-
* `internal_routing` - (Optional) If true, the application will be routable
109-
only internally in a private space. This option is only available for apps
110-
that also specify `space`. **Note**: Not supported for `fir` generation apps.
111-
* `organization` - (Optional) A block that can be specified once to define
101+
are displayed on-screen following a `terraform apply` or `terraform refresh`,
102+
they're redacted, with `<sensitive>` displayed in place of their value.
103+
It's recommended to put sensitive information like private keys, and passwords in this argument.
104+
* `space`: (Optional) The name of the space to create the app in.
105+
* `internal_routing` - (Optional) If true, the application is routable
106+
only internally in Heroku Private Spaces. This option is only available for apps
107+
that also specify `space`. **Note**: Only supported for apps in Cedar-generation spaces.
108+
* `organization`: (Optional) Specify this block once to define
112109
Heroku Team settings for this app. The fields for this block are
113110
documented below.
114-
* `acm` - (Optional) The flag representing Automated Certificate Management for the app.
111+
* `acm`: (Optional) If Automated Certificate Management is enabled for the app.
115112

116113
The `organization` block supports:
117-
* `name` (string) - The name of the Heroku Team.
118-
* `locked` (boolean) - Are other team members forbidden from joining this app.
119-
* `personal` (boolean) - Force creation of the app in the user account even if a default team is set.
114+
* `name` (string): The name of the Heroku Team.
115+
* `locked` (boolean): If other team members are forbidden from joining this app.
116+
* `personal` (boolean): Force creation of the app in the user's account, even if a default team is set.
120117

121-
### Deleting vars
118+
### Deleting Vars
122119

123120
Deleting an entire `config_vars` or `sensitive_config_vars` map from a `heroku_app`
124-
configuration will not actually remove the vars on the remote resource. To remove an existing variable,
125-
leave these attribute maps in-place and delete only its entries from the map. Once these attributes are
126-
empty, the map itself may be deleted from the configuration. Otherwise if one deletes the map with existing
127-
entries, the config vars will not be deleted from the remote resource.
121+
configuration doesn't remove the variables on the remote resource. To remove an existing variable,
122+
leave these attribute maps in-place and only delete its entries from the map. After these attributes are
123+
empty, you can delete the map itself from the configuration. Otherwise, if you delete the map with existing
124+
entries, the config vars don't get deleted from the remote resource.
128125

129-
This is especially important if you are migrating all `config_vars` to `sensitive_config_vars` or migrating
130-
config vars to `heroku_app_config_association` resource.
126+
If you're migrating all `config_vars` to `sensitive_config_vars`, or migrating
127+
config vars to `heroku_app_config_association` resource, this behavior is especially important.
131128

132129
## Attributes Reference
133130

134131
The following attributes are exported:
135132

136-
* `id` - The ID (UUID) of the app.
137-
* `name` - The name of the app.
138-
* `generation` - Generation of the app platform (cedar or fir). Automatically determined from the space the app is deployed to.
139-
* `stack` - The application stack is what platform to run the application in.
140-
* `space` - The private space the app should run in.
141-
* `internal_routing` - Whether internal routing is enabled the private space app.
142-
* `region` - The region that the app should be deployed in.
143-
* `git_url` - The Git URL for the application. This is used for
133+
* `id`: The ID (UUID) of the app.
134+
* `name`: The name of the app.
135+
* `generation`: Generation of the app platform (`cedar` or `fir`). Automatically determined from the space the app is deployed to.
136+
* `stack`: The name of the [stack](https://devcenter.heroku.com/articles/stack) the application is run in.
137+
* `space`: The space the app is in.
138+
* `internal_routing`: If internal routing is enabled. Only for apps in Heroku Private Spaces.
139+
* `region`: The region that the app is deployed to.
140+
* `git_url`: The Git URL for the application, used for
144141
deploying new versions of the app.
145-
* `web_url` - The web (HTTP) URL that the application can be accessed
146-
at by default.
147-
* `heroku_hostname` - A hostname for the Heroku application, suitable
142+
* `web_url`: The web (HTTP) URL for accessing the application by default.
143+
* `heroku_hostname`: The hostname for the Heroku application, suitable
148144
for pointing DNS records.
149-
* `all_config_vars` - A map of all configuration variables that
145+
* `all_config_vars`: The map of all configuration variables that
150146
exist for the app, containing both those set by Terraform and those
151-
set externally. (These are treated as "sensitive" so that
152-
their values are redacted in console output.) This attribute is not set in state if the `provider`
147+
set externally. These variables are treated as "sensitive" so that
148+
their values are redacted in console output. This attribute isn't set in state if the `provider`
153149
attribute `set_app_all_config_vars_in_state` is `false`.
154-
* `uuid` - The unique UUID of the Heroku app. **NOTE:** Use this for `null_resource` triggers.
150+
* `uuid`: The unique UUID of the Heroku app. **Note:** Use this attribute for `null_resource` triggers.
155151

156-
## Cloud Native Buildpacks (Fir Generation)
152+
## Cloud Native Buildpacks
157153

158-
When apps are deployed to Fir generation spaces, they automatically use Cloud Native Buildpacks (CNB) instead of traditional Heroku buildpacks. This requires different configuration approaches:
154+
When apps are deployed to Fir-generation spaces, they automatically use Cloud Native Buildpacks (CNB) instead of classic Heroku buildpacks. CNBs require different configuration approaches:
159155

160156
### project.toml Configuration
161157

@@ -177,11 +173,11 @@ BP_NODE_VERSION = "18.*"
177173

178174
When migrating from Cedar to Fir generation:
179175

180-
1. **Create Fir space**: Create a new space with `generation = "fir"`
181-
2. **Remove incompatible fields**: Remove `buildpacks`, `stack`, and `internal_routing` from your Terraform configuration
182-
3. **Add project.toml**: Create a `project.toml` file in your application code with buildpack configuration
183-
4. **Update app space**: Change your app's `space` to use the Fir space
184-
5. **Redeploy**: Deploy your application with the new configuration
176+
1. **Create a Fir space**: Create a new space with `generation = "fir"`.
177+
2. **Remove unsupported fields**: Remove `buildpacks`, `stack`, and `internal_routing` from your Terraform configuration.
178+
3. **Add a `project.toml` file**: Create a `project.toml` file in your application code with Cloud Native Buildpacks configuration.
179+
4. **Update the `space`**: Change your app's `space` to use the Fir space.
180+
5. **Redeploy**: Deploy your application with the new configuration.
185181

186182
```hcl-terraform
187183
# Before (Cedar)
@@ -220,12 +216,13 @@ resource "heroku_app" "example" {
220216

221217
## Import
222218

223-
Apps can be imported using an existing app's `UUID` or name.
219+
Import apps with an existing app's `UUID` or name.
224220

225221
For example:
226222
```
227223
$ terraform import heroku_app.foobar MyApp
228224
$ terraform import heroku_app.foobar e74ac056-7d00-4a7e-aa80-df4bc413a825
229225
```
230226

231-
Please note: `config_vars` & `sensitive_config_vars` will not be imported due to limitations of Terraform's import process (see [issue](https://github.com/heroku/terraform-provider-heroku/issues/247#issuecomment-602013774)). All vars will appear to be added on the next plan/apply. The diff may be manually reconciled using the outputs of `heroku config` & `terraform plan`.
227+
>[!NOTE]
228+
>`config_vars` & `sensitive_config_vars` aren't imported due to limitations of Terraform's import process (see [issue](https://github.com/heroku/terraform-provider-heroku/issues/247#issuecomment-602013774)). All vars appear to be added on the next plan/apply. Manually reconcile the diff using the outputs of `heroku config` & `terraform plan`.

docs/resources/app_release.md

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,20 @@ layout: "heroku"
33
page_title: "Heroku: heroku_app_release"
44
sidebar_current: "docs-heroku-resource-app-release"
55
description: |-
6-
Provides the ability to deploy a heroku release to an application
6+
Provides the ability to deploy a Heroku release to an application
77
---
88

99
# heroku\_app\_release
1010

1111
Provides a [Heroku App Release](https://devcenter.heroku.com/articles/platform-api-reference#release)
1212
resource.
1313

14-
An app release represents a combination of code, config vars and add-ons for an app on Heroku.
14+
An app release represents a combination of code, config vars and add-ons for an app on Heroku.
1515

16-
~> **NOTE:**
17-
This resource requires the slug be uploaded to Heroku using [`heroku_slug`](slug.html)
18-
or with external tooling prior to running terraform.
16+
~> **NOTE:** To use this resource, you must have uploaded a slug to Heroku using [`heroku_slug`](slug.html)
17+
or with external tooling prior to running Terraform.
18+
19+
~> **NOTE:** This resource is only supported for apps that use [classic buildpacks](https://devcenter.heroku.com/articles/buildpacks#classic-buildpacks).
1920

2021
## Example Usage
2122
```hcl-terraform
@@ -36,20 +37,20 @@ resource "heroku_app_release" "foobar-release" {
3637

3738
The following arguments are supported:
3839

39-
* `app_id` - (Required) Heroku app ID (do not use app name)
40-
* `slug_id` - unique identifier of slug
41-
* `description` - description of changes in this release
40+
* `app_id`: (Required) The Heroku app ID (not name)
41+
* `slug_id`: The unique identifier of slug
42+
* `description`: The description of changes in this release
4243

4344
## Attributes Reference
4445

4546
The following attributes are exported:
4647

47-
* `id` - The ID of the app release
48+
* `id`: The ID of the app release
4849

4950
## Import
50-
The most recent app release can be imported using the application name.
51+
Import the most recent app release using the application name.
5152

5253
For example:
5354
```
5455
$ terraform import heroku_app_release.foobar-release foobar
55-
```
56+
```

0 commit comments

Comments
 (0)