You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: website/docs/cloud-docs/api-docs/variable-sets.mdx
+12-4
Original file line number
Diff line number
Diff line change
@@ -27,6 +27,7 @@ Properties without a default value are required.
27
27
|`data.name`| string || The name of the variable set. |
28
28
|`data.description`| string |`""`| Text displayed in the UI to contextualize the variable set and its purpose. |
29
29
|`data.global`| boolean |`false`| When true, Terraform Cloud automatically applies the variable set to all current and future workspaces in the organization. |
30
+
|`data.priority`| boolean |`false`| When true, the variables in the set override any other variable values with a more specific scope, including values set on the command line. |
30
31
|`data.relationships.workspaces`| array |\`[]` | Array of references to workspaces that the variable set should be assigned to. |
31
32
|`data.relationships.projects`| array |\`[]` | Array of references to projects that the variable set should be assigned to. |
32
33
|`data.relationships.vars`| array |\`[]` | Array of complete variable definitions that comprise the variable set. |
@@ -48,7 +49,8 @@ Terraform Cloud does not allow different global variable sets to contain conflic
48
49
"attributes": {
49
50
"name": "MyVarset",
50
51
"description": "Full of vars and such for mass reuse",
51
-
"global": false
52
+
"global": false,
53
+
"priority": false,
52
54
},
53
55
"relationships": {
54
56
"workspaces": {
@@ -97,7 +99,8 @@ curl \
97
99
"attributes": {
98
100
"name": "MyVarset",
99
101
"description": "Full of vars and such for mass reuse",
100
-
"global": false
102
+
"global": false,
103
+
"priority": false,
101
104
},
102
105
"relationships": {
103
106
"workspaces": {
@@ -151,6 +154,7 @@ Terraform Cloud does not allow global variable sets to contain conflicting varia
151
154
|`data.name`| string || The name of the variable set. |
152
155
|`data.description`| string || Text displayed in the UI to contextualize the variable set and its purpose. |
153
156
|`data.global`| boolean || When true, Terraform Cloud automatically applies the variable set to all current and future workspaces in the organization. |
157
+
|`data.priority`| boolean |`false`| When true, the variables in the set override any other variable values set with a more specific scope, including values set on the command line. |
154
158
|`data.relationships.workspaces`| array ||**Optional** Array of references to workspaces that the variable set should be assigned to. Sending an empty array clears all workspace assignments. |
155
159
|`data.relationships.projects`| array ||**Optional** Array of references to projects that the variable set should be assigned to. Sending an empty array clears all project assignments. |
156
160
|`data.relationships.vars`| array ||**Optional** Array of complete variable definitions to add to the variable set. |
@@ -170,7 +174,8 @@ Terraform Cloud does not allow global variable sets to contain conflicting varia
170
174
"attributes": {
171
175
"name": "MyVarset",
172
176
"description": "Full of vars and such for mass reuse. Now global!",
173
-
"global": true
177
+
"global": true,
178
+
"priority": true,
174
179
},
175
180
"relationships": {
176
181
"workspaces": {
@@ -226,7 +231,8 @@ curl \
226
231
"attributes": {
227
232
"name": "MyVarset",
228
233
"description": "Full of vars and such for mass reuse. Now global!",
229
-
"global": true
234
+
"global": true,
235
+
"priority": true
230
236
},
231
237
"relationships": {
232
238
"vars": {
@@ -298,6 +304,7 @@ curl \
298
304
"name": "MyVarset",
299
305
"description": "Full of vars and such for mass reuse",
300
306
"global": false,
307
+
"priority": false,
301
308
"updated-at": "2023-03-06T21:48:33.588Z",
302
309
"var-count": 5,
303
310
"workspace-count": 2,
@@ -411,6 +418,7 @@ All of the list endpoints support pagination [with standard URL query parameters
411
418
"name": "MyVarset",
412
419
"description": "Full of vars and such for mass reuse",
Copy file name to clipboardexpand all lines: website/docs/cloud-docs/workspaces/variables/index.mdx
+46-17
Original file line number
Diff line number
Diff line change
@@ -82,27 +82,39 @@ There may be cases when a workspace contains conflicting variables of the same t
82
82
83
83
Terraform Cloud prioritizes and overwrites conflicting variables according to the following precedence:
84
84
85
-
### 1. Command Line Argument Variables
85
+
### 1. Priority Global Variable Sets
86
+
87
+
If prioritized [prioritized](/terraform/cloud-docs/workspaces/variables/index#precedence-with-priority-variable-sets), variables in a global variable set have precedence over all other variables with the same key.
88
+
89
+
### 2. Priority Project-Scoped Variable Sets
90
+
91
+
If prioritized [prioritized](/terraform/cloud-docs/workspaces/variables/index#precedence-with-priority-variable-sets), variables in a priority project-scoped variable set have precedence over variables with the same key set at a more specific scope.
92
+
93
+
### 3. Priority Workspace-Scoped Variable Sets
94
+
95
+
If prioritized [prioritized](/terraform/cloud-docs/workspaces/variables/index#precedence-with-priority-variable-sets), variables in a priority workspace-scoped variable set have precedence over variables with the same key set at a more specific scope.
96
+
97
+
### 4. Command Line Argument Variables
86
98
87
99
When using a CLI workflow, variables applied to a run with either `-var` or `-var-file` overwrite workspace-specific and variable set variables that have the same key.
88
100
89
-
### 2. Local Environment Variables Prefixed with `TF_VAR_`
101
+
### 5. Local Environment Variables Prefixed with `TF_VAR_`
90
102
91
103
When using a CLI workflow, local environment variables prefixed with `TF_VAR_` (e.g., `TF_VAR_replicas`) overwrite workspace-specific, variable set, and `.auto.tfvars` file variables that have the same key.
92
104
93
-
### 3. Workspace-Specific Variables
105
+
### 6. Workspace-Specific Variables
94
106
95
107
Workspace-specific variables always overwrite variables from variable sets that have the same key. Refer to [overwrite variables from variable sets](/terraform/cloud-docs/workspaces/variables/managing-variables#overwrite-variable-sets) for details.
96
108
97
-
### 4. Workspace-Scoped Variable Sets
109
+
### 7. Workspace-Scoped Variable Sets
98
110
99
111
Variables in workspace-scoped variable sets are only applied to a subset of workspaces in an organization.
100
112
101
113
When workspace-scoped variable sets have conflicting variables, Terraform Cloud compares the variable set names and uses values from the variable set with lexical precedence. Terraform and Terraform Cloud operate on UTF-8 strings, and Terraform Cloud sorts variable set names based on the lexical order of Unicode code points.
102
114
103
115
For example, if you apply `A_Variable_Set` and `B_Variable_Set` to the same workspace, Terraform Cloud will use any conflicting variables from `A_Variable_Set`. This is the case regardless of which variable set has been edited most recently. Terraform Cloud only considers the lexical ordering of variable set names when determining precedence.
104
116
105
-
### 5. Project-Scoped Variable Sets
117
+
### 8. Project-Scoped Variable Sets
106
118
107
119
Workspace-specific variables and workspace-scoped variable sets always take precedence over project-scoped variable sets that are applied to workspaces within a project.
108
120
@@ -112,15 +124,15 @@ When project-scoped variable sets have conflicting variables, Terraform Cloud co
112
124
113
125
For example, if you apply `A_Variable_Set` and `B_Variable_Set` to the same project, Terraform Cloud uses any conflicting variables from `A_Variable_Set`. This is the case regardless of which variable set has been edited most recently. Terraform Cloud only considers the lexical ordering of variable set names when determining precedence.
114
126
115
-
### 6. Global Variable Sets
127
+
### 9. Global Variable Sets
116
128
117
129
Workspace and project-scoped variable sets always take precedence over global variable sets that are applied to all workspaces within an organization. Terraform does not allow global variable sets to contain variables with the same key, so they cannot conflict.
118
130
119
-
### 7. `*.auto.tfvars` Variable Files
131
+
### 10. `*.auto.tfvars` Variable Files
120
132
121
133
Variables in the Terraform Cloud workspace and variables provided through the command line always overwrite variables with the same key from files ending in `.auto.tfvars`.
122
134
123
-
### 8. `terraform.tfvars` Variable File
135
+
### 11. `terraform.tfvars` Variable File
124
136
125
137
Variables in the `.auto.tfvars` files take precedence over variables in the `terraform.tfvars` file.
126
138
@@ -130,18 +142,23 @@ Variables in the `.auto.tfvars` files take precedence over variables in the `ter
130
142
131
143
Consider an example workspace that has the following variables applied:
When you trigger a run through the command line, Terraform Cloud applies the following variables:
143
158
144
-
-**Run-Specific:**`replicas` from the command line. That means `replicas` equals `9` for this run. Variables set from the command line take precedence over all other values, including the run-specific `TF_VAR_replicas` value set in your local environment.
159
+
-**1_Variable_Set:**`REGION`. For this run, `REGION` equals `us-east-1`, overwriting the value in all other run-specific, workspace-specific, and variable set same key variables.
160
+
161
+
-**Run-Specific:**`replicas` from the command line. That means `replicas` equals `9` for this run. If a variable set is priority, it takes precedence over all other values set with a more specific scope. Here the TF_VAR_region is "us-east-1", because the variable from the priority global 1_Variable_Set takes precedence. Without priority variable sets, variables set from the command line take precedence over all other values, including the run-specific `TF_VAR_replicas` value set in your local environment.
145
162
146
163
-**Workspace-Specific:**`VAR1`. For this run, `VAR1` equals `h`, overwriting the value in A_Variable_Set.
147
164
@@ -152,3 +169,15 @@ When you trigger a run through the command line, Terraform Cloud applies the fol
152
169
-**C_Variable_Set:**`KEY2`. For this run, `KEY2` equals `c`. This is a global variable set with no overwritten values.
153
170
154
171

172
+
173
+
174
+
## Precedence with Priority Variable Sets
175
+
176
+
You can select to prioritize all values of the variables in a variable set.
177
+
When a variable set is priority, the values take precedence over any variables with the same key set at a more specific scope.
178
+
179
+
For example, variables in a priority global variable set would take precedence over all variables with the same key.
180
+
181
+
If two priority variable sets with the same scope include the same variable key, Terraform Cloud will determine precedence by the alphabetical order of the variable sets' names.
182
+
183
+
While a priority variable set can enforce that Terraform variables use designated values, it does not guarantee that the configuration uses the variable. A user can still directly modify the Terraform configuration to remove usage of a variable and replace it with a hard-coded value. For stricter enforcement, we recommend using policy checks or run tasks.
Copy file name to clipboardexpand all lines: website/docs/cloud-docs/workspaces/variables/managing-variables.mdx
+7
Original file line number
Diff line number
Diff line change
@@ -148,6 +148,13 @@ To overwrite a variable from a variable set, [create a new workspace-specific va
148
148
149
149
Variables within a variable set can also automatically overwrite variables with the same key in other variable sets applied to the same workspace. Though variable sets are created for the organization, these overwrites occur within each workspace. Refer to [variable precedence](/terraform/cloud-docs/workspaces/variables#precedence) for more details.
150
150
151
+
## Priority Variable Sets
152
+
153
+
The values in priority variable sets overwrite any variables with the same key set at more specific scopes. This includes variables set using command line flags, or through`.*auto.tfvars` and `terraform.tfvars` files.
154
+
155
+
It is still possible for a user to directly modify the Terraform configuration and remove usage of a variable and replace it with a hard coded value. For stricter enforcement, we recommend using policy checks or run tasks.
156
+
Refer to [variable precedence](/terraform/cloud-docs/workspaces/variables#precedence-with-priority-variable-sets) for more details.
157
+
151
158
## Variable Values and Format
152
159
153
160
The limits, allowable values, and required format are the same for both workspace-specific variables and variable sets.
0 commit comments