Skip to content

Commit 945e27e

Browse files
author
Andrew Trice
authored
Flow logs (#24)
* work in progres: flow logs * Added flow log with tests Signed-off-by: Andrew Trice <[email protected]> * added random string to bucket name Signed-off-by: Andrew Trice <[email protected]> * added random string to bucket name Signed-off-by: Andrew Trice <[email protected]> * removed random string b/c it causs other problems. changed bucket name to be unique Signed-off-by: Andrew Trice <[email protected]> * added policy creation for the automated testing script Signed-off-by: Andrew Trice <[email protected]>
1 parent 2c445ee commit 945e27e

File tree

4 files changed

+83
-0
lines changed

4 files changed

+83
-0
lines changed

main.tf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,15 @@ resource ibm_is_security_group_rule private_dns_2 {
106106
port_max = 53
107107
}
108108
}
109+
110+
resource ibm_is_flow_log flowlog_instance {
111+
count = length(var.flow-log-cos-bucket-name) > 0 ? 1 : 0
112+
depends_on = [ibm_is_vpc.vpc]
113+
name = "${local.vpc_name}-flowlog"
114+
active = true
115+
//target can be VPC or Virtual Server Instance or Subnet or Primary Network Interface or Secondary Network Interface
116+
target = data.ibm_is_vpc.vpc.id
117+
resource_group = var.resource_group_id
118+
storage_bucket = var.flow-log-cos-bucket-name
119+
}
120+

test/stages/stage0.tf

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,15 @@
11
terraform {
2+
required_version = ">= 0.13.0"
3+
4+
required_providers {
5+
ibm = {
6+
source = "ibm-cloud/ibm"
7+
version = ">= 1.22.0"
8+
}
9+
}
210
}
11+
12+
provider "ibm" {
13+
ibmcloud_api_key = var.ibmcloud_api_key
14+
}
15+

test/stages/stage3-vpc-flow-log.tf

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
module "cos" {
2+
source = "github.com/ibm-garage-cloud/terraform-ibm-object-storage.git"
3+
4+
resource_group_name = var.resource_group_name
5+
name_prefix = var.name_prefix
6+
name = "flow-log-cos-instance"
7+
}
8+
9+
resource null_resource print_cos_id {
10+
depends_on = [module.cos.id]
11+
provisioner "local-exec" {
12+
command = "echo 'Provisioning bucket into COS instance: ${module.cos.id}'"
13+
}
14+
}
15+
16+
resource "ibm_iam_authorization_policy" "policy" {
17+
source_service_name = "is"
18+
source_resource_type = "flow-log-collector"
19+
target_service_name = "cloud-object-storage"
20+
roles = ["Writer"]
21+
}
22+
23+
module "dev_cos_bucket" {
24+
source = "github.com/cloud-native-toolkit/terraform-ibm-object-storage-bucket.git"
25+
26+
resource_group_name = module.resource_group.name
27+
cos_instance_id = module.cos.id
28+
name_prefix = var.name_prefix
29+
ibmcloud_api_key = var.ibmcloud_api_key
30+
name = "fl-testing-gsi"
31+
region = var.region
32+
}
33+
34+
resource null_resource print_bucket {
35+
provisioner "local-exec" {
36+
command = "echo 'Bucket created: ${module.dev_cos_bucket.bucket_name}'"
37+
}
38+
}
39+
40+
41+
module "dev_vpc_with_flowlog" {
42+
source = "./module"
43+
44+
45+
resource_group_id = module.resource_group.id
46+
resource_group_name = module.resource_group.name
47+
region = var.region
48+
name_prefix = var.name_prefix
49+
name = "vpc-with-fl-${module.cos.name}-${length(null_resource.print_bucket)}"
50+
ibmcloud_api_key = var.ibmcloud_api_key
51+
flow-log-cos-bucket-name = module.dev_cos_bucket.bucket_name
52+
}

variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,9 @@ variable "provision" {
3535
description = "Flag indicating that the instance should be provisioned. If false then an existing instance will be looked up"
3636
default = true
3737
}
38+
39+
variable "flow-log-cos-bucket-name" {
40+
type = string
41+
description = "Cloud Object Storage bucket id for flow logs (optional)"
42+
default = ""
43+
}

0 commit comments

Comments
 (0)