diff --git a/modules/ec2-postgresql/ec2.tf b/modules/ec2-postgresql/ec2.tf index 2033601..8b42c68 100644 --- a/modules/ec2-postgresql/ec2.tf +++ b/modules/ec2-postgresql/ec2.tf @@ -18,7 +18,7 @@ resource "aws_instance" "nginx_node" { } provisioner "file" { - source = "${path.module}/../provision/" + source = "${path.module}/provision/" destination = "/home/ubuntu/provision/" } diff --git a/modules/provision/app/index.js b/modules/ec2-postgresql/provision/app/index.js similarity index 100% rename from modules/provision/app/index.js rename to modules/ec2-postgresql/provision/app/index.js diff --git a/modules/provision/app/package.json b/modules/ec2-postgresql/provision/app/package.json similarity index 100% rename from modules/provision/app/package.json rename to modules/ec2-postgresql/provision/app/package.json diff --git a/modules/provision/install_dummy_app.sh b/modules/ec2-postgresql/provision/install_dummy_app.sh similarity index 100% rename from modules/provision/install_dummy_app.sh rename to modules/ec2-postgresql/provision/install_dummy_app.sh diff --git a/modules/provision/install_nginx.sh b/modules/ec2-postgresql/provision/install_nginx.sh similarity index 100% rename from modules/provision/install_nginx.sh rename to modules/ec2-postgresql/provision/install_nginx.sh diff --git a/modules/provision/install_nvm.sh b/modules/ec2-postgresql/provision/install_nvm.sh similarity index 100% rename from modules/provision/install_nvm.sh rename to modules/ec2-postgresql/provision/install_nvm.sh diff --git a/modules/provision/install_postgres.sh b/modules/ec2-postgresql/provision/install_postgres.sh similarity index 100% rename from modules/provision/install_postgres.sh rename to modules/ec2-postgresql/provision/install_postgres.sh diff --git a/modules/provision/install_ubuntu_build_essential.sh b/modules/ec2-postgresql/provision/install_ubuntu_build_essential.sh similarity index 100% rename from modules/provision/install_ubuntu_build_essential.sh rename to modules/ec2-postgresql/provision/install_ubuntu_build_essential.sh diff --git a/modules/provision/nginx_app.conf b/modules/ec2-postgresql/provision/nginx_app.conf similarity index 100% rename from modules/provision/nginx_app.conf rename to modules/ec2-postgresql/provision/nginx_app.conf diff --git a/modules/provision/pm2.json b/modules/ec2-postgresql/provision/pm2.json similarity index 100% rename from modules/provision/pm2.json rename to modules/ec2-postgresql/provision/pm2.json diff --git a/modules/ec2/ec2.tf b/modules/ec2/ec2.tf index 83fe226..aadae75 100644 --- a/modules/ec2/ec2.tf +++ b/modules/ec2/ec2.tf @@ -18,7 +18,7 @@ resource "aws_instance" "nginx_node" { } provisioner "file" { - source = "${path.module}/../provision/" + source = "${path.module}/provision/" destination = "/home/ubuntu/provision/" } diff --git a/modules/ec2/provision/app/index.js b/modules/ec2/provision/app/index.js new file mode 100644 index 0000000..0408bec --- /dev/null +++ b/modules/ec2/provision/app/index.js @@ -0,0 +1,8 @@ +const express = require('express'); + +const app = express(); + +app.get('/', (req, res) => { + res.send(`

Dummy app

Response from PID: ${process.pid}. Hit F5 many times!

`); +}); +app.listen(3000, () => console.log('Listening on port 3000!')); diff --git a/modules/ec2/provision/app/package.json b/modules/ec2/provision/app/package.json new file mode 100644 index 0000000..40905aa --- /dev/null +++ b/modules/ec2/provision/app/package.json @@ -0,0 +1,14 @@ +{ + "name": "sample-app", + "version": "0.0.1", + "main": "index.js", + "author": { + "name": "Julian Reyes", + "email": "jreyes@bixlabs.com", + "url": "https://twitter.com/rokemaster" + }, + "dependencies": { + "express": "^4.15.4" + }, + "private": true +} diff --git a/modules/ec2/provision/install_dummy_app.sh b/modules/ec2/provision/install_dummy_app.sh new file mode 100644 index 0000000..1443d01 --- /dev/null +++ b/modules/ec2/provision/install_dummy_app.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +# This loads nvm +export NVM_DIR="$HOME/.nvm" +\. "$NVM_DIR/nvm.sh" + +cp -r $HOME/provision/app $HOME/ +cp -r $HOME/provision/pm2.json $HOME/app-pm2.json +npm i -g pm2 + +cd $HOME/app +npm i + +pm2 start $HOME/app-pm2.json \ No newline at end of file diff --git a/modules/ec2/provision/install_nginx.sh b/modules/ec2/provision/install_nginx.sh new file mode 100644 index 0000000..6518d34 --- /dev/null +++ b/modules/ec2/provision/install_nginx.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +set -e +export DEBIAN_FRONTEND=noninteractive + +sudo apt-get install -y nginx +sudo rm /etc/nginx/sites-enabled/default +sudo ln -s $HOME/provision/nginx_app.conf /etc/nginx/sites-enabled/default +sudo systemctl restart nginx \ No newline at end of file diff --git a/modules/ec2/provision/install_nvm.sh b/modules/ec2/provision/install_nvm.sh new file mode 100644 index 0000000..cca1586 --- /dev/null +++ b/modules/ec2/provision/install_nvm.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +function latest_version() { + curl -s https://api.github.com/repos/creationix/nvm/releases/latest \ + | grep 'tag_name' \ + | cut -d '"' -f 4 +} + +function install_version() { + curl "https://raw.githubusercontent.com/creationix/nvm/${1}/install.sh" \ + | bash +} + +install_version `latest_version` + +export NVM_DIR="$HOME/.nvm" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm +[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion + +nvm install 8.4.0 \ No newline at end of file diff --git a/modules/ec2/provision/install_ubuntu_build_essential.sh b/modules/ec2/provision/install_ubuntu_build_essential.sh new file mode 100644 index 0000000..db417b1 --- /dev/null +++ b/modules/ec2/provision/install_ubuntu_build_essential.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +set -e +export DEBIAN_FRONTEND=noninteractive + +sudo apt-get update +sudo apt-get install -y build-essential libssl-dev diff --git a/modules/ec2/provision/nginx_app.conf b/modules/ec2/provision/nginx_app.conf new file mode 100644 index 0000000..7858c0b --- /dev/null +++ b/modules/ec2/provision/nginx_app.conf @@ -0,0 +1,18 @@ +upstream app { + server 127.0.0.1:3000; +} + +server { + listen 80 default_server; + listen [::]:80 default_server; + + server_name _; + + location / { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + proxy_pass http://app; + } +} \ No newline at end of file diff --git a/modules/ec2/provision/pm2.json b/modules/ec2/provision/pm2.json new file mode 100644 index 0000000..0a46fa0 --- /dev/null +++ b/modules/ec2/provision/pm2.json @@ -0,0 +1,10 @@ +{ + "name": "dummy-app", + "cwd": "/home/ubuntu/app", + "script": "index.js", + "env": { + "NODE_ENV": "production" + }, + "instances": 2, + "exec_mode": "cluster" +} \ No newline at end of file