@@ -26,12 +26,28 @@ variable "root_parent_management_group_id" {
2626 default = " "
2727}
2828
29+ variable "required_subscription_keys" {
30+ description = <<- EOT
31+ **(Optional, default: `["management", "connectivity"]`)** List of subscription keys that must be present with valid GUID values.
32+
33+ Keys not in this list may have null or empty string values.
34+ Valid keys: 'management', 'connectivity', 'identity', 'security'
35+ EOT
36+ type = list (string )
37+ default = [" management" , " connectivity" ]
38+ nullable = false
39+ validation {
40+ condition = alltrue ([for key in var . required_subscription_keys : contains ([" management" , " connectivity" , " identity" , " security" ], key)])
41+ error_message = " The required_subscription_keys must be one of 'management', 'connectivity', 'identity' or 'security'"
42+ }
43+ }
44+
2945variable "subscription_ids" {
3046 description = <<- EOT
3147 **(Optional, default: `{}`)** Map of Azure subscription IDs where Platform Landing Zone resources will be deployed.
3248
3349 Keys must be one of: 'management', 'connectivity', 'identity', 'security'
34- Values must be valid Azure subscription GUIDs.
50+ Values must be valid Azure subscription GUIDs, or null/empty for non-required keys .
3551
3652 Example:
3753 ```
@@ -45,16 +61,16 @@ variable "subscription_ids" {
4561 default = {}
4662 nullable = false
4763 validation {
48- condition = alltrue ([for id in values ( var. subscription_ids ) : can (regex (" ^[0-9a-fA-F-]{36}$" , id))])
49- error_message = " All subscription IDs must be valid GUIDs"
64+ condition = alltrue ([for key , id in var . subscription_ids : contains (var . required_subscription_keys , key) ? can ( regex ( " ^[0-9a-fA-F-]{36}$ " , id)) : (id == null || id == " " || can (regex (" ^[0-9a-fA-F-]{36}$" , id) ))])
65+ error_message = " Required subscription IDs must be valid GUIDs. Optional subscription IDs must be valid GUIDs, null, or empty string. "
5066 }
5167 validation {
52- condition = alltrue ([for id in keys (var. subscription_ids ) : contains ([" management" , " connectivity" , " identity" , " security" ], id )])
68+ condition = alltrue ([for key in keys (var. subscription_ids ) : contains ([" management" , " connectivity" , " identity" , " security" ], key )])
5369 error_message = " The keys of the subscription_ids map must be one of 'management', 'connectivity', 'identity' or 'security'"
5470 }
5571 validation {
56- condition = contains ( keys ( var. subscription_ids ), " management " ) && contains (keys (var. subscription_ids ), " connectivity " )
57- error_message = " You must provide subscription IDs for: 'management', and 'connectivity' "
72+ condition = alltrue ([ for key in var . required_subscription_keys : contains (keys (var. subscription_ids ), key)] )
73+ error_message = " You must provide subscription IDs for all required subscription keys. "
5874 }
5975}
6076
0 commit comments