diff --git a/terraform/init_template.tpl b/terraform/init_template.tpl new file mode 100644 index 0000000..ce314ab --- /dev/null +++ b/terraform/init_template.tpl @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +mkdir -p /mnt/efs +yum -y -q install git amazon-efs-utils +echo "${efs_name}:/ /mnt/efs nfs defaults,_netdev 0 0" >> /tmp/debug_efs.txt +mount -t nfs4 "${efs_name}:/" /mnt/efs +echo "${efs_name}:/ /mnt/efs nfs defaults,_netdev 0 0" >> /etc/fstab + +cd /home/centos +sudo -u centos git clone https://github.com/asascience/Cloud-Sandbox.git +cd Cloud-Sandbox/cloudflow/workflows/scripts +sudo -u centos ./nosofs-setup-instance.sh > /tmp/setup 2>&1 diff --git a/terraform/main.tf b/terraform/main.tf new file mode 100644 index 0000000..f7b539c --- /dev/null +++ b/terraform/main.tf @@ -0,0 +1,226 @@ +terraform { + required_providers { + aws = { + source = "hashicorp/aws" + version = "~> 3.27" + } + } +} + +provider "aws" { + region = var.preferred_region +} + +resource "aws_vpc" "cloud_vpc" { + cidr_block = "10.0.0.0/16" + enable_dns_support = true + enable_dns_hostnames = true + tags = { + Name = "IOOS Cloud Sandbox VPC Terraform" + Project = var.project_name + } +} + +resource "aws_subnet" "main" { + vpc_id = aws_vpc.cloud_vpc.id + cidr_block = "10.0.0.0/24" + availability_zone = var.availability_zone + tags = { + Name = "IOOS Cloud Sandbox VPC Subnet Terraform" + Project = var.project_name + } +} + +resource "aws_internet_gateway" "gw" { + vpc_id = aws_vpc.cloud_vpc.id + tags = { + Name = "IOOS Cloud Sandbox VPC Subnet Internet Gateway" + Project = var.project_name + } +} + +resource "aws_route_table" "default" { + vpc_id = aws_vpc.cloud_vpc.id + + route { + cidr_block = "0.0.0.0/0" + gateway_id = aws_internet_gateway.gw.id + } + + tags = { + Name = "IOOS Cloud Sandbox VPC Subnet Internet Gateway" + Project = var.project_name + } +} + +resource "aws_route_table_association" "main" { + subnet_id = aws_subnet.main.id + route_table_id = aws_route_table.default.id +} + +# base sg +resource "aws_security_group" "base_sg" { + vpc_id = aws_vpc.cloud_vpc.id + tags = { + Name = "IOOS Cloud Sandbox Base SG" + Project = var.project_name + } +} + +resource "aws_security_group" "efs_sg" { + vpc_id = aws_vpc.cloud_vpc.id + ingress { + self = true + from_port = 2049 + to_port = 2049 + protocol = "tcp" + } + # allow all outgoing from NFS + egress { + from_port = 0 + to_port = 0 + protocol = -1 + cidr_blocks = ["0.0.0.0/0"] + } + tags = { + Name = "IOOS Cloud Sandbox Base SG" + Project = var.project_name + } +} + + +resource "aws_iam_role" "sandbox_iam_role" { + name = "ioos_cloud_sandbox_terraform_role" + assume_role_policy = <