@@ -10,23 +10,163 @@ module "resource_group" {
1010  existing_resource_group_name  =  . resource_group 
1111}
1212
13+ # #############################################################################
14+ #  Key Protect Instance + Key (used to encrypt bucket)
15+ # #############################################################################
16+ 
17+ locals  {
18+   key_ring_name  =  " ${ var . prefix } -cloud-logs" 
19+   key_name       =  " ${ var . prefix } -cloud-logs-key" 
20+ }
21+ 
22+ module  "key_protect"  {
23+   source             =  " terraform-ibm-modules/kms-all-inclusive/ibm" 
24+   version            =  " 4.20.0" 
25+   resource_group_id  =  . resource_group . resource_group_id 
26+   region             =  . region 
27+   resource_tags      =  . resource_tags 
28+   keys  =  
29+     {
30+       key_ring_name =  local.key_ring_name
31+       keys =  [
32+         {
33+           key_name =  local.key_name
34+         }
35+       ]
36+     }
37+   ]
38+   key_protect_instance_name  =  " ${ var . prefix } -kp" 
39+ }
40+ 
41+ # #############################################################################
42+ #  Event Notification
43+ # #############################################################################
44+ 
45+ module  "event_notification_1"  {
46+   source             =  " terraform-ibm-modules/event-notifications/ibm" 
47+   version            =  " 1.18.8" 
48+   resource_group_id  =  . resource_group . resource_group_id 
49+   name               =  " ${ var . prefix } -en-1" 
50+   tags               =  . resource_tags 
51+   plan               =  " standard" 
52+   service_endpoints  =  " public" 
53+   region             =  . region 
54+ }
55+ 
56+ module  "event_notification_2"  {
57+   source             =  " terraform-ibm-modules/event-notifications/ibm" 
58+   version            =  " 1.18.8" 
59+   resource_group_id  =  . resource_group . resource_group_id 
60+   name               =  " ${ var . prefix } -en-2" 
61+   tags               =  . resource_tags 
62+   plan               =  " standard" 
63+   service_endpoints  =  " public" 
64+   region             =  . region 
65+ }
66+ 
67+ # #############################################################################
68+ #  COS instance + buckets
69+ # #############################################################################
70+ 
71+ module  "cos"  {
72+   source             =  " terraform-ibm-modules/cos/ibm" 
73+   version            =  " 8.19.5" 
74+   resource_group_id  =  . resource_group . resource_group_id 
75+   cos_instance_name  =  " ${ var . prefix } -cos" 
76+   cos_tags           =  . resource_tags 
77+   create_cos_bucket  =  false 
78+ }
79+ 
80+ locals  {
81+   logs_bucket_name     =  " ${ var . prefix } -logs-data" 
82+   metrics_bucket_name  =  " ${ var . prefix } -metrics-data" 
83+ }
84+ 
85+ module  "buckets"  {
86+   source   =  " terraform-ibm-modules/cos/ibm//modules/buckets" 
87+   version  =  " 8.19.5" 
88+   bucket_configs  =  
89+     {
90+       bucket_name                   =  local.logs_bucket_name
91+       kms_encryption_enabled        =  true 
92+       region_location               =  var.region
93+       resource_instance_id          =  module.cos.cos_instance_id
94+       kms_guid                      =  module.key_protect.kms_guid
95+       kms_key_crn                   =  module.key_protect.keys[" ${ local . key_ring_name } .${ local . key_name } " 
96+       skip_iam_authorization_policy =  false 
97+     },
98+     {
99+       bucket_name                   =  local.metrics_bucket_name
100+       kms_encryption_enabled        =  true 
101+       region_location               =  var.region
102+       resource_instance_id          =  module.cos.cos_instance_id
103+       kms_guid                      =  module.key_protect.kms_guid
104+       kms_key_crn                   =  module.key_protect.keys[" ${ local . key_ring_name } .${ local . key_name } " 
105+       skip_iam_authorization_policy =  true  #  Auth policy created in first bucket
106+     }
107+   ]
108+ }
109+ 
13110# #######################################################################################################################
14- #  COS 
111+ #  Cloud Logs 
15112# #######################################################################################################################
16113
17114# 
18115#  Developer tips:
19116#    - Call the local module / modules in the example to show how they can be consumed
20- #    - Include  the actual module source as a code comment like below so consumers know how to consume from correct location
117+ #    - include  the actual module source as a code comment like below so consumers know how to consume from correct location
21118# 
22119
23- module  "cos"  {
24-   source  =  " ../.." 
25-   #  remove the above line and uncomment the below 2 lines to consume the module from the registry
26-   #  source            = "terraform-ibm-modules/<replace>/ibm"
27-   #  version           = "X.Y.Z" # Replace "X.Y.Z" with a release version to lock into a specific release
28-   name               =  " ${ var . prefix } -cos" 
120+ locals  {
121+   cloud_logs_instance_name  =  " ${ var . prefix } -cloud-logs" 
122+ }
123+ 
124+ module  "cloud_logs"  {
125+   source  =  " ../../" 
126+   #  delete line above and use below syntax to pull module source from hashicorp when consuming this module
127+   #  source    = "terraform-ibm-modules/cloud-logs/ibm"
128+   #  version   = "X.Y.Z" # Replace "X.X.X" with a release version to lock into a specific release
29129  resource_group_id  =  . resource_group . resource_group_id 
130+   region             =  . region 
131+   instance_name      =  . cloud_logs_instance_name 
30132  resource_tags      =  . resource_tags 
31-   plan               =  " cos-one-rate-plan" 
133+   access_tags        =  . access_tags 
134+   data_storage  =  
135+     #  logs and metrics buckets must be different
136+     logs_data =  {
137+       enabled         =  true 
138+       bucket_crn      =  module.buckets.buckets[local.logs_bucket_name].bucket_crn
139+       bucket_endpoint =  module.buckets.buckets[local.logs_bucket_name].s3_endpoint_direct
140+     },
141+     metrics_data =  {
142+       enabled         =  true 
143+       bucket_crn      =  module.buckets.buckets[local.metrics_bucket_name].bucket_crn
144+       bucket_endpoint =  module.buckets.buckets[local.metrics_bucket_name].s3_endpoint_direct
145+     }
146+   }
147+   policies  =  
148+     logs_policy_name     =  " ${ var . prefix } -logs-policy-1" 
149+     logs_policy_priority =  " type_low" 
150+     application_rule =  [{
151+       name         =  " test-system-app" 
152+       rule_type_id =  " start_with" 
153+     }]
154+     log_rules =  [{
155+       severities =  [" info" " debug" 
156+     }]
157+     subsystem_rule =  [{
158+       name         =  " test-sub-system" 
159+       rule_type_id =  " start_with" 
160+     }]
161+   }]
162+   existing_event_notifications_instances  =  
163+     en_instance_id      =  module.event_notification_1.guid
164+     en_region           =  var.region
165+     en_integration_name =  " ${ var . prefix } -en-1" 
166+     },
167+     {
168+       en_instance_id      =  module.event_notification_2.guid
169+       en_region           =  var.region
170+       en_integration_name =  " ${ var . prefix } -en-2" 
171+   }]
32172}
0 commit comments