Skip to content

Commit 773c4c4

Browse files
authored
Add credentials module (#9)
1 parent 7b9a56f commit 773c4c4

File tree

5 files changed

+77
-0
lines changed

5 files changed

+77
-0
lines changed

.buildkite/terraform-validate.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ MODULES=(
88
./modules/networking
99
./modules/docker-mirror
1010
./modules/executors
11+
./modules/credentials
1112
.
1213
./examples/single-executor
1314
./examples/multiple-executors

modules/credentials/main.tf

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
locals {
2+
prefix = var.resource_prefix != "" ? "${var.resource_prefix}-sg-" : "sg-"
3+
}
4+
5+
resource "aws_iam_user" "metric_writer" {
6+
name = "${substr(local.prefix, 0, 14)}-metric-writer"
7+
}
8+
9+
resource "aws_iam_user_policy" "metric_writer" {
10+
name = "${substr(var.resource_prefix, 0, 16)}MetricWriter"
11+
user = aws_iam_user.metric_writer.id
12+
13+
policy = <<EOF
14+
{
15+
"Version": "2012-10-17",
16+
"Statement": [
17+
{
18+
"Effect": "Allow",
19+
"Action": [
20+
"cloudwatch:PutMetricData"
21+
],
22+
"Resource": "*"
23+
}
24+
]
25+
}
26+
EOF
27+
}
28+
29+
resource "aws_iam_access_key" "metric_writer" {
30+
user = aws_iam_user.metric_writer.name
31+
}
32+
33+
resource "aws_iam_user" "instance_scraper" {
34+
name = "${substr(local.prefix, 0, 11)}-instance-scraper"
35+
}
36+
37+
resource "aws_iam_policy_attachment" "instance_scraper" {
38+
name = "${substr(var.resource_prefix, 0, 11)}InstanceScraper"
39+
users = [aws_iam_user.instance_scraper.name]
40+
groups = ["readonly"]
41+
policy_arn = "arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess"
42+
}
43+
44+
resource "aws_iam_access_key" "instance_scraper" {
45+
user = aws_iam_user.instance_scraper.name
46+
}

modules/credentials/outputs.tf

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
output "metric_writer_access_key_id" {
2+
value = aws_iam_access_key.metric_writer.id
3+
}
4+
5+
output "metric_writer_secret_key" {
6+
value = aws_iam_access_key.metric_writer.secret
7+
}
8+
9+
output "instance_scraper_access_key_id" {
10+
value = aws_iam_access_key.instance_scraper.id
11+
}
12+
13+
output "instance_scraper_access_secret_key" {
14+
value = aws_iam_access_key.instance_scraper.secret
15+
}

modules/credentials/providers.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
terraform {
2+
required_version = "0.13.7"
3+
required_providers {
4+
aws = "~> 3.0"
5+
}
6+
}

modules/credentials/variables.tf

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
variable "availability_zone" {
2+
type = string
3+
description = "The availability zone to create the instance in."
4+
}
5+
6+
variable "resource_prefix" {
7+
type = string
8+
description = "An optional prefix to add to all resources created."
9+
}

0 commit comments

Comments
 (0)