Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Steven Nemetz committed Mar 27, 2018
0 parents commit 63198a2
Show file tree
Hide file tree
Showing 17 changed files with 224 additions and 0 deletions.
69 changes: 69 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
version: 2

jobs:
build:
docker:
- image: hashicorp/terraform:0.11.3
entrypoint: /bin/sh
steps:
- checkout
- run:
name: "Validate tf files (terraform validate)"
command: |
find . -type f -name "*.tf" -exec dirname {} \;|sort -u | while read m; do (terraform validate -check-variables=false "$m" && echo "√ $m") || exit 1 ; done
- run:
name: "Check: Terraform formatting (terraform fmt)"
command: |
if [ `terraform fmt --list=true -diff=true -write=false | tee format-issues | wc -c` -ne 0 ]; then
echo "Some terraform files need be formatted, run 'terraform fmt' to fix"
echo "Formatting issues:"
cat format-issues
exit 1
fi
- run:
name: "Install: tflint"
command: |
apk add jq wget
# Get latest version of tflint
pkg_arch=linux_amd64
dl_url=$(curl -s https://api.github.com/repos/wata727/tflint/releases/latest | jq -r ".assets[] | select(.name | test(\"${pkg_arch}\")) | .browser_download_url")
wget ${dl_url}
unzip tflint_linux_amd64.zip
mkdir -p /usr/local/tflint/bin
# Setup PATH for later run steps - ONLY for Bash and not in Bash
#echo 'export PATH=/usr/local/tflint/bin:$PATH' >> $BASH_ENV
echo "Installing tflint..."
install tflint /usr/local/tflint/bin
echo "Configuring tflint..."
tf_ver=$(terraform version | awk 'FNR <= 1' | cut -dv -f2)
echo -e "\tConfig for terraform version: ${tf_ver}"
if [ -f '.tflint.hcl' ]; then
sed -i "/terraform_version =/s/\".*\"/\"${tf_ver}\"/" .tflint.hcl
else
{
echo -e "config {\nterraform_version = \"${tf_ver}\"\ndeep_check = true\nignore_module = {"
for module in $(grep -h '[^a-zA-Z]source[ =]' *.tf | sed -r 's/.*=\s+//' | sort -u); do
# if not ^"../
echo "${module} = true"
done
echo "}}"
} > .tflint.hcl
fi
echo "tflint configuration:"
cat .tflint.hcl
- run:
# Not supporting modules from registry ?? v0.5.4
# For now, must ignore in config file
name: "Check: tflint"
command: |
#echo "Initializing terraform..."
#terraform init -input=false
echo "Running tflint..."
/usr/local/tflint/bin/tflint --version
/usr/local/tflint/bin/tflint
workflows:
version: 2
build:
jobs:
- build
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
*.tfstate
*.tfstate.backup
.terraform
terraform.tfvars
28 changes: 28 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
[![CircleCI](https://circleci.com/gh/devops-workflow/terraform-github-teams.svg?style=svg)](https://circleci.com/gh/devops-workflow/terraform-github-teams)

terraform-github-teams
=======================

Terraform module for managing Github teams

```hcl
module "github-teams" {
source = "devops-workflow/teams/github"
version = "0.0.1"
teams = [
{
name = "team1"
},
{
name = "team-d"
description = "Team with description"
},
{
name = "team-closed"
description = "Closed team"
privacy = "closed"
},
]
}
```
4 changes: 4 additions & 0 deletions examples/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@

# Example and manual test cases

Each directory contains a configuration that serves as a manual test case and an example
1 change: 1 addition & 0 deletions examples/disabled/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Example: Module disabled
9 changes: 9 additions & 0 deletions examples/disabled/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module "disabled" {
source = "../../"
enabled = false
teams = []

providers = {
github = "github.devops"
}
}
9 changes: 9 additions & 0 deletions examples/disabled/outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
output "ids" {
description = "List of team IDs"
value = "${module.disabled.ids}"
}

output "names" {
description = "List of team names"
value = "${module.disabled.names}"
}
5 changes: 5 additions & 0 deletions examples/disabled/providers.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
provider "github" {
alias = "devops"
organization = "devops-workflow"
token = "${var.devops_token}"
}
3 changes: 3 additions & 0 deletions examples/disabled/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
variable "devops_token" {
description = "Github token for organization devops-workflow"
}
1 change: 1 addition & 0 deletions examples/teams/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Example: teams
27 changes: 27 additions & 0 deletions examples/teams/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
module "teams" {
source = "../../"

providers = {
github = "github.devops"
}

teams = [
{
name = "team1"
},
{
name = "team-d"
description = "Team with description"
},
{
name = "team-closed"
description = "Closed team"
privacy = "closed"
},
{
name = "team-secret"
description = "Secret team"
privacy = "secret"
},
]
}
9 changes: 9 additions & 0 deletions examples/teams/outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
output "ids" {
description = "List of team IDs"
value = "${module.teams.ids}"
}

output "names" {
description = "List of team names"
value = "${module.teams.names}"
}
5 changes: 5 additions & 0 deletions examples/teams/providers.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
provider "github" {
alias = "devops"
organization = "devops-workflow"
token = "${var.devops_token}"
}
3 changes: 3 additions & 0 deletions examples/teams/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
variable "devops_token" {
description = "Github personal access token with owner rights for organization devops-workflow"
}
29 changes: 29 additions & 0 deletions main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# terraform-datadog-teams

# https://www.terraform.io/docs/providers/datadog/r/user.html

module "enabled" {
source = "devops-workflow/boolean/local"
version = "0.1.1"
value = "${var.enabled}"
}

data "null_data_source" "this" {
count = "${module.enabled.value ? length(var.teams) : 0}"

inputs {
name = "${lookup(var.teams[count.index], "name")}"
}
}

resource "github_team" "this" {
count = "${module.enabled.value ? length(var.teams) : 0}"
name = "${lookup(var.teams[count.index], "name")}"
description = "${lookup(var.teams[count.index], "description", "Managed by Terraform")}"
privacy = "${lookup(var.teams[count.index], "privacy", "secret")}"

# secret or closed
}

# output: id

9 changes: 9 additions & 0 deletions outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
output "ids" {
description = "List of team IDs"
value = "${compact(concat(github_team.this.*.id, list("")))}"
}

output "names" {
description = "List of team names"
value = "${compact(concat(data.null_data_source.this.*.outputs.name, list("")))}"
}
9 changes: 9 additions & 0 deletions variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
variable "enabled" {
description = "Set to false to prevent the module from creating anything"
default = true
}

variable "teams" {
description = "List of Github team maps to manage"
type = "list"
}

0 comments on commit 63198a2

Please sign in to comment.