• Stars
    star
    557
  • Rank 79,968 (Top 2 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 2 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Pike is a tool for determining the permissions or policy required for IAC code

Pike

alt text

Maintenance Build Status Latest Release GitHub tag (latest SemVer) Terraform Version pre-commit checkov Github All Releases

Pike is a tool, to determine the minimum permissions required to run a TF/IAC run:

Pike currently supports Terraform and supports multiple providers (AWS, GCP, AZURE), Azure is the newest with AWS having the most supported resources https://github.com/JamesWoolfenden/pike/tree/master/src/mapping. Feel free to submit PR or Issue if you find an issue or even better add new resources, and then I'll take a look at merging it ASAP.

CAVEAT The policies and roles are to get you started, there are no conditions and resources are all wildcards (for AWS) this is definitely not best practice, you need will to modify these permissions to minimum required by adding these constrictions, however I also added the ability (in AWS so far) to generate short-lived credentials for your build and remotely (REMOTE) supply and invoke your builds (INVOKE).

Ideally I would like to do this for you, but these policies are determined statically, and we would need to determine the resource names that will be created and know your intentions.

Table of Contents

Install

Download the latest binary here:

https://github.com/JamesWoolfenden/pike/releases

Install from code:

  • Clone repo
  • Run go install

Install remotely:

go install  github.com/jameswoolfenden/pike@latest

MacOS

brew tap jameswoolfenden/homebrew-tap
brew install jameswoolfenden/tap/pike

Windows

I'm now using Scoop to distribute releases, it's much quicker to update and easier to manage than previous methods, you can install scoop from https://scoop.sh/.

Add my scoop bucket:

scoop bucket add iac https://github.com/JamesWoolfenden/scoop.git

Then you can install a tool:

scoop install pike

Docker

docker pull jameswoolfenden/pike
docker run --tty --volume /local/path/to/tf:/tf jameswoolfenden/pike scan -d /tf

https://hub.docker.com/repository/docker/jameswoolfenden/pike

Usage

Scan

To scan a directory of Terraform file:

./pike scan -d .\terraform\
{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "ec2:MonitorInstances",
            "ec2:UnmonitorInstances",
            "ec2:DescribeInstances",
            "ec2:DescribeTags",
            "ec2:DescribeInstanceAttribute",
            "ec2:DescribeVolumes",
            "ec2:DescribeInstanceTypes",
            "ec2:RunInstances",
            "ec2:DescribeInstanceCreditSpecifications",
            "ec2:StopInstances",
            "ec2:StartInstances",
            "ec2:ModifyInstanceAttribute",
            "ec2:TerminateInstances",
            "ec2:AuthorizeSecurityGroupIngress",
            "ec2:AuthorizeSecurityGroupEgress",
            "ec2:CreateSecurityGroup",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeAccountAttributes",
            "ec2:DescribeNetworkInterfaces",
            "ec2:DeleteSecurityGroup",
            "ec2:RevokeSecurityGroupEgress"
        ],
        "Resource": "*"
    }
}

You can also generate the policy as Terraform instead:

$pike scan -o terraform -d ../modules/aws/terraform-aws-activemq
resource "aws_iam_policy" "terraformXVlBzgba" {
  name        = "terraformXVlBzgba"
  path        = "/"
  description = "Add Description"

  policy = jsonencode({
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateNetworkInterface",
                "ec2:CreateNetworkInterfacePermission",
                "ec2:CreateSecurityGroup",
                "ec2:CreateTags",
                "ec2:DeleteNetworkInterface",
                "ec2:DeleteNetworkInterfacePermission",
                "ec2:DeleteSecurityGroup",
                "ec2:DeleteTags",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeInternetGateways",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:DetachNetworkInterface",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "kms:CreateKey",
                "kms:DescribeKey",
                "kms:EnableKeyRotation",
                "kms:GetKeyPolicy",
                "kms:GetKeyRotationStatus",
                "kms:ListResourceTags",
                "kms:ScheduleKeyDeletion",
                "kms:TagResource",
                "kms:UntagResource"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": [
                "mq:CreateBroker",
                "mq:CreateConfiguration",
                "mq:CreateTags",
                "mq:CreateUser",
                "mq:DeleteBroker",
                "mq:DeleteTags",
                "mq:DeleteUser",
                "mq:DescribeBroker",
                "mq:DescribeConfiguration",
                "mq:DescribeConfigurationRevision",
                "mq:DescribeUser",
                "mq:RebootBroker",
                "mq:UpdateBroker",
                "mq:UpdateConfiguration",
                "mq:UpdateUser"
            ],
            "Resource": "*"
        }
    ]
})
}

Output

If you select the -w flag, pike will write out the role/policy required to build your project into the .pike folder:

$pike scan -w -i -d .
2022/09/17 13:50:51 terraform init at .
2022/09/17 13:50:51 downloaded ip

The .pike folder will contain:

aws_iam_role.terraform_pike.tf
pike.generated_policy.tf

Which you can deploy using terraform to create the role/policy to build your IAC project.

Make

You can now deploy the policy you need directly (AWS only so far):

$pike make -d ../modules/aws/terraform-aws-apigateway/

2022/09/18 08:53:41 terraform init at ..\modules\aws\terraform-aws-apigateway\
2022/09/18 08:53:41 modules not found at ..\modules\aws\terraform-aws-apigateway\
2022/09/18 08:53:49 aws role create/updated arn:aws:iam::680235478471:role/terraform_pike_20220918071439382800000002
 arn:aws:iam::680235478471:role/terraform_pike_20220918071439382800000002

This new verb returns the ARN of the role created, and you can find the Terraform used in your .pike folder.

Invoke

Invoke is currently for triggering GitHub actions, if supplied with the workflow (defaults to main.yaml), repository and branch (defaults to main) flags, it will trigger the dispatch event.

You'll need to include the dispatch event in your workflow:

on:
  workflow_dispatch:
  push:
    branches:
      - master

To authenticate the GitHub Api you will need to set you GitHub Personal Access Token as the environment variable GITHUB_TOKEN

To Invoke a workflow it is then:

pike invoke -workflow master.yml -branch master -repository JamesWoolfenden/terraform-aws-s3

I created Invoke to be used in tandem with the new remote command which supplies temporary credentials to a workflow.

**Note The gitHub API is rate limited usually 5000 calls per hour.

pike make -d ./module/aws/terraform-aws-s3/example/examplea

Apply

Apply is an extension to make and will apply the policy and role and use that role to create your infrastructure:

pike apply -d ./module/aws/terraform-aws-s3/example/examplea -region eu-west-2

It is intended for testing and developing the permissions for Pike itself

Remote

Remote uses the core code of make and apply, to write temporary AWS credentials(only so far) into your workflow.

pike remote -d ./module/aws/terraform-aws-s3/example/examplea -region eu-west-2 -repository terraform-aws-s3

Readme

Pike can now be used to update a projects README.md file:

./pike readme -o terraform -d ..\modules\aws\terraform-aws-activemq\

This looks in the readme for the deliminators:

<!-- BEGINNING OF PRE-COMMIT-PIKE DOCS HOOK -->
<!-- END OF PRE-COMMIT-PIKE DOCS HOOK -->

and replaces is either with json or Terraform like so:

This is the policy required to build this project:

The Policy required is

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "mq:CreateTags",
            "mq:DeleteTags",
            "ec2:DescribeInternetGateways",
            "ec2:DescribeAccountAttributes",
            "ec2:DescribeVpcs",
            "ec2:DescribeSubnets",
            "ec2:DescribeSecurityGroups",
            "ec2:CreateNetworkInterface",
            "ec2:CreateNetworkInterfacePermission",
            "ec2:DeleteNetworkInterfacePermission",
            "ec2:DetachNetworkInterface",
            "ec2:DeleteNetworkInterface",
            "mq:CreateBroker",
            "mq:DescribeBroker",
            "mq:DescribeUser",
            "mq:UpdateBroker",
            "mq:DeleteBroker",
            "mq:CreateConfiguration",
            "mq:UpdateConfiguration",
            "mq:DescribeConfiguration",
            "mq:DescribeConfigurationRevision",
            "mq:RebootBroker",
            "ec2:CreateTags",
            "ec2:DeleteTags",
            "ec2:CreateSecurityGroup",
            "ec2:DescribeNetworkInterfaces",
            "ec2:DeleteSecurityGroup",
            "ec2:RevokeSecurityGroupEgress",
            "kms:TagResource",
            "kms:UntagResource",
            "kms:EnableKeyRotation",
            "kms:CreateKey",
            "kms:DescribeKey",
            "kms:GetKeyPolicy",
            "kms:GetKeyRotationStatus",
            "kms:ListResourceTags",
            "kms:ScheduleKeyDeletion"
        ],
        "Resource": "*"
    }
}

You can see an example here https://github.com/jamesWoolfenden/terraform-aws-activemq#policy.

Compare

Want to check your deployed IAM policy against your IAC requirement?

$./pike compare -d ../modules/aws/terraform-aws-appsync -a arn:aws:iam::680235478471:policy/basic

IAM Policy arn:aws:iam::680235478471:policy/basic versus Local ../modules/aws/terraform-aws-appsync
 {
   "Statement": [
     0: {
       "Action": [
-        0: "kinesisvideo:CreateStream"
+        0: "firehose:CreateDeliveryStream"
+        0: "firehose:CreateDeliveryStream"
+        1: "firehose:DeleteDeliveryStream"
+        2: "firehose:DescribeDeliveryStream"
+        3: "firehose:ListTagsForDeliveryStream"
+        4: "iam:AttachRolePolicy"
+        5: "iam:CreateRole"
+        6: "iam:DeleteRole"
+        7: "iam:DetachRolePolicy"
+        8: "iam:GetRole"
+        9: "iam:ListAttachedRolePolicies"
+        10: "iam:ListInstanceProfilesForRole"
+        11: "iam:ListRolePolicies"
+        12: "iam:PassRole"
+        13: "iam:TagRole"
+        14: "kms:CreateKey"
+        15: "kms:DescribeKey"
+        16: "kms:EnableKeyRotation"
+        17: "kms:GetKeyPolicy"
+        18: "kms:GetKeyRotationStatus"
+        19: "kms:ListResourceTags"
+        20: "kms:ScheduleKeyDeletion"
+        21: "logs:AssociateKmsKey"
+        22: "logs:CreateLogGroup"
+        23: "logs:DeleteLogGroup"
+        24: "logs:DeleteRetentionPolicy"
+        25: "logs:DescribeLogGroups"
+        26: "logs:DisassociateKmsKey"
+        27: "logs:ListTagsLogGroup"
+        28: "logs:PutRetentionPolicy"
+        29: "s3:CreateBucket"
+        30: "s3:DeleteBucket"
+        31: "s3:GetAccelerateConfiguration"
+        32: "s3:GetBucketAcl"
+        33: "s3:GetBucketCORS"
+        34: "s3:GetBucketLogging"
+        35: "s3:GetBucketObjectLockConfiguration"
+        36: "s3:GetBucketPolicy"
+        37: "s3:GetBucketPublicAccessBlock"
+        38: "s3:GetBucketRequestPayment"
+        39: "s3:GetBucketTagging"
+        40: "s3:GetBucketVersioning"
+        41: "s3:GetBucketWebsite"
+        42: "s3:GetEncryptionConfiguration"
+        43: "s3:GetLifecycleConfiguration"
+        44: "s3:GetObject"
+        45: "s3:GetObjectAcl"
+        46: "s3:GetReplicationConfiguration"
+        47: "s3:ListAllMyBuckets"
+        48: "s3:ListBucket"
+        49: "s3:PutBucketAcl"
+        50: "s3:PutBucketPublicAccessBlock"
+        51: "s3:PutEncryptionConfiguration"
+        52: "wafv2:CreateWebACL"
+        53: "wafv2:DeleteWebACL"
+        54: "wafv2:GetWebACL"
       ],
       "Effect": "Allow",
       "Resource": "*",
-      "Sid": ""
+      "Sid": "VisualEditor0"
     }
   ],
   "Version": "2012-10-17"
 }

Help

./pike -h
NAME:
   pike - Generate IAM policy from your IAC code

USAGE:
   pike [global options] command [command options] [arguments...]

VERSION:
   v0.2.1

AUTHOR:
   James Woolfenden <[email protected]>

COMMANDS:
   apply, a    Create a policy and use it to instantiate the IAC
   compare, c  policy comparison of deployed versus IAC
   invoke, i   Triggers a gitHub action specified with the workflow flag
   make, m     make the policy/role required for this IAC to deploy
   readme, r   Looks in dir for a README.md and updates it with the Policy required to build the code
   remote, m   Create/Update the Policy and set credentials/secret for Github Action
   scan, s     scan a directory for IAM code
   version, v  Outputs the application version
   watch, w    Waits for policy update
   help, h     Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help (default: false)
   --version, -v  print the version (default: false)

Building

go build

or

Make build

Extending

Determine and Create IAM mapping file ("./src/mapping"), working out the permissions required for your resource: e.g. aws_security_group.json

[
  {
    "apply": [
      "ec2:CreateSecurityGroup",
      "ec2:DescribeSecurityGroups",
      "ec2:DescribeAccountAttributes",
      "ec2:DescribeNetworkInterfaces",
      "ec2:DeleteSecurityGroup",
      "ec2:RevokeSecurityGroupEgress"
    ],
    "attributes": {
      "ingress": [
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:AuthorizeSecurityGroupEgress"
      ],
      "tags": [
        "ec2:CreateTags",
        "ec2:DeleteTags"
      ]
    },
    "destroy": [
      "ec2:DeleteSecurityGroup"
    ],
    "modify": [],
    "plan": []
  }
]

How

Datasources are the easiest to start with, I have a script (resource.ps1 - add pwsh with brew install --cask powershell) that creates a blank mapping file and tf resource, but you've seen the example json file - make one without any entries. You also need to create a minimal resource/datasource, that you are trying to figure out the permissions for, and place it in the correct dir e.g../terraform/aws, I have a script for making a profile for the profile in the role directory. You can then tf using the empty role against the resource/datasource with no permissions. The debug output from the tf run will help you figure out the permissions you need to add to your basic role. You then update your "basic" role.

Issues? The providers don't always tell you want you need to add, you will need to check the IAM docs and the online IAM policymakers. Not all resource are as easy as others, anything that make/scripts CF internally. Some roles require Passrole and CreateLinkedRole but won't say so. Trail and error

What about "attributes" ?

Some cloud providers require extra permissions depending on the attributes you add, this is how this is handled. Build out your tf resources to cover all reasonable scenarios.

Eventual consistency

Some cloud providers follow this model which means your test IAM role will take time after you change it to be changed, how long? This seems to vary on time of day and the resource. Whilst other providers like Azure just take a long time for the TF to change.

Add Import mapping file

Update files.go with:

//go:embed aws_security_group.json
var securityGroup []byte

Add to provider Scan

Once you have added the json import above you just need to update the lookup table, so we can read it and get the permissions:

func GetAWSResourcePermissions(result template) []interface{} {
    TFLookup := map[string]interface{}{
        "aws_s3_bucket":            awsS3Bucket,
        "aws_s3_bucket_acl":        awsS3BucketACL,
+         "aws_security_group":       awsSecurityGroup,

Also add an example Terraform file into the folder terraform//backups this helps test that all your new code is picked up pby pike.

Related Tools

https://github.com/iann0036/iamlive

More Repositories

1

packer-by-example

Image Build Process for Packer, with files for Azure, GCP and AWS for Linux (Ubuntu, Debian and Redhat) and Windows
Jinja
40
star
2

sato

Sato converts CFN into Terraform
Go
39
star
3

terraform-aws-codepipeline

Codepipeline if you must.
HCL
28
star
4

terraform-aws-cassandra

A project to set up a Cassandra cluster in AWS
HCL
20
star
5

terraform-aws-codebuild

A Terraform module for making AWS codebuilds
HCL
12
star
6

terraform-cloudflare-adblock

This module helps you set up Adblocking for your devices (PC/Mac Android/Apple) using Cloudflare - similar to a PiHole
HCL
10
star
7

tf-scaffold

TF-Scaffold is designed to automate some of the grind when you start a new terraform template and to provide a standard pattern to follow
Makefile
8
star
8

terraform-aws-cloudtrail

A basic cloudtrail setup
HCL
8
star
9

terraform-aws-budget

Creates budgets for AWS Usage
HCL
6
star
10

terraform-aws-codecommit

Contains the module, permissions and sample code to create a feature branching enabled repo.
HCL
6
star
11

terraform-aws-appsync

Basic appsync module
HCL
5
star
12

terraform-bridgecrew-examples

Examples on how to use the terraform-bridgecrew-provider
HCL
5
star
13

terraform-aws-cloudwatch-s3

Stream Cloudwatch logs to s3
HCL
4
star
14

terraform-aws-elk

A basic ELK stack in Terraform
HCL
4
star
15

dev-helpers

All the tools you need
Shell
4
star
16

full-fast-fail

A whole lot of fail going on. Nothing goes right here, anything that can go wrong does.
HCL
4
star
17

terraform-aws-dlmautosnapshot

Automates snapshots using the new DLM policy support in AWS and Terraform
HCL
4
star
18

terraform-gcp-bastion

Bastion for GCP
HCL
4
star
19

learn-terraform

Mkdocs Source to make the learn Terraform site
4
star
20

terraform-aws-ecs

Working model for using AWS ECS via Terraform
HCL
4
star
21

terraform-aws-security-alerts

It's a security module
HCL
4
star
22

terraform-aws-teamcity

Spins up a new Teamcity Instance
HCL
4
star
23

terraform-gcp-appengine

Get your container running, simply.
HCL
3
star
24

terraform-azurerm-statebucket

A state bucket module for Azure rm
HCL
3
star
25

terraform-aws-neptune

Basic Neptune module
HCL
3
star
26

terraform-aws-s3

Contains the module, permissions and sample code to create a s3 bucket in AWS
HCL
3
star
27

terraform-aws-elasticbeanstalk

An elastic beanstalk module. Because.
HCL
3
star
28

terraform-aws-sagemaker

Basic Sagemaker module
HCL
3
star
29

terraform-aws-rds

Helps to deploy an RDS DB instance
HCL
3
star
30

terraform-aws-sslcert

Creates an SSL cert for you, in a Public Zone
HCL
3
star
31

terraform-aws-codeartifact

A Terraform module for making AWS Codeartifact
HCL
3
star
32

comics

This was an app i was making for a hobby it kept a record of comics sales and could tell me/guide me on what to buy and sell for.
HTML
3
star
33

terraform-azurerm-serviceplan

Basic appserviceplan module
HCL
2
star
34

action-pike

Github action for Pike
HCL
2
star
35

terraform-gcp-helmrepo

A helm repository
HCL
2
star
36

terraform-aws-glue-crawler

Basic glue crawler module
HCL
2
star
37

terraform-aws-cloudwatch

A basic module to provision artifactory
Makefile
2
star
38

terraform-aws-vpc

Creates a VPC and public and private sub-nets for a classic AWS VPC set-up
HCL
2
star
39

terraform-aws-lambda

Basic lambda module
HCL
2
star
40

prisma-cli

Go
2
star
41

terraform-aws-elasticache

Basic elasticache module
HCL
2
star
42

terraform-aws-lightsail

Basic lightsail module
Makefile
2
star
43

terraform-aws-alb

Its a alb module
HCL
2
star
44

scoop

PowerShell
2
star
45

terraform-aws-ssm-bastion

A quick simple bastion for AWS
HCL
2
star
46

terraform-aws-auto-bastion

A bastion with SSH controlled by IAM
HCL
2
star
47

terraform-aws-ebssnap

A module that implements automated snapshotting of EBS volumes
HCL
2
star
48

terraform-azurerm-servicebus

HCL
2
star
49

terraform-aws-vpc-lite

HCL
2
star
50

terraform-aws-certificate-authority

Basic Certificate Authority module
HCL
2
star
51

terraform-azurerm-storageaccount

Basic storageaccount module
HCL
2
star
52

terraform-azurerm-static

Basic static site module
HCL
2
star
53

terraform-azurerm-linuxscaleset

Basic linuxscaleset module
HCL
2
star
54

learn-packer

Mkdocs Source to make the learn packer site
2
star
55

terraform-azurerm-cosmosdb

Basic Cosmodb module
HCL
2
star
56

terraform-aws-cross-account-role

To set up a role that can be assumed
HCL
2
star
57

terraform-aws-cloudfront-s3

For hosting static sites on S3, cloudfront is required to SSL terminate $$$.
HCL
2
star
58

terraform-aws-inspector

A basic implementation for AWS inspector
HCL
2
star
59

terraform-aws-lexbotexamples

Contains Terraform and scripting - used to complete the published AWS examples
PowerShell
2
star
60

terraform-azurerm-defender

HCL
2
star
61

terraform-azurerm-disk

Basic Disk module
Makefile
2
star
62

terraform-aws-efs

Basic EFS module
HCL
2
star
63

terraform-gcp-cluster

Set up a GKE cluster connected as part of shared VPC
HCL
2
star
64

terraform-gcp-staticip

A simple Terraform module to build an instance a static public IP
HCL
2
star
65

terraform-aws-artifactory-oss

EC2 based solution for Artifactory OSS edition.
HCL
2
star
66

terraform-http-ip

A very simple module to return the host Public IP address
Makefile
2
star
67

terraform-oci-kms

HCL
2
star
68

terraform-aws-glacier

It's about glacier
HCL
2
star
69

terraform-aws-lex-lambda

When working with lex and lambdas, we had a lot of resources associated to supporting one lambda, this just uses some sensible defaults to lighten the load.
HCL
2
star
70

terraform-aws-cloudhsm

It's about keys
Makefile
2
star
71

terraform-aws-statebucket

Contains the module, permissions and sample code to create a state bucket for further Terraform use.
HCL
2
star
72

terraform-aws-rdsinit

Monitors RDS DB creation events and then populates the database according to custom script
HCL
2
star
73

terraform-azurerm-acr

Basic acr module
HCL
1
star
74

terraform-helm-release

Makefile
1
star
75

terraform-aws-ssmdocument

It's about ssm docs
Makefile
1
star
76

terraform-aws-dax

Basic DAX module
HCL
1
star
77

terraform-aws-apigatewayv2

Makefile
1
star
78

terraform-aws-kms

Get your KMS keys here
HCL
1
star
79

terraform-aws-dynamodb

Basic Dynamodb module
HCL
1
star
80

terraform-aws-instance

Its a ec2 instance module
Makefile
1
star
81

terraform-azurerm-vnet

Basic Network module
HCL
1
star
82

terraform-gcp-bigtable-backups

HCL
1
star
83

terraform-azurerm-diskencryptionset

HCL
1
star
84

terraform-azurerm-redis

Basic Redis module
HCL
1
star
85

terraform-azurerm-cdn

HCL
1
star
86

terraform-aws-apigateway

A basic module to provision apigateway
HCL
1
star
87

terraform-aws-media-convert-queue

Basic media-convert-queue module
Makefile
1
star
88

terraform-aws-waf-global

WAF global module
HCL
1
star
89

terraform-aws-lambdalayer

This is a small module to support lambda layers
Makefile
1
star
90

terraform-azurerm-kusto

Makefile
1
star
91

terraform-aws-elastic

Provision an elasticsearch cluster from the AWS managed service
HCL
1
star
92

yor-demo

HCL
1
star
93

terraform-gcp-cloudsql

A module to create a private database setup
HCL
1
star
94

terraform-azurerm-app-insights

Makefile
1
star
95

terraform-azurerm-networkwatcher

Basic NetworkWatcher module
Makefile
1
star
96

consul-template-by-example

consul-template-by-example
Shell
1
star
97

terraform-azurerm-search

Makefile
1
star
98

terraform-azurerm-windows-webapp

HCL
1
star
99

terraform-gcp-bigtable

HCL
1
star
100

terraform-azurerm-appconfig

HCL
1
star