Skip to content

Commit eb1ce5c

Browse files
committed
added terraform-example
1 parent e87c664 commit eb1ce5c

File tree

4 files changed

+90
-0
lines changed

4 files changed

+90
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: Terraform Example
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
validate:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
- name: Setup Terraform
15+
uses: hashicorp/setup-terraform@v3
16+
with:
17+
terraform_version: 1.7.5
18+
- name: Terraform Init (example)
19+
run: terraform -chdir=terraform-example init -backend=false
20+
- name: Terraform Validate (example)
21+
run: terraform -chdir=terraform-example validate
22+
- name: Setup TFLint
23+
uses: terraform-linters/setup-tflint@v4
24+
- name: TFLint (core rules only)
25+
run: |
26+
tflint --init || true
27+
tflint -c terraform-example/.tflint.hcl terraform-example
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{ "Modules": [{ "Key": "", "Source": "", "Dir": "." }] }

terraform-example/.tflint.hcl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
plugin "terraform" {
2+
enabled = true
3+
}
4+
5+
# Keep linting minimal for example; no cloud plugins required
6+
rule "terraform_unused_declarations" { enabled = true }
7+
rule "terraform_comment_syntax" { enabled = true }
8+
rule "terraform_deprecated_index" { enabled = true }
9+

terraform-example/main.tf

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
terraform {
2+
required_version = ">= 1.3.0"
3+
required_providers {
4+
logstruct = {
5+
source = "DocSpring/logstruct"
6+
version = ">= 0.0.4"
7+
}
8+
aws = {
9+
source = "hashicorp/aws"
10+
version = ">= 5.0"
11+
}
12+
}
13+
}
14+
15+
# Validate allowed events for a canonical source
16+
data "logstruct_source" "mailer" {
17+
source = "mailer"
18+
}
19+
20+
variable "event" {
21+
type = string
22+
default = "delivered"
23+
validation {
24+
condition = contains(keys(data.logstruct_source.mailer.events), var.event)
25+
error_message = "Invalid event for source=mailer"
26+
}
27+
}
28+
29+
# Compile exact CloudWatch pattern (optional; module also compiles internally)
30+
data "logstruct_pattern" "email" {
31+
source = "mailer"
32+
event = var.event
33+
}
34+
35+
# Example module usage: metric filter
36+
module "email_delivered_metric" {
37+
# Use local relative path for CI/demo; switch to Registry in real usage:
38+
# source = "DocSpring/logstruct/aws//modules/metric-filter"
39+
source = "../terraform-aws-logstruct/modules/metric-filter"
40+
41+
name = "Email Delivered Count"
42+
log_group_name = var.log_group_name
43+
log_source = "mailer"
44+
log_event = var.event
45+
namespace = var.namespace
46+
}
47+
48+
variable "log_group_name" { type = string }
49+
variable "namespace" { type = string }
50+
51+
output "compiled_pattern" {
52+
value = data.logstruct_pattern.email.pattern
53+
}

0 commit comments

Comments
 (0)