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 %}