lnc-challengeis an set of Ansible roles that deploys a simple nodejs web server and...
- configures system: common packages, set time zone...
- installs pm2 to manage node processes
- installs nginx as reverse proxy (HTTP/HTTPS)
- installs scripts to load tests and parse log
- configures cron job to send emails every 12 midnight
- Ubuntu 16.04 LTS
- Ansible >= 2.2
- User with sudo privilegies
First of all, download this repository:
$ git clone https://github.com/raphapr/lnc-challenge.git && cd lnc-challengeInstall required roles:
$ sudo ansible-galaxy install -r requirements.yml$ ansible-playbook -i local deploy.yml$ ansible-playbook -i local update-app.yml$ ansible-playbook -i local rollback-app.yml -e "n=1"A simple script that does a load test on the web server and returns maximum throughput (requests/sec). It uses wrk with 18 threads and 200 connections.
$ load_testsMaximum throughput: 1923.41 requests/secA simple script that parse nginx access log (sudo privilegies needed).
$ logparser 243971 200 /
1 404 /holycow
622 499 /As root:
$ pm2 logs lnc-serverAs root:
$ cat /var/log/nginx/access.logHere is a list of all the default variables for this role, which are also available in vars/default.yml:
#Configuration
repo_version: master
app_name: lncserver
nodejs_version: 6.x
timezone: America/Maceio
# pm2
pm2_user: root
pm2_service_name: pm2-root
pm2_service_enabled: yes
pm2_service_state: started
# ssmtp
ssmtp_root: lnc.chall3ng3@gmail.com
ssmtp_mailhub: smtp.gmail.com:587
ssmtp_hostname: localhost
ssmtp_rewrite_domain: gmail.com
ssmtp_auth_user: lnc.chall3ng3@gmail.com
ssmtp_auth_pass: dexqiyfdavjeimgc
ssmtp_use_starttls: "YES"
ssmtp_use_tls: "YES"
ssmtp_from_line_override: "YES"
# email receiver
ssmtp_receiver: lnc.chall3ng3@gmail.comDeploy variables are in vars/{deploy,rollback,update}.yml