diff options
| author | Paul Buetow <paul@buetow.org> | 2023-12-20 09:27:15 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2023-12-20 09:27:15 +0200 |
| commit | 2c675b23a0a2d876c6c54ae09c0984b9938003d5 (patch) | |
| tree | 1fbdb4e4b2a41faf698e49b31e3973b70d75aab0 | |
| parent | 7fd1d95501235b9a9c2fcc19d8b313a840db89d9 (diff) | |
initial nextcloud
| -rw-r--r-- | org-buetow-ecs/wallabagservice.tf | 2 | ||||
| -rw-r--r-- | org-buetow-nextcloud/id_rsa.pub | 1 | ||||
| -rw-r--r-- | org-buetow-nextcloud/main.tf | 72 | ||||
| -rw-r--r-- | org-buetow-nextcloud/remotestate.tf | 8 | ||||
| -rw-r--r-- | org-buetow-nextcloud/user_data.tpl | 21 | ||||
| -rw-r--r-- | org-buetow-nextcloud/variables.tf | 5 |
6 files changed, 108 insertions, 1 deletions
diff --git a/org-buetow-ecs/wallabagservice.tf b/org-buetow-ecs/wallabagservice.tf index e8cb8ac..715c777 100644 --- a/org-buetow-ecs/wallabagservice.tf +++ b/org-buetow-ecs/wallabagservice.tf @@ -78,7 +78,7 @@ resource "aws_ecs_service" "wallabag_service" { cluster = aws_ecs_cluster.my_ecs_cluster.id task_definition = aws_ecs_task_definition.wallabag_task.arn launch_type = "FARGATE" - desired_count = 1 + desired_count = 0 load_balancer { target_group_arn = aws_lb_target_group.my_wallabag_tg.arn diff --git a/org-buetow-nextcloud/id_rsa.pub b/org-buetow-nextcloud/id_rsa.pub new file mode 100644 index 0000000..0185c3c --- /dev/null +++ b/org-buetow-nextcloud/id_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDNjjJiqpf7+tb7Ejy2wsTHrOzakG6kJN+zopASjRUrFrGWZXw3xyqMlGR0QhyXEleOEjMlV3SyFEmg4PvDiEnri1MLLVZ/mt24T99C7Hq3UsXXqqwjB1HbUMv6wfNwV3DabiJtdfhlN0F2k2GlYsC/N6Xi3Yt+LF1gW70wCaYB05hGOjiZhlkQbAVX29UqSxIJIa9G9+ZDv7pwB0J9qbKAgwr6kkGoqmiGI01qBixEO0FYs3h+l9R+XWQln4Uw5er/RlvLiqCKcLMzv1Q/pqlKL1wdDTR3ANvf2z7m7Z6GcQmfOuvrHHotEH9uoVOiB+RdeFU86U1mQuzo+hZUBstxC03s44VCYZ075wQe85i7CVDoaSVxyefPaAOOiWZbbyYMk/s+ewP21tIEiMERTm58WTmsouO2zbrwt5rWWWEA0b0hYM8QLEn7l05Lg+2Au052E++NUckqDGyrwPyTY3J7fOVkR+ddIYHZ7WW3djc67HOYbgIAm1cWuTQQttoaOp0= paul@computer diff --git a/org-buetow-nextcloud/main.tf b/org-buetow-nextcloud/main.tf new file mode 100644 index 0000000..60bd50e --- /dev/null +++ b/org-buetow-nextcloud/main.tf @@ -0,0 +1,72 @@ +terraform { + backend "s3" { + bucket = "org-buetow-tfstate" + key = "org-buetow-nextcloud/terraform.tfstate" + region = "eu-central-1" + encrypt = true + } +} + +provider "aws" { + region = "eu-central-1" # or your preferred AWS region +} + +data "aws_region" "current" {} + +data "template_file" "user_data" { + template = file("${path.module}/user_data.tpl") + + vars = { + region = data.aws_region.current.name + efs_id = data.terraform_remote_state.base_remote_state.outputs.my_self_hosted_services_efs_id + } +} + +# Get latest Amazon Linux 2 AMI +data "aws_ami" "amazon_linux" { + most_recent = true + owners = ["amazon"] + filter { + name = "name" + values = ["amzn2-ami-hvm*"] + } + filter { + name = "virtualization-type" + values = ["hvm"] + } +} + +resource "aws_key_pair" "id_rsa_pub" { + key_name = "${var.environment}-id-rsa-pub" + public_key = file("${path.module}/id_rsa.pub") +} + +resource "aws_instance" "my_nextcloud_instance" { + ami = data.aws_ami.amazon_linux.id + instance_type = "t2.medium" + key_name = aws_key_pair.id_rsa_pub.key_name + subnet_id = data.terraform_remote_state.base_remote_state.outputs.my_public_subnet_a_id + + vpc_security_group_ids = [ + data.terraform_remote_state.base_remote_state.outputs.allow_ssh_sg_id, + data.terraform_remote_state.base_remote_state.outputs.allow_web_sg_id, + data.terraform_remote_state.base_remote_state.outputs.allow_outbound_sg_id, + ] + user_data = data.template_file.user_data.rendered + + tags = { + Name = "${var.environment}-my-nextcloud-instance" + } +} + +data "aws_route53_zone" "my_zone" { + name = "aws.buetow.org." # Replace with your domain name +} + +resource "aws_route53_record" "my_record" { + zone_id = data.aws_route53_zone.my_zone.zone_id + name = "nextcloud.aws.buetow.org" # Replace with your desired subdomain or leave empty for root + type = "A" + ttl = "300" + records = [aws_instance.my_nextcloud_instance.public_ip] +} diff --git a/org-buetow-nextcloud/remotestate.tf b/org-buetow-nextcloud/remotestate.tf new file mode 100644 index 0000000..523dca5 --- /dev/null +++ b/org-buetow-nextcloud/remotestate.tf @@ -0,0 +1,8 @@ +data "terraform_remote_state" "base_remote_state" { + backend = "s3" + config = { + bucket = "org-buetow-tfstate" + key = "org-buetow-base/terraform.tfstate" + region = "eu-central-1" + } +} diff --git a/org-buetow-nextcloud/user_data.tpl b/org-buetow-nextcloud/user_data.tpl new file mode 100644 index 0000000..0bd1892 --- /dev/null +++ b/org-buetow-nextcloud/user_data.tpl @@ -0,0 +1,21 @@ +#!/bin/bash + +# Docker +sudo yum update -y +sudo amazon-linux-extras install docker -y +sudo service docker enable +sudo service docker start +sudo usermod -a -G docker ec2-user + +# Docker Compose +#sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +#sudo chmod +x /usr/local/bin/docker-compose + +# EFS +yum install -y amazon-efs-utils +mkdir /mnt/efs +echo '${efs_id}.efs.${region}.amazonaws.com:/ /mnt/efs nfs4 defaults,vers=4.1 0 0' >> /etc/fstab +while ! mount -a; do + echo 'Retrying to mount file systems after 10s...' + sleep 10 +done diff --git a/org-buetow-nextcloud/variables.tf b/org-buetow-nextcloud/variables.tf new file mode 100644 index 0000000..e46675c --- /dev/null +++ b/org-buetow-nextcloud/variables.tf @@ -0,0 +1,5 @@ +variable "environment" { + description = "The production nextcloud environment" + type = string + default = "production" +} |
