aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2021-01-10 22:23:13 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2021-01-10 22:23:13 +0100
commitdcf9d7e3efbbe791db1a21de1dd21abf2ff22f81 (patch)
tree4c16e01fed19fa5e5de8902785b450fdcd063ddb
parent16795884f3e915ed6d8b086fd5b6b93fc4858a27 (diff)
downloadinfra-dcf9d7e3efbbe791db1a21de1dd21abf2ff22f81.tar.gz
infra-dcf9d7e3efbbe791db1a21de1dd21abf2ff22f81.tar.bz2
infra-dcf9d7e3efbbe791db1a21de1dd21abf2ff22f81.tar.xz
infra-dcf9d7e3efbbe791db1a21de1dd21abf2ff22f81.zip
terraform in minio
-rw-r--r--.gitignore2
-rw-r--r--.settings.sh14
-rw-r--r--ansible/.gitignore1
-rw-r--r--bin/.gitignore (renamed from tools/.gitignore)0
-rwxr-xr-xbin/dhall (renamed from tools/dhall)0
l---------bin/dhall-to-json (renamed from tools/dhall-to-json)0
l---------bin/dhall-to-yaml-ng (renamed from tools/dhall-to-yaml-ng)0
l---------bin/json-to-dhall (renamed from tools/json-to-dhall)0
-rwxr-xr-xbin/terraform25
l---------bin/yaml-to-dhall (renamed from tools/yaml-to-dhall)0
-rw-r--r--terraform-minio/README.md5
-rw-r--r--terraform-minio/main.tf29
-rw-r--r--terraform-minio/root.tf46
l---------terraform/dns/terraform.d1
-rw-r--r--terraform/main.tf12
-rw-r--r--terraform/minio/README.md3
16 files changed, 133 insertions, 5 deletions
diff --git a/.gitignore b/.gitignore
index 4bd922a..d32ecb8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,3 @@
secrets/
+.terraform
+.settings-vault
diff --git a/.settings.sh b/.settings.sh
index 61442c9..b8ecb8a 100644
--- a/.settings.sh
+++ b/.settings.sh
@@ -3,5 +3,15 @@
basedir=$(dirname "$_")
basedir=$(cd "$basedir" && pwd)
-echo "Adding tools/ to path"
-PATH="$basedir/tools:$PATH"
+echo "Adding bin/ to path"
+PATH="$basedir/bin:$PATH"
+
+if [[ ! -r .settings-vault ]]
+then
+ echo "Missing .settings-vault"
+else
+ echo "Loading secrets"
+ source <(cd $basedir/ansible; ansible-vault view ../.settings-vault)
+fi
+
+alias terraform="ANSIBLE_VAULT_PASS=\$($(pwd)/ansible/.vault-password) $basedir/bin/terraform"
diff --git a/ansible/.gitignore b/ansible/.gitignore
index 81e8ccb..52f3df5 100644
--- a/ansible/.gitignore
+++ b/ansible/.gitignore
@@ -6,3 +6,4 @@
.vault-password.asc
*.pyc
env
+*.local.*
diff --git a/tools/.gitignore b/bin/.gitignore
index ba077a4..ba077a4 100644
--- a/tools/.gitignore
+++ b/bin/.gitignore
diff --git a/tools/dhall b/bin/dhall
index ad71285..ad71285 100755
--- a/tools/dhall
+++ b/bin/dhall
diff --git a/tools/dhall-to-json b/bin/dhall-to-json
index ffe753a..ffe753a 120000
--- a/tools/dhall-to-json
+++ b/bin/dhall-to-json
diff --git a/tools/dhall-to-yaml-ng b/bin/dhall-to-yaml-ng
index ffe753a..ffe753a 120000
--- a/tools/dhall-to-yaml-ng
+++ b/bin/dhall-to-yaml-ng
diff --git a/tools/json-to-dhall b/bin/json-to-dhall
index ffe753a..ffe753a 120000
--- a/tools/json-to-dhall
+++ b/bin/json-to-dhall
diff --git a/bin/terraform b/bin/terraform
new file mode 100755
index 0000000..06c2a76
--- /dev/null
+++ b/bin/terraform
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+set -euo pipefail
+#set -x
+
+basedir="$(dirname $0)"
+
+terraform_version=0.13.5
+terraform_url=https://releases.hashicorp.com/terraform/$terraform_version/terraform_${terraform_version}_linux_amd64.zip
+
+dl_d=$basedir/.terraform/dl
+zip_file=$dl_d/terraform-${terraform_version}.zip
+unzip_d=$basedir/.terraform/unzip/$terraform_version
+cmd=$unzip_d/terraform
+
+if [[ ! -x $cmd ]]
+then
+ mkdir -p $dl_d
+ curl -L -o "$zip_file" $terraform_url
+ rm -rf $unzip_d
+ mkdir -p $unzip_d
+ unzip $zip_file -d $unzip_d
+fi
+
+exec "$cmd" "${@}"
diff --git a/tools/yaml-to-dhall b/bin/yaml-to-dhall
index ffe753a..ffe753a 120000
--- a/tools/yaml-to-dhall
+++ b/bin/yaml-to-dhall
diff --git a/terraform-minio/README.md b/terraform-minio/README.md
new file mode 100644
index 0000000..0e54eba
--- /dev/null
+++ b/terraform-minio/README.md
@@ -0,0 +1,5 @@
+Special Terraform setup for creating user's in Minio for keeping other
+Terraform setups in Minio.
+
+ export TF_VAR_minio_access_key=
+ export TF_VAR_minio_secret_key=
diff --git a/terraform-minio/main.tf b/terraform-minio/main.tf
new file mode 100644
index 0000000..a08c04a
--- /dev/null
+++ b/terraform-minio/main.tf
@@ -0,0 +1,29 @@
+terraform {
+ required_version = ">= 0.13"
+
+ backend "local" {
+ path = "state"
+ }
+
+ required_providers {
+ minio = {
+ source = "tidalf/minio"
+ version = "1.1.1"
+ }
+ }
+}
+
+variable "minio_access_key" {
+ type = string
+}
+
+variable "minio_secret_key" {
+ type = string
+}
+
+provider "minio" {
+ minio_server = "minio.trygvis.io:443"
+ minio_ssl = "true"
+ minio_access_key = var.minio_access_key
+ minio_secret_key = var.minio_secret_key
+}
diff --git a/terraform-minio/root.tf b/terraform-minio/root.tf
new file mode 100644
index 0000000..9751f27
--- /dev/null
+++ b/terraform-minio/root.tf
@@ -0,0 +1,46 @@
+resource "minio_s3_bucket" "terraform" {
+ bucket = "terraform"
+ acl = "public-read-write"
+}
+
+resource "minio_iam_policy" "terraform-access" {
+ name = "terraform-access"
+ policy= <<EOF
+{
+ "Version":"2012-10-17",
+ "Statement": [
+ {
+ "Effect": "Allow",
+ "Action": [
+ "s3:ListBucket"
+ ],
+ "Resource": "arn:aws:s3:::terraform-trygvis"
+ },
+ {
+ "Effect": "Allow",
+ "Action": [
+ "s3:ListBucket",
+ "s3:GetObject",
+ "s3:PutObject"
+ ],
+ "Resource": "arn:aws:s3:::terraform/*"
+ }
+ ]
+}
+EOF
+}
+
+# Users
+
+resource "minio_iam_user" "terraform-trygvis" {
+ name = "terraform-trygvis"
+}
+
+resource "minio_iam_user_policy_attachment" "terraform-trygvis" {
+ user_name = minio_iam_user.terraform-trygvis.id
+ policy_name = minio_iam_policy.terraform-access.id
+}
+
+output "terraform-trygvis_secret" {
+ value = minio_iam_user.terraform-trygvis.secret
+}
diff --git a/terraform/dns/terraform.d b/terraform/dns/terraform.d
deleted file mode 120000
index 11a3f4b..0000000
--- a/terraform/dns/terraform.d
+++ /dev/null
@@ -1 +0,0 @@
-../terraform.d \ No newline at end of file
diff --git a/terraform/main.tf b/terraform/main.tf
index 853a87d..71db6a8 100644
--- a/terraform/main.tf
+++ b/terraform/main.tf
@@ -1,8 +1,16 @@
terraform {
required_version = ">= 0.13"
- backend "local" {
- path = "../state/dns"
+ backend "s3" {
+ key = "trygvis-infra"
+ region = "us-east-1"
+ bucket = "terraform"
+ endpoint = "https://minio.trygvis.io"
+
+ skip_credentials_validation = true
+ skip_metadata_api_check = true
+ skip_region_validation = true
+ force_path_style = true
}
required_providers {
diff --git a/terraform/minio/README.md b/terraform/minio/README.md
new file mode 100644
index 0000000..18a7202
--- /dev/null
+++ b/terraform/minio/README.md
@@ -0,0 +1,3 @@
+# Using `mc` directly instead of Terraform
+
+ export MC_HOST_<alias>=https://<Access Key>:<Secret Key>@<YOUR-S3-ENDPOINT>