Saltstack makes it very easy to manage users. You can use pillars to predefine all of the users and add them later, or you can define them within a single sls state file.
By example here is an sls file that will add or remove any number of users to a system. If you want the user dropped from the system, change "present" to "absent" and run it again.
Thanks Will for fixes and pointing out that if you're not on a debian system you'll want to use something else for the "adm" group.
By example here is an sls file that will add or remove any number of users to a system. If you want the user dropped from the system, change "present" to "absent" and run it again.
Thanks Will for fixes and pointing out that if you're not on a debian system you'll want to use something else for the "adm" group.
{% set users = { 'someuser': { 'state': 'present', 'fullname': 'User One', 'pub_key': 'ssh-rsa .... ' }, 'someuser2': { 'state': 'present', 'fullname': 'User two', 'pub_key': 'ssh-rsa .... ' } } %} {% for name, user in users.items() %} {{ name }}: {% set shell = user.shell | default('/bin/bash') %} {% set groups = user.groups | default(['sudo', 'adm']) %} user.{{ user.state }}: - fullname: {{ user.fullname }} - home: /home/{{ name }} - shell: {{ shell }} - groups: {% for group in groups %} - {{ group }} {% endfor %} {% if user.state == 'present' %} ssh_key_{{ name }}: ssh_auth: - present - user: {{ name }} - names: - {{ user.pub_key }} - require: - {{ name }} {% endif %} {% endfor %}