From 5dc453cc21556e7f3f3a1ee6fcf8478be5b7c132 Mon Sep 17 00:00:00 2001
From: Jelle van der Waa <jelle@archlinux.org>
Date: Sat, 12 Dec 2020 14:53:02 +0100
Subject: [PATCH] Split archive role into archive_web for archive-mirrors

To simplify the archive role, split it up in the web serving part for
the archive-mirrors, gemini and keep the archive role for only the
archive operation. This simplifies the new role as only two lines are
required to setup the the archive mirror website.
---
 host_vars/america.mirror.pkgbuild.com         |  1 +
 host_vars/asia.mirror.pkgbuild.com            |  1 +
 host_vars/europe.mirror.pkgbuild.com          |  1 +
 playbooks/archive-mirrors.yml                 |  4 ++--
 playbooks/gemini.archlinux.org.yml            |  1 +
 roles/archive/defaults/main.yml               |  1 -
 roles/archive/tasks/main.yml                  | 24 -------------------
 roles/archive_web/defaults/main.yml           |  3 +++
 roles/archive_web/tasks/main.yml              | 20 ++++++++++++++++
 .../templates/nginx.d.conf.j2                 |  0
 10 files changed, 29 insertions(+), 27 deletions(-)
 create mode 100644 roles/archive_web/defaults/main.yml
 create mode 100644 roles/archive_web/tasks/main.yml
 rename roles/{archive => archive_web}/templates/nginx.d.conf.j2 (100%)

diff --git a/host_vars/america.mirror.pkgbuild.com b/host_vars/america.mirror.pkgbuild.com
index 817cc81b3..87d954fda 100644
--- a/host_vars/america.mirror.pkgbuild.com
+++ b/host_vars/america.mirror.pkgbuild.com
@@ -1,4 +1,5 @@
 hostname: "america.mirror.pkgbuild.com"
+archive_domain: "america.archive.pkgbuild.com"
 ipv4_address: "143.244.34.62"
 ipv4_netmask: "/25"
 ipv4_gateway: "143.244.34.126"
diff --git a/host_vars/asia.mirror.pkgbuild.com b/host_vars/asia.mirror.pkgbuild.com
index cc917725d..923618d27 100644
--- a/host_vars/asia.mirror.pkgbuild.com
+++ b/host_vars/asia.mirror.pkgbuild.com
@@ -1,4 +1,5 @@
 hostname: "asia.mirror.pkgbuild.com"
+archive_domain: "asia.archive.pkgbuild.com"
 ipv4_address: "84.17.57.98"
 ipv4_netmask: "/24"
 ipv4_gateway: "84.17.57.110"
diff --git a/host_vars/europe.mirror.pkgbuild.com b/host_vars/europe.mirror.pkgbuild.com
index ed890c44d..b115eb854 100644
--- a/host_vars/europe.mirror.pkgbuild.com
+++ b/host_vars/europe.mirror.pkgbuild.com
@@ -1,4 +1,5 @@
 hostname: "europe.mirror.pkgbuild.com"
+archive_domain: "europe.archive.pkgbuild.com"
 ipv4_address: "89.187.191.12"
 ipv4_netmask: "/26"
 ipv4_gateway: "89.187.191.62"
diff --git a/playbooks/archive-mirrors.yml b/playbooks/archive-mirrors.yml
index 1075e2003..d84d29cc3 100644
--- a/playbooks/archive-mirrors.yml
+++ b/playbooks/archive-mirrors.yml
@@ -12,5 +12,5 @@
     - { role: certbot }
     - { role: nginx }
     - { role: unbound }
-    - { role: syncarchive, tags: ['nginx'] }
-    - { role: archive, archive_nginx_only: true, archive_dir: "/srv/archive"}
+    - { role: syncarchive }
+    - { role: archive_web }
diff --git a/playbooks/gemini.archlinux.org.yml b/playbooks/gemini.archlinux.org.yml
index 51e951976..aee44ac95 100644
--- a/playbooks/gemini.archlinux.org.yml
+++ b/playbooks/gemini.archlinux.org.yml
@@ -21,6 +21,7 @@
     - { role: archweb, archweb_site: false, archweb_services: true, archweb_mirrorcheck_locations: [5, 6] }
     - { role: sources, sources_domain: "sources.archlinux.org", sources_dir: "/srv/sources" }
     - { role: archive }
+    - { role: archive_web }
     - { role: postfix, postfix_relayhost: "mail.archlinux.org" }
     - { role: fail2ban }
     - sogrep
diff --git a/roles/archive/defaults/main.yml b/roles/archive/defaults/main.yml
index 86480d584..57950a1a2 100644
--- a/roles/archive/defaults/main.yml
+++ b/roles/archive/defaults/main.yml
@@ -5,4 +5,3 @@ archive_user_home: '/home/archive'
 archive_repo: '{{ archive_user_home }}/archive-uploader'
 archive_uploader_version: 'v0.15.3'
 archive_dir: '/srv/archive'
-archive_nginx_only: false
diff --git a/roles/archive/tasks/main.yml b/roles/archive/tasks/main.yml
index 3928badc6..5df421e92 100644
--- a/roles/archive/tasks/main.yml
+++ b/roles/archive/tasks/main.yml
@@ -10,7 +10,6 @@
     owner: archive
     group: archive
     mode: 0755
-  when: not archive_nginx_only
 
 - name: setup archive configuration
   template:
@@ -19,35 +18,12 @@
     owner: root
     group: root
     mode: 0644
-  when: not archive_nginx_only
 
 - name: setup archive timer
   systemd: name=archive.timer enabled=yes state=started
-  when: not archive_nginx_only
 
 - name: setup archive-hardlink timer
   systemd: name=archive-hardlink.timer enabled=yes state=started
-  when: not archive_nginx_only
-
-- name: set up nginx
-  template:
-    src: nginx.d.conf.j2
-    dest: /etc/nginx/nginx.d/archive.conf
-    owner: root
-    group: root
-    mode: 0644
-  notify:
-    - reload nginx
-  tags: ['nginx']
-
-- name: make nginx log dir
-  file:
-    path: /var/log/nginx/{{ archive_domain }}
-    state: directory
-    owner: root
-    group: root
-    mode: 0755
-
 - name: install internet archive packages
   pacman: name=python-internetarchive,python-xtarfile state=present
 
diff --git a/roles/archive_web/defaults/main.yml b/roles/archive_web/defaults/main.yml
new file mode 100644
index 000000000..47e3fadb0
--- /dev/null
+++ b/roles/archive_web/defaults/main.yml
@@ -0,0 +1,3 @@
+---
+
+archive_dir: '/srv/archive'
diff --git a/roles/archive_web/tasks/main.yml b/roles/archive_web/tasks/main.yml
new file mode 100644
index 000000000..f9180fb60
--- /dev/null
+++ b/roles/archive_web/tasks/main.yml
@@ -0,0 +1,20 @@
+---
+
+- name: set up nginx
+  template:
+    src: nginx.d.conf.j2
+    dest: /etc/nginx/nginx.d/archive.conf
+    owner: root
+    group: root
+    mode: 0644
+  notify:
+    - reload nginx
+  tags: ['nginx']
+
+- name: make nginx log dir
+  file:
+    path: /var/log/nginx/{{ archive_domain }}
+    state: directory
+    owner: root
+    group: root
+    mode: 0755
diff --git a/roles/archive/templates/nginx.d.conf.j2 b/roles/archive_web/templates/nginx.d.conf.j2
similarity index 100%
rename from roles/archive/templates/nginx.d.conf.j2
rename to roles/archive_web/templates/nginx.d.conf.j2
-- 
GitLab