Site + TF
This commit is contained in:
commit
419bbf7f63
50
.gitignore
vendored
Normal file
50
.gitignore
vendored
Normal file
@ -0,0 +1,50 @@
|
||||
.terraform*
|
||||
|
||||
# Local .terraform directories
|
||||
**/.terraform/*
|
||||
|
||||
# .tfstate files
|
||||
*.tfstate
|
||||
*.tfstate.*
|
||||
|
||||
# Crash log files
|
||||
crash.log
|
||||
crash.*.log
|
||||
|
||||
# Exclude all .tfvars files, which are likely to contain sensitive data, such as
|
||||
# password, private keys, and other secrets. These should not be part of version
|
||||
# control as they are data points which are potentially sensitive and subject
|
||||
# to change depending on the environment.
|
||||
*.tfvars
|
||||
*.tfvars.json
|
||||
|
||||
# Ignore override files as they are usually used to override resources locally and so
|
||||
# are not checked in
|
||||
override.tf
|
||||
override.tf.json
|
||||
*_override.tf
|
||||
*_override.tf.json
|
||||
|
||||
# Include override files you do wish to add to version control using negated pattern
|
||||
# !example_override.tf
|
||||
|
||||
# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan
|
||||
# example: *tfplan*
|
||||
|
||||
# Ignore CLI configuration files
|
||||
.terraformrc
|
||||
terraform.rc
|
||||
|
||||
# Generated files by hugo
|
||||
/public/
|
||||
/resources/_gen/
|
||||
/assets/jsconfig.json
|
||||
hugo_stats.json
|
||||
|
||||
# Executable may be added to repository
|
||||
hugo.exe
|
||||
hugo.darwin
|
||||
hugo.linux
|
||||
|
||||
# Temporary lock file while building
|
||||
/.hugo_build.lock
|
48
site/.gitignore
vendored
Normal file
48
site/.gitignore
vendored
Normal file
@ -0,0 +1,48 @@
|
||||
# Generated files by hugo
|
||||
/public/
|
||||
/resources/_gen/
|
||||
/assets/jsconfig.json
|
||||
hugo_stats.json
|
||||
|
||||
# Executable may be added to repository
|
||||
hugo.exe
|
||||
hugo.darwin
|
||||
hugo.linux
|
||||
|
||||
# Temporary lock file while building
|
||||
/.hugo_build.lock
|
||||
|
||||
# Local .terraform directories
|
||||
**/.terraform/*
|
||||
|
||||
# .tfstate files
|
||||
*.tfstate
|
||||
*.tfstate.*
|
||||
|
||||
# Crash log files
|
||||
crash.log
|
||||
crash.*.log
|
||||
|
||||
# Exclude all .tfvars files, which are likely to contain sensitive data, such as
|
||||
# password, private keys, and other secrets. These should not be part of version
|
||||
# control as they are data points which are potentially sensitive and subject
|
||||
# to change depending on the environment.
|
||||
*.tfvars
|
||||
*.tfvars.json
|
||||
|
||||
# Ignore override files as they are usually used to override resources locally and so
|
||||
# are not checked in
|
||||
override.tf
|
||||
override.tf.json
|
||||
*_override.tf
|
||||
*_override.tf.json
|
||||
|
||||
# Include override files you do wish to add to version control using negated pattern
|
||||
# !example_override.tf
|
||||
|
||||
# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan
|
||||
# example: *tfplan*
|
||||
|
||||
# Ignore CLI configuration files
|
||||
.terraformrc
|
||||
terraform.rc
|
6
site/archetypes/default.md
Normal file
6
site/archetypes/default.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
title: "{{ replace .Name "-" " " | title }}"
|
||||
date: {{ .Date }}
|
||||
draft: true
|
||||
---
|
||||
|
32
site/config.toml
Normal file
32
site/config.toml
Normal file
@ -0,0 +1,32 @@
|
||||
baseURL = "blog.ligthert.net"
|
||||
languageCode = "en-us"
|
||||
title = "Sacha's Blog"
|
||||
theme = "m10c"
|
||||
|
||||
[params]
|
||||
author = "Sacha Ligthert"
|
||||
description = "Things that keep me occupied, or things I just like to share with you."
|
||||
avatar = "/static/hawgface.jpg"
|
||||
#favicon = "/static/favicon_blog.jpg"
|
||||
|
||||
[[menu.main]]
|
||||
identifier = "site"
|
||||
name = "Site"
|
||||
url = "https://sacha.ligthert.net/"
|
||||
|
||||
[[menu.main]]
|
||||
identifier = "fedi"
|
||||
name = "Fedi"
|
||||
url = "https://mastodon.nl/@ligthert"
|
||||
|
||||
[[menu.main]]
|
||||
identifier = "gitea"
|
||||
name = "Gitea"
|
||||
url = "https://gitea.ligthert.net/"
|
||||
|
||||
[params.style]
|
||||
darkestColor = "#eeeeee"
|
||||
darkColor = "#ffffff"
|
||||
lightColor = "#000000"
|
||||
lightestColor = "#000000"
|
||||
primaryColor = "#000000"
|
8
site/content/posts/my-first-post.md
Normal file
8
site/content/posts/my-first-post.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "My First Post"
|
||||
date: 2022-10-20T11:44:27+02:00
|
||||
draft: true
|
||||
---
|
||||
# FIP
|
||||
My First Post! =)
|
||||
More text! :-)
|
BIN
site/content/static/favicon_blog.png
Normal file
BIN
site/content/static/favicon_blog.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 36 KiB |
BIN
site/content/static/hawgface.jpg
Normal file
BIN
site/content/static/hawgface.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 78 KiB |
167
terraform.tf
Normal file
167
terraform.tf
Normal file
@ -0,0 +1,167 @@
|
||||
# Terraform, compulsary.
|
||||
terraform {
|
||||
required_providers {
|
||||
aws = {
|
||||
source = "hashicorp/aws"
|
||||
version = "~> 4.16.0"
|
||||
}
|
||||
}
|
||||
required_version = ">= 0.15"
|
||||
}
|
||||
|
||||
# Providers!
|
||||
# S3 Bucket in Ireland
|
||||
provider "aws" {
|
||||
region = "eu-west-1"
|
||||
}
|
||||
|
||||
# Global for Certificates
|
||||
provider "aws" {
|
||||
region = "us-east-1"
|
||||
alias = "global"
|
||||
}
|
||||
|
||||
# Variables
|
||||
variable "domainname" {
|
||||
type = string
|
||||
default = "blog.ligthert.net"
|
||||
}
|
||||
|
||||
#
|
||||
# <S3
|
||||
#
|
||||
|
||||
# Create a bucket
|
||||
resource "aws_s3_bucket" "bucket" {
|
||||
bucket = var.domainname
|
||||
force_destroy = true
|
||||
}
|
||||
|
||||
# Place ACL on the bucket
|
||||
resource "aws_s3_bucket_acl" "bucket_acl" {
|
||||
bucket = aws_s3_bucket.bucket.id
|
||||
acl = "public-read"
|
||||
}
|
||||
|
||||
# Enable the static file hosting
|
||||
resource "aws_s3_bucket_website_configuration" "bucket_website" {
|
||||
bucket = aws_s3_bucket.bucket.bucket
|
||||
|
||||
index_document {
|
||||
suffix = "index.html"
|
||||
}
|
||||
error_document {
|
||||
key = "error.html"
|
||||
}
|
||||
}
|
||||
|
||||
# Give bucket a policy
|
||||
resource "aws_s3_bucket_policy" "bucket_policy" {
|
||||
bucket = aws_s3_bucket.bucket.id
|
||||
policy = data.aws_iam_policy_document.bucket_policy_document.json
|
||||
}
|
||||
|
||||
# Create a policy document
|
||||
data "aws_iam_policy_document" "bucket_policy_document" {
|
||||
statement {
|
||||
sid = "PublicReadGetObject"
|
||||
effect = "Allow"
|
||||
principals {
|
||||
type = "AWS"
|
||||
identifiers = ["*"]
|
||||
}
|
||||
actions = ["s3:GetObject"]
|
||||
resources = [
|
||||
var.domainname,
|
||||
"${var.domainname}/*",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# S3>
|
||||
#
|
||||
|
||||
#
|
||||
# <CloudFront
|
||||
#
|
||||
|
||||
locals {
|
||||
s3_origin_id = "S3Origin"
|
||||
}
|
||||
|
||||
resource "aws_cloudfront_origin_access_identity" "dafaim" {
|
||||
comment = "Manage access and identities."
|
||||
}
|
||||
|
||||
resource "aws_cloudfront_distribution" "s3_distribution" {
|
||||
|
||||
aliases = ["${var.domainname}"]
|
||||
comment = "A CloudFront distribution"
|
||||
|
||||
default_cache_behavior {
|
||||
allowed_methods = ["GET", "HEAD", "OPTIONS"]
|
||||
cached_methods = ["GET", "HEAD", "OPTIONS"]
|
||||
compress = true
|
||||
default_ttl = 3600
|
||||
forwarded_values {
|
||||
query_string = false
|
||||
cookies {
|
||||
forward = "none"
|
||||
}
|
||||
}
|
||||
max_ttl = 86400
|
||||
target_origin_id = local.s3_origin_id
|
||||
viewer_protocol_policy = "https-only"
|
||||
}
|
||||
default_root_object = "index.html"
|
||||
enabled = true
|
||||
is_ipv6_enabled = true
|
||||
|
||||
ordered_cache_behavior {
|
||||
path_pattern = "/*"
|
||||
allowed_methods = ["GET", "HEAD", "OPTIONS"]
|
||||
cached_methods = ["GET", "HEAD", "OPTIONS"]
|
||||
target_origin_id = local.s3_origin_id
|
||||
|
||||
forwarded_values {
|
||||
query_string = false
|
||||
headers = ["Origin"]
|
||||
|
||||
cookies {
|
||||
forward = "none"
|
||||
}
|
||||
}
|
||||
|
||||
default_ttl = 86400
|
||||
max_ttl = 31536000
|
||||
compress = true
|
||||
viewer_protocol_policy = "https-only"
|
||||
}
|
||||
|
||||
origin {
|
||||
domain_name = aws_s3_bucket.bucket.bucket_regional_domain_name
|
||||
origin_id = local.s3_origin_id
|
||||
s3_origin_config {
|
||||
origin_access_identity = aws_cloudfront_origin_access_identity.dafaim.cloudfront_access_identity_path
|
||||
}
|
||||
}
|
||||
|
||||
restrictions {
|
||||
geo_restriction {
|
||||
restriction_type = "none"
|
||||
}
|
||||
}
|
||||
|
||||
price_class = "PriceClass_All"
|
||||
viewer_certificate {
|
||||
acm_certificate_arn = "arn:aws:acm:us-east-1:131289899509:certificate/affaa360-86e8-40e9-b008-e691e55646c8"
|
||||
cloudfront_default_certificate = false
|
||||
ssl_support_method = "sni-only"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#
|
||||
# CloudFront>
|
||||
#
|
Loading…
x
Reference in New Issue
Block a user