Browse Source

Added feature to allow syncing arbitrary sets of files per user.

tags/v0.45.0
Shane Poage 9 years ago
parent
commit
cdb862e968
5 changed files with 56 additions and 1 deletions
  1. +5
    -0
      README.rst
  2. +7
    -0
      pillar.example
  3. +0
    -0
      users/files/user/.keep
  4. +8
    -1
      users/init.sls
  5. +36
    -0
      users/user_files.sls

+ 5
- 0
README.rst View File

Ensures the vimrc file exists in the users home directory. Set manage_vimrc: Ensures the vimrc file exists in the users home directory. Set manage_vimrc:
True in pillar per user. Defaults to False True in pillar per user. Defaults to False
This depends on the vim-formula to be installed This depends on the vim-formula to be installed

``users.user_files``
---------------

Permits the abitrary management of files. See pillar.example for configuration details.

+ 7
- 0
pillar.example View File

44444444 44444444
55555555 55555555


user_files:
enabled: True
# 'source' allows you to define an arbitrary directory to sync, useful to use for default files.
# should be a salt fileserver path either with or without 'salt://'
# if not present, it defaults to 'salt://users/files/user/<username>
source: users/files/default

## Absent user ## Absent user
cuser: cuser:
absent: True absent: True

+ 0
- 0
users/files/user/.keep View File


+ 8
- 1
users/init.sls View File

{% from "users/map.jinja" import users with context %} {% from "users/map.jinja" import users with context %}
{% set used_sudo = [] %} {% set used_sudo = [] %}
{% set used_googleauth = [] %} {% set used_googleauth = [] %}
{% set used_user_files = [] %}


{%- for name, user in pillar.get('users', {}).items() {%- for name, user in pillar.get('users', {}).items()
if user.absent is not defined or not user.absent %} if user.absent is not defined or not user.absent %}
{%- if 'google_auth' in user %} {%- if 'google_auth' in user %}
{%- do used_googleauth.append(1) %} {%- do used_googleauth.append(1) %}
{%- endif %} {%- endif %}
{%- if pillar.get('users:' + name + ':user_files:enabled', False) %}
{%- do used_user_files.append(1) %}
{%- endif %}
{%- endfor %} {%- endfor %}


{%- if used_sudo or used_googleauth %}
{%- if used_sudo or used_googleauth or used_user_files %}
include: include:
{%- if used_sudo %} {%- if used_sudo %}
- users.sudo - users.sudo
{%- if used_googleauth %} {%- if used_googleauth %}
- users.googleauth - users.googleauth
{%- endif %} {%- endif %}
{%- if used_user_files %}
- users.user_files
{%- endif %}
{%- endif %} {%- endif %}


{% for name, user in pillar.get('users', {}).items() {% for name, user in pillar.get('users', {}).items()

+ 36
- 0
users/user_files.sls View File

{% from "users/map.jinja" import users with context -%}

include:
- users

{%- for username, user in pillar.get('users', {}).items() if (user.absent is not defined or not user.absent) -%}
{%- set user_files = pillar.get('users:' + username + ':user_files', {'enabled': False}) -%}

{%- if user_files.enabled -%}
{%- set user_group = pillar.get(('users:' + username + ':prime_group:name'), username) -%}

{%- if user_files.source is defined -%}
{%- if user_files.source.startswith('salt://') -%}
{%- set file_source = user_files.source -%}
{%- else -%}
{%- set file_source = ('salt://' + user.user_files.source) -%}
{%- endif -%}
{%- else -%}
{%- set file_source = ('salt://users/files/user/' + username) -%}
{%- endif -%}

users_userfiles_{{ username }}_recursive:
file.recurse:
- name: {{ user.home }}
- source: {{ file_source }}
- user: {{ username }}
- group: {{ user_group }}
- clean: False
- include_empty: True
- keep_symlinks: True
- require:
- user: users_{{ username }}_user
- file: users_{{ username }}_user

{% endif -%}
{% endfor -%}

Loading…
Cancel
Save