diff --git a/docs/rolereference.rst b/docs/rolereference.rst index 9e71c748eb0cf878e602a547f856d7737b3b1110..7b5804678c4aa0136c9e1c8aa731d4fb1e916636 100644 --- a/docs/rolereference.rst +++ b/docs/rolereference.rst @@ -241,6 +241,8 @@ The role implements the following: * Installs sudo. * Sets-up uniform bash prompt for all accounts (optionally coloured and with identifier). This is useful for distinguishing machines and/or environments. +* Sets-up ability to have user-specific ``/etc/profile.d/`` entries via + ``$HOME/.profile.d/``. * Installs additional base packages, as configured. * Disables ``electric-indent-mode`` in Emacs globally if either the ``emacs24`` or ``emacs24-nox`` are installed through the role. diff --git a/roles/common/files/user_profile_d.sh b/roles/common/files/user_profile_d.sh new file mode 100644 index 0000000000000000000000000000000000000000..e90a177a122090921c31a263f2e146d261b85ccc --- /dev/null +++ b/roles/common/files/user_profile_d.sh @@ -0,0 +1,8 @@ +# Read user-specific profile "configuration" files. +if [ -d "$HOME/.profile.d" ]; then + for conf in "$HOME"/.profile.d/*.sh; do + if [ -r "$conf" ]; then + . "$conf" + fi + done +fi diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml index 5766bcf1c71485d96768a55bbb890453aaf72ee1..60c18e3c3eafc0372bfbf5a5357cbb2faaf2989f 100644 --- a/roles/common/tasks/main.yml +++ b/roles/common/tasks/main.yml @@ -23,6 +23,10 @@ template: src="bash_prompt.sh.j2" dest="/etc/profile.d/bash_prompt.sh" owner=root group=root mode=644 +- name: Deploy profile configuration that allows for user-specific profile.d files + copy: src="user_profile_d.sh" dest="/etc/profile.d/z99-user_profile_d.sh" + owner=root group=root mode=644 + - name: Replace default and skeleton bashrc copy: src="{{ item.key }}" dest="{{ item.value }}" owner=root group=root mode=644 diff --git a/roles/php_website/tasks/main.yml b/roles/php_website/tasks/main.yml index de3be751a3b9ea4099a56ad24906282c851035ae..bc826f82fc81b05bb96211230145112eb7359e0a 100644 --- a/roles/php_website/tasks/main.yml +++ b/roles/php_website/tasks/main.yml @@ -11,11 +11,11 @@ - name: Create PHP website admin user user: name="{{ admin }}" uid="{{ admin_uid | default(omit) }}" group="{{ user }}" - shell=/bin/bash createhome=no home="{{ home }}" state=present + shell=/bin/bash createhome=yes home="{{ home }}" state=present -- name: Create home directory for the user (avoid populating with skeleton) - file: path="{{ home }}" state=directory - owner="{{ admin }}" group="{{ user }}" mode=2750 +- name: Set-up directory for storing user profile configuration files + file: path="{{ home }}/.profile.d" state=directory + owner="{{ admin }}" group="{{ user }}" mode=750 - name: Create PHP website user user: name="{{ user }}" uid="{{ uid | default(omit) }}" group="{{ user }}" comment="umask=0007" diff --git a/roles/wsgi_website/files/bashrc b/roles/wsgi_website/files/profile_virtualenv.sh similarity index 100% rename from roles/wsgi_website/files/bashrc rename to roles/wsgi_website/files/profile_virtualenv.sh diff --git a/roles/wsgi_website/tasks/main.yml b/roles/wsgi_website/tasks/main.yml index 5ffaa1b01730afaab10e8f9ca6ca8cc4602af3c5..61b8d036d6f2bf890c01be1a8fcf44172e535fdc 100644 --- a/roles/wsgi_website/tasks/main.yml +++ b/roles/wsgi_website/tasks/main.yml @@ -10,11 +10,15 @@ - name: Create WSGI website admin user user: name="{{ admin }}" uid="{{ admin_uid | default(omit) }}" group="{{ user }}" - shell=/bin/bash createhome=no home="{{ home }}" state=present + shell=/bin/bash createhome=yes home="{{ home }}" state=present -- name: Create home directory for the user (avoid populating with skeleton) - file: path="{{ home }}" state=directory - owner="{{ admin }}" group="{{ user }}" mode=2750 +- name: Set-up directory for storing user profile configuration files + file: path="{{ home }}/.profile.d" state=directory + owner="{{ admin }}" group="{{ user }}" mode=750 + +- name: Deploy profile configuration file for auto-activating the virtual environment + copy: src="profile_virtualenv.sh" dest="{{ home }}/.profile.d/virtualenv.sh" + owner="root" group="{{ user }}" mode="640" - name: Create WSGI website user user: name="{{ user }}" uid="{{ uid | default(omit) }}" group="{{ user }}" comment="umask=0007" @@ -47,13 +51,6 @@ template: src="venv_exec.j2" dest="{{ home }}/virtualenv/bin/exec" owner="{{ admin }}" group="{{ user }}" mode="750" -- name: Deploy minimalistic bashrc for auto-activating the virtual environment - copy: src="bashrc" dest="{{ item }}" - owner="root" group="{{ user }}" mode="640" - with_items: - - "{{ home }}/.bashrc" - - "{{ home }}/.profile" - - name: Install futures package for use with Gunicorn thread workers become_user: "{{ admin }}" pip: name=futures version="{{ futures_version }}" state=present virtualenv="{{ home }}/virtualenv"