{%- from "linux/map.jinja" import system with context %} {%- if system.enabled %} {%- for name, user in system.user.iteritems() %} {%- if user.enabled %} system_user_{{ name }}: user.present: - name: {{ name }} - home: {{ user.home }} {%- if user.password is defined %} - password: {{ user.password }} - enforce_password: true - gid_from_name: true {%- endif %} {%- if user.groups is defined %} - groups: {{ user.groups }} {%- endif %} {%- if user.system is defined and user.system %} - system: True {%- else %} - shell: {{ user.get('shell', '/bin/bash') }} {%- endif %} {%- if user.uid is defined and user.uid %} - uid: {{ user.uid }} {%- endif %} system_user_home_{{ user.home }}: file.directory: - name: {{ user.home }} - user: {{ name }} - mode: 700 - makedirs: true - require: - user: system_user_{{ name }} {%- if user.get('sudo', False) %} /etc/sudoers.d/90-salt-user-{{ name|replace('.', '-') }}: file.managed: - source: salt://linux/files/sudoer - template: jinja - user: root - group: root - mode: 440 - defaults: user_name: {{ name }} - require: - user: system_user_{{ name }} {%- endif %} {%- else %} system_user_{{ name }}: user.absent: - name: {{ name }} system_user_home_{{ user.home }}: file.absent: - name: {{ user.home }} /etc/sudoers.d/90-salt-user-{{ name|replace('.', '-') }}: file.absent {%- endif %} {%- endfor %} {%- endif %}