Skip to content

Commit 90427f9

Browse files
authored
feat: (IAC-872) Using GitHub Actions add hadolint, shellcheck and tflint checks (#312)
1 parent 456e775 commit 90427f9

File tree

18 files changed

+136
-68
lines changed

18 files changed

+136
-68
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: Linter Analysis
2+
on:
3+
push:
4+
branches: ['*'] # '*' will cause the workflow to run on all commits to all branches.
5+
6+
jobs:
7+
# Hadolint: Job-1
8+
Hadolint:
9+
name: Hadolint
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Checkout Repo
13+
uses: actions/checkout@v3
14+
15+
- name: Run Hadolint Action
16+
uses: jbergstroem/[email protected]
17+
with:
18+
dockerfile: ./Dockerfile
19+
config_file: linting-configs/.hadolint.yaml
20+
error_level: 1 # Fail CI based on hadolint output (-1: never, 0: error, 1: warning, 2: info)
21+
22+
# ShellCheck: Job-2
23+
ShellCheck:
24+
name: ShellCheck
25+
runs-on: ubuntu-latest
26+
steps:
27+
- name: Checkout Repo
28+
uses: actions/checkout@v3
29+
30+
- name: Run ShellCheck Action
31+
uses: ludeeus/action-shellcheck@master
32+
with:
33+
severity: error
34+
35+
# TFLint: Job-3
36+
TFLint:
37+
name: TFLint
38+
runs-on: ubuntu-latest
39+
steps:
40+
- name: Checkout Repo
41+
uses: actions/checkout@v3
42+
43+
- name: Cache Plugin Directory
44+
uses: actions/cache@v3
45+
with:
46+
path: ~/.tflint.d/plugins
47+
key: ubuntu-latest-tflint-${{ hashFiles('.tflint.hcl') }}
48+
49+
- name: Setup TFLint
50+
uses: terraform-linters/[email protected]
51+
with:
52+
tflint_version: latest
53+
github_token: ${{ secrets.LINTER_TEST_TOKEN }}
54+
55+
- name: Initializing TFLint
56+
run: TFLINT_LOG=info tflint --init -c .tflint.hcl
57+
58+
- name: Run TFLint Action
59+
run: TFLINT_LOG=info tflint -c .tflint.hcl

.tflint.hcl

Lines changed: 0 additions & 13 deletions
This file was deleted.
File renamed without changes.
File renamed without changes.

linting-configs/.tflint.hcl

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
2+
# For more information on configuring TFlint; see https://github.com/terraform-linters/tflint/blob/master/docs/user-guide/config.md
3+
4+
# For more information on plugins see https://github.com/terraform-linters/tflint/blob/master/docs/user-guide/plugins.md
5+
6+
# For more information on TFlint Ruleset for Terraform; see https://github.com/terraform-linters/tflint-ruleset-terraform/blob/v0.3.0/docs/rules/README.md
7+
8+
# For more information on TFlint Ruleset for Azure, see https://github.com/terraform-linters/tflint-ruleset-azurerm/blob/master/docs/README.md
9+
10+
config {
11+
# Enables module inspection.
12+
module = true
13+
}
14+
15+
plugin "azurerm" {
16+
enabled = true
17+
version = "0.23.0"
18+
source = "github.com/terraform-linters/tflint-ruleset-azurerm"
19+
}
20+
21+
plugin "terraform" {
22+
enabled = true
23+
preset = "recommended"
24+
}
25+
26+
rule "azurerm_kubernetes_cluster_default_node_pool_invalid_vm_size" {
27+
enabled = false
28+
}

locals.tf

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,23 +43,23 @@ locals {
4343
container_registry_sku = title(var.container_registry_sku)
4444

4545
aks_rg = (var.resource_group_name == null
46-
? azurerm_resource_group.aks_rg.0
47-
: data.azurerm_resource_group.aks_rg.0
46+
? azurerm_resource_group.aks_rg[0]
47+
: data.azurerm_resource_group.aks_rg[0]
4848
)
4949

5050
network_rg = (var.vnet_resource_group_name == null
5151
? local.aks_rg
52-
: data.azurerm_resource_group.network_rg.0
52+
: data.azurerm_resource_group.network_rg[0]
5353
)
5454

55-
nsg = var.nsg_name == null ? azurerm_network_security_group.nsg.0 : data.azurerm_network_security_group.nsg.0
55+
nsg = var.nsg_name == null ? azurerm_network_security_group.nsg[0] : data.azurerm_network_security_group.nsg[0]
5656
nsg_rg_name = var.nsg_name == null ? local.aks_rg.name : local.network_rg.name
5757

5858
# Use BYO UAI if given, else create a UAI
5959
aks_uai_id = (var.aks_identity == "uai"
6060
? (var.aks_uai_name == null
61-
? azurerm_user_assigned_identity.uai.0.id
62-
: data.azurerm_user_assigned_identity.uai.0.id
61+
? azurerm_user_assigned_identity.uai[0].id
62+
: data.azurerm_user_assigned_identity.uai[0].id
6363
)
6464
: null
6565
)

main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ module "node_pools" {
202202
node_taints = each.value.node_taints
203203
node_labels = each.value.node_labels
204204
zones = (var.node_pools_availability_zone == "" || var.node_pools_proximity_placement == true) ? [] : (var.node_pools_availability_zones != null) ? var.node_pools_availability_zones : [var.node_pools_availability_zone]
205-
proximity_placement_group_id = element(coalescelist(azurerm_proximity_placement_group.proximity.*.id, [""]), 0)
205+
proximity_placement_group_id = element(coalescelist(azurerm_proximity_placement_group.proximity[*].id, [""]), 0)
206206
orchestrator_version = var.kubernetes_version
207207
tags = var.tags
208208
}

modules/azure_aks/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ resource "azurerm_kubernetes_cluster" "aks" {
9999
}
100100

101101
lifecycle {
102-
ignore_changes = [default_node_pool.0.node_count]
102+
ignore_changes = [default_node_pool[0].node_count]
103103
}
104104

105105
tags = var.aks_cluster_tags

modules/azure_aks/outputs.tf

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,39 @@
22
# SPDX-License-Identifier: Apache-2.0
33

44
output "client_key" {
5-
value = azurerm_kubernetes_cluster.aks.kube_config.0.client_key
5+
value = azurerm_kubernetes_cluster.aks.kube_config[0].client_key
66
}
77

88
output "client_certificate" {
9-
value = azurerm_kubernetes_cluster.aks.kube_config.0.client_certificate
9+
value = azurerm_kubernetes_cluster.aks.kube_config[0].client_certificate
1010
}
1111

1212
output "cluster_ca_certificate" {
13-
value = azurerm_kubernetes_cluster.aks.kube_config.0.cluster_ca_certificate
13+
value = azurerm_kubernetes_cluster.aks.kube_config[0].cluster_ca_certificate
1414
}
1515

1616
output "cluster_username" {
17-
value = azurerm_kubernetes_cluster.aks.kube_config.0.username
17+
value = azurerm_kubernetes_cluster.aks.kube_config[0].username
1818
}
1919

2020
output "cluster_password" {
21-
value = azurerm_kubernetes_cluster.aks.kube_config.0.password
21+
value = azurerm_kubernetes_cluster.aks.kube_config[0].password
2222
}
2323

2424
output "kube_config" {
2525
value = azurerm_kubernetes_cluster.aks.kube_config_raw
2626
}
2727

2828
output "host" {
29-
value = azurerm_kubernetes_cluster.aks.kube_config.0.host
29+
value = azurerm_kubernetes_cluster.aks.kube_config[0].host
3030
}
3131

3232
output "cluster_id" {
3333
value = azurerm_kubernetes_cluster.aks.id
3434
}
3535

3636
output "cluster_public_ip" {
37-
value = var.cluster_egress_type == "loadBalancer" ? data.azurerm_public_ip.cluster_public_ip.0.ip_address : null
37+
value = var.cluster_egress_type == "loadBalancer" ? data.azurerm_public_ip.cluster_public_ip[0].ip_address : null
3838
}
3939

4040
output "name" {

modules/azurerm_postgresql_flex/main.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ resource "azurerm_private_dns_zone_virtual_network_link" "flexpsql" {
1818
count = var.connectivity_method == "private" ? 1 : 0
1919

2020
name = var.server_name
21-
private_dns_zone_name = azurerm_private_dns_zone.flexpsql.0.name
21+
private_dns_zone_name = azurerm_private_dns_zone.flexpsql[0].name
2222
virtual_network_id = var.virtual_network_id
2323
resource_group_name = var.resource_group_name
2424
}
@@ -36,7 +36,7 @@ resource "azurerm_postgresql_flexible_server" "flexpsql" {
3636
version = var.server_version
3737
tags = var.tags
3838
delegated_subnet_id = var.delegated_subnet_id
39-
private_dns_zone_id = try(azurerm_private_dns_zone.flexpsql.0.id, null)
39+
private_dns_zone_id = try(azurerm_private_dns_zone.flexpsql[0].id, null)
4040

4141
depends_on = [azurerm_private_dns_zone_virtual_network_link.flexpsql]
4242

0 commit comments

Comments
 (0)