From e47d8e1040c63f0d931aa2cc03547f48c68f5518 Mon Sep 17 00:00:00 2001
From: Sven-Hendrik Haase <svenstaro@gmail.com>
Date: Wed, 15 Jun 2016 03:58:08 +0200
Subject: [PATCH] Add proper modular nginx role and a dbscripts specific config

---
 playbooks/orion.yml                       |  3 +-
 roles/dbscripts/files/dbscripts.htpasswd  |  6 ++++
 roles/dbscripts/tasks/main.yml            |  8 +++++
 roles/dbscripts/templates/nginx.d.conf.j2 | 42 +++++++++++++++++++++++
 roles/nginx/handlers/main.yml             |  4 +++
 roles/nginx/tasks/main.yml                | 21 ++++++++++++
 roles/nginx/templates/nginx.conf.j2       | 21 ++++++++++++
 7 files changed, 104 insertions(+), 1 deletion(-)
 create mode 100644 roles/dbscripts/files/dbscripts.htpasswd
 create mode 100644 roles/dbscripts/templates/nginx.d.conf.j2
 create mode 100644 roles/nginx/handlers/main.yml
 create mode 100644 roles/nginx/tasks/main.yml
 create mode 100644 roles/nginx/templates/nginx.conf.j2

diff --git a/playbooks/orion.yml b/playbooks/orion.yml
index 7907f4ae7..4a768e9f2 100644
--- a/playbooks/orion.yml
+++ b/playbooks/orion.yml
@@ -12,5 +12,6 @@
     - { role: opendkim, dkim_selector: orion }
     - { role: postfix}
     - archusers
-    - dbscripts
+    - nginx
+    - { role: dbscripts, repos_domain: "repos.archlinux.org" }
     - sudo
diff --git a/roles/dbscripts/files/dbscripts.htpasswd b/roles/dbscripts/files/dbscripts.htpasswd
new file mode 100644
index 000000000..a63cd2ae1
--- /dev/null
+++ b/roles/dbscripts/files/dbscripts.htpasswd
@@ -0,0 +1,6 @@
+$ANSIBLE_VAULT;1.1;AES256
+37613433353765373835616636316630623836316464626530333165643665383438356561613164
+6437326361383366636634353961633932646333343337620a383532633039663235323334386638
+62376235346133313233393662633766376234613136356231366238653431306336343961313730
+6230613130313731310a616465383536653830336333353234376265653263613532366564353132
+39666538613236306465313837306234363764373530353766663135386264646437
diff --git a/roles/dbscripts/tasks/main.yml b/roles/dbscripts/tasks/main.yml
index 33dc53c0a..8194729db 100644
--- a/roles/dbscripts/tasks/main.yml
+++ b/roles/dbscripts/tasks/main.yml
@@ -18,6 +18,14 @@
 - name: set up sudoers.d for special users
   copy: src=sudoers.d dest=/etc/sudoers.d/dbscripts owner=root group=root mode=600
 
+- name: set up nginx
+  template: src=nginx.d.conf.j2 dest=/etc/nginx/nginx.d/dbscripts.conf owner=root group=root mode=644
+  notify:
+    - restart nginx
+
+- name: put dbscripts.htpasswd in place
+  copy: src=dbscripts.htpasswd dest=/etc/nginx/auth/dbscripts.htpasswd owner=root group=http mode=640
+
 - name: create Arch Linux-specific users
   user:
     name: "{{ item.key }}"
diff --git a/roles/dbscripts/templates/nginx.d.conf.j2 b/roles/dbscripts/templates/nginx.d.conf.j2
new file mode 100644
index 000000000..53da46e39
--- /dev/null
+++ b/roles/dbscripts/templates/nginx.d.conf.j2
@@ -0,0 +1,42 @@
+server {
+    listen       80 default_server;
+    listen       [::];
+    server_name  {{ repos_domain }};
+    root         /srv/ftp;
+
+    satisfy  any;
+
+    location /lastupdate {
+        allow all;
+    }
+
+    # Server at velocitynet
+    allow  66.211.214.130; # dom0.archlinux.org.
+    allow  66.211.214.131; # gudrun.archlinux.org.
+    allow  66.211.214.132; # gerolde.archlinux.org.
+    allow  2001:470:1f10:717::2/128; # gerolde's tunnel IP
+
+    # Thomas' home
+    #allow  87.193.186.180; # port-87-193-186-180.static.qsc.de.
+    allow  2001:1a80:3026::/48;
+
+    # orion.archlinux.org
+    allow  88.198.91.70;
+    allow  2a01:4f8:160:6087::1;
+
+    # brynhild.archlinux.org
+    allow  176.9.18.112;
+    allow  2a01:4f8:150:1261::2;
+
+    # alberich.archlinux.org
+    allow 216.151.172.98;
+
+    # allison.archlinux.de
+    allow  144.76.107.12;
+    allow  2a01:4f8:192:520b::2;
+
+    auth_basic            "Restricted";
+    auth_basic_user_file  auth/dbscripts.htpasswd;
+
+    autoindex  on;
+}
diff --git a/roles/nginx/handlers/main.yml b/roles/nginx/handlers/main.yml
new file mode 100644
index 000000000..82c6f07c0
--- /dev/null
+++ b/roles/nginx/handlers/main.yml
@@ -0,0 +1,4 @@
+---
+
+- name: restart nginx
+  service: name=nginx state=restarted
diff --git a/roles/nginx/tasks/main.yml b/roles/nginx/tasks/main.yml
new file mode 100644
index 000000000..ae4f43131
--- /dev/null
+++ b/roles/nginx/tasks/main.yml
@@ -0,0 +1,21 @@
+---
+
+- name: install nginx
+  pacman: name=nginx-mainline state=present
+
+- name: configure nginx
+  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf owner=root group=root mode=644
+  notify:
+    - restart nginx
+
+- name: create nginx.d directory
+  file: state=directory path=/etc/nginx/nginx.d owner=root group=root mode=755
+
+- name: create auth directory
+  file: state=directory path=/etc/nginx/auth owner=root group=root mode=755
+
+- name: create default nginx log directory
+  file: state=directory path=/var/log/nginx/default owner=http group=log mode=750
+
+- name: enable nginx
+  service: name=nginx enabled=yes
diff --git a/roles/nginx/templates/nginx.conf.j2 b/roles/nginx/templates/nginx.conf.j2
new file mode 100644
index 000000000..d7cf03dbd
--- /dev/null
+++ b/roles/nginx/templates/nginx.conf.j2
@@ -0,0 +1,21 @@
+worker_processes  auto;
+
+events {
+    worker_connections  1024;
+}
+
+http {
+    include       mime.types;
+    default_type  application/octet-stream;
+
+    sendfile        on;
+    keepalive_timeout  65;
+    client_max_body_size 16M;
+
+    index  index.php index.html index.htm;
+
+    access_log   /var/log/nginx/default/access.log;
+    error_log    /var/log/nginx/default/error.log;
+
+    include nginx.d/*.conf;
+}
-- 
GitLab