diff --git a/roles/apache/tasks/main.yml b/roles/apache/tasks/main.yml
index 5636fc1..6fd58a8 100644
--- a/roles/apache/tasks/main.yml
+++ b/roles/apache/tasks/main.yml
@@ -57,6 +57,18 @@
setype=httpd_config_t
notify: reload httpd
+- name: ensure apache userdir module is configured
+ template:
+ src=userdir.httpd.conf.j2
+ dest=/etc/httpd/conf.d/userdir.conf
+ mode=0644
+ notify: reload httpd
+- name: ensure selinux is configured for apache user directories
+ seboolean:
+ name=httpd_enable_homedirs
+ persistent=yes
+ state={{ 'yes' if apache_userdir is defined else 'no' }}
+
- name: ensure apache mpm module is configured
template:
src=mpm.httpd.conf.j2
diff --git a/roles/apache/templates/userdir.httpd.conf.j2 b/roles/apache/templates/userdir.httpd.conf.j2
new file mode 100644
index 0000000..891d58c
--- /dev/null
+++ b/roles/apache/templates/userdir.httpd.conf.j2
@@ -0,0 +1,44 @@
+#
+# UserDir: The name of the directory that is appended onto a user's home
+# directory if a ~user request is received.
+#
+# The path to the end user account 'public_html' directory must be
+# accessible to the webserver userid. This usually means that ~userid
+# must have permissions of 711, ~userid/public_html must have permissions
+# of 755, and documents contained therein must be world-readable.
+# Otherwise, the client will only receive a "403 Forbidden" message.
+#
+
+ #
+ # UserDir is disabled by default since it can confirm the presence
+ # of a username on the system (depending on home directory
+ # permissions).
+ #
+{% if apache_userdir is defined %}
+ #UserDir disabled
+{% else %}
+ UserDir disabled
+{% endif %}
+
+ #
+ # To enable requests to /~user/ to serve the user's public_html
+ # directory, remove the "UserDir disabled" line above, and uncomment
+ # the following line instead:
+ #
+{% if apache_userdir is defined %}
+ UserDir {{ apache_userdir }}
+{% else %}
+ #UserDir public_html
+{% endif %}
+
+
+#
+# Control access to UserDir directories. The following is an example
+# for a site where these directories are restricted to read-only.
+#
+
+ AllowOverride FileInfo AuthConfig Limit Indexes
+ Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
+ Require method GET POST OPTIONS
+
+