From 12cf22b1a8d9ad23809ad8048119a6920cbb9675 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Romain=20Gon=C3=A7alves?= <me@rgoncalves.se>
Date: Tue, 7 Dec 2021 15:39:14 +0000
Subject: roles: Add httpd roles

---
 roles/httpd/defaults/main.yml       |  4 ++++
 roles/httpd/meta/main.yml           |  3 +++
 roles/httpd/tasks/main.yml          | 19 +++++++++++++++++++
 roles/httpd/templates/httpd.conf.j2 | 31 +++++++++++++++++++++++++++++++
 roles/httpd_pre/tasks/main.yml      | 18 ++++++++++++++++++
 5 files changed, 75 insertions(+)
 create mode 100644 roles/httpd/defaults/main.yml
 create mode 100644 roles/httpd/meta/main.yml
 create mode 100644 roles/httpd/tasks/main.yml
 create mode 100644 roles/httpd/templates/httpd.conf.j2
 create mode 100644 roles/httpd_pre/tasks/main.yml

(limited to 'roles')

diff --git a/roles/httpd/defaults/main.yml b/roles/httpd/defaults/main.yml
new file mode 100644
index 0000000..9ccd2f3
--- /dev/null
+++ b/roles/httpd/defaults/main.yml
@@ -0,0 +1,4 @@
+httpd_configuration_file: /etc/httpd.conf
+httpd_configuration_dir: /etc/httpd.d
+httpd_chroot: /var/www
+httpd_use_nfs: false
diff --git a/roles/httpd/meta/main.yml b/roles/httpd/meta/main.yml
new file mode 100644
index 0000000..6b163d1
--- /dev/null
+++ b/roles/httpd/meta/main.yml
@@ -0,0 +1,3 @@
+dependencies:
+  - role: httpd_pre
+    tags: dependency
diff --git a/roles/httpd/tasks/main.yml b/roles/httpd/tasks/main.yml
new file mode 100644
index 0000000..a272afa
--- /dev/null
+++ b/roles/httpd/tasks/main.yml
@@ -0,0 +1,19 @@
+- name: retrieve all configuration files
+  find:
+    path: "{{ httpd_configuration_dir }}"
+    patterns: "*.conf"
+  register: configuration_files
+
+- name: generate httpd configuration
+  template:
+    src: httpd.conf.j2
+    dest: "{{ httpd_configuration_file }}"
+    owner: 0
+    group: 0
+    mode: 0644
+
+- name: enable and restart httpd
+  service:
+    name: httpd
+    state: restarted
+    enabled: true
diff --git a/roles/httpd/templates/httpd.conf.j2 b/roles/httpd/templates/httpd.conf.j2
new file mode 100644
index 0000000..6285d70
--- /dev/null
+++ b/roles/httpd/templates/httpd.conf.j2
@@ -0,0 +1,31 @@
+# managed by Ansible
+
+types {
+	text/css        css
+	text/html       html htm
+	text/plain      txt pgp pub
+	image/gif       gif
+	image/jpeg      jpeg jpg
+	image/png       png
+	image/svg+xml   svg
+	application/xml xml rss
+}
+
+{% if inventory_hostname == __global_domain_controller  %}
+server "default" {
+	listen on localhost port 8888
+
+	location "/.well-known/acme-challenge/*" {
+		root "/acme"
+		request strip 2
+	}
+
+	location * {
+		block return 302 "https://$HTTP_HOST$REQUEST_URI"
+	}
+}
+{% endif %}
+
+{% for file in configuration_files.files %}
+include "{{ file.path }}"
+{% endfor %}
diff --git a/roles/httpd_pre/tasks/main.yml b/roles/httpd_pre/tasks/main.yml
new file mode 100644
index 0000000..83afb91
--- /dev/null
+++ b/roles/httpd_pre/tasks/main.yml
@@ -0,0 +1,18 @@
+- name: include httpd role variables
+  include_vars: "{{ inventory_dir }}/roles/httpd/defaults/main.yml"
+
+- name: create httpd directory
+  file:
+    path: /etc/httpd.d
+    state: directory
+    owner: 0
+    group: 0
+    mode: 0644
+
+- name: create htpasswd directory
+  file:
+    path: /var/www/htpasswd
+    state: directory
+    owner: "www"
+    group: "www"
+    mode: 0700
-- 
cgit v1.2.3