{% if salt.pillar.get('manage_root_bashrc', False) %} /root/.bashrc: file.managed: - source: 'salt://users/files/bashrc.jinja' - template: jinja - user: root - group: root - mode: 0640 - context: bashrc_user: root {% endif %} {% for user, config in salt.pillar.get('users', {}).items() %} {{ user }}_user: user.present: - name: {{ user }} - shell: {{ config.get('shell', '/bin/bash') | yaml_encode }} {% for key, val in config.items() %} {% if key not in ('shell', 'manage_bashrc') %} - {{ key }}: {{ val | tojson }} {% endif %} {% endfor %} {% if config.get('manage_bashrc', False) %} {% set homedir = salt.user.info(user).get('home', None) %} {% if homedir is none %} {{ "~%s/.bashrc" | format(user) }}: test.fail_without_changes: - name: {{ "No homedir for %s - if they were created in this run, run this state again" | format(user) }} {% else %} {{ homedir }}/.bashrc: file.managed: - source: 'salt://users/files/bashrc.jinja' - template: jinja - user: {{ user }} - group: {{ user }} - mode: 0640 - context: bashrc_user: {{ user }} - require: - user: {{ user }}_user {% endif %} {% endif %} {% endfor %}