1515 */
1616
1717locals {
18- keys_by_name = zipmap (var. keys , google_kms_crypto_key. key . * . self_link )
18+ keys_by_name = zipmap (var. keys , var . prevent_destroy ? google_kms_crypto_key. key [ * ] . self_link : google_kms_crypto_key . key_ephemeral [ * ] . self_link )
1919}
2020
2121resource "google_kms_key_ring" "key_ring" {
@@ -25,7 +25,7 @@ resource "google_kms_key_ring" "key_ring" {
2525}
2626
2727resource "google_kms_crypto_key" "key" {
28- count = length (var. keys )
28+ count = var . prevent_destroy ? length (var. keys ) : 0
2929 name = var. keys [count . index ]
3030 key_ring = google_kms_key_ring. key_ring . self_link
3131 rotation_period = var. key_rotation_period
@@ -35,30 +35,35 @@ resource "google_kms_crypto_key" "key" {
3535 }
3636}
3737
38- resource "google_kms_crypto_key_iam_binding" "owners" {
39- count = length (var. set_owners_for )
40- role = " roles/owner"
38+ resource "google_kms_crypto_key" "key_ephemeral" {
39+ count = var. prevent_destroy ? 0 : length (var. keys )
40+ name = var. keys [count . index ]
41+ key_ring = google_kms_key_ring. key_ring . self_link
42+ rotation_period = var. key_rotation_period
4143
42- crypto_key_id = local. keys_by_name [var . set_owners_for [count . index ]]
44+ lifecycle {
45+ prevent_destroy = false
46+ }
47+ }
4348
44- members = compact (split (" ," , var. owners [count . index ]))
49+ resource "google_kms_crypto_key_iam_binding" "owners" {
50+ count = length (var. set_owners_for )
51+ role = " roles/owner"
52+ crypto_key_id = local. keys_by_name [var . set_owners_for [count . index ]]
53+ members = compact (split (" ," , var. owners [count . index ]))
4554}
4655
4756resource "google_kms_crypto_key_iam_binding" "decrypters" {
48- count = length (var. set_decrypters_for )
49- role = " roles/cloudkms.cryptoKeyDecrypter"
50-
57+ count = length (var. set_decrypters_for )
58+ role = " roles/cloudkms.cryptoKeyDecrypter"
5159 crypto_key_id = local. keys_by_name [var . set_decrypters_for [count . index ]]
52-
53- members = compact (split (" ," , var. decrypters [count . index ]))
60+ members = compact (split (" ," , var. decrypters [count . index ]))
5461}
5562
5663resource "google_kms_crypto_key_iam_binding" "encrypters" {
57- count = length (var. set_encrypters_for )
58- role = " roles/cloudkms.cryptoKeyEncrypter"
59-
64+ count = length (var. set_encrypters_for )
65+ role = " roles/cloudkms.cryptoKeyEncrypter"
6066 crypto_key_id = local. keys_by_name [element (var. set_encrypters_for , count. index )]
61-
62- members = compact (split (" ," , var. encrypters [count . index ]))
67+ members = compact (split (" ," , var. encrypters [count . index ]))
6368}
6469
0 commit comments