Я хочу добиться следующего управления пользователями через Ansible: у меня есть пользователи с именами user[1-3], группы пользователей с именами admin и developer. И у меня есть куча серверов, где в зависимости от их группы пользователей пользователи должны быть добавлены ИЛИ удалены.
Что работает до сих пор, так это добавление одной отдельной группы пользователей к пользователю и добавление всех пользователей в этой группе пользователей к определенной группе серверов.
Вот мои файлы:
users.yml:
---
os_groups:
- name: sudo
system: yes
os_users:
- name: userone
comment: 'Test User'
usergroups:
- developer
- admin
authorized_keys:
- key: 'ssh-rsa ...'
- name: usertwo
comment: 'Test User 2'
usergroups:
- developer
state: present
authorized_keys:
- key: 'ssh-rsa ...'
- name: userthree
usergroups:
- admin
comment: 'Test User 3'
authorized_keys:
- key: 'ssh-rsa ...'
пособие
---
- hosts: testhosts1
sudo: yes
vars_files:
- users.yml
roles:
- role: configure-os_users
usergroup:
- admin
- hosts: testhosts2
sudo: yes
vars_files:
- users.yml
roles:
- role: configure-os_users
usergroup:
- admin
- usergroup1
задачи
- name: Ensure users present
sudo: yes
user: >-
'name={{ item.name }}'
{% if item.append is defined %}
'append={{ item.append }}'
{% endif %}
{% if item.comment is defined %}
'comment={{ item.comment }}'
{% endif %}
{% if item.createhome is defined %}
'createhome={{ item.createhome }}'
{% endif %}
{% if item.force is defined %}
'force={{ item.force }}'
{% endif %}
{% if item.generate_ssh_key is defined %}
'generate_ssh_key={{ item.generate_ssh_key }}'
{% endif %}
{% if item.group is defined %}
'group={{ item.group }}'
{% endif %}
{% if item.groups is defined %}
'groups={{ item.groups }}'
{% else %}
'groups=sudo'
{% endif %}
{% if item.home is defined %}
'home={{ item.home }}'
{% endif %}
{% if item.login_class is defined %}
'login_class={{ item.login_class }}'
{% endif %}
{% if item.move_home is defined %}
'move_home={{ item.move_home }}'
{% endif %}
{% if item.non_unique is defined %}
'non_unique={{ item.non_unique }}'
{% endif %}
{% if item.password is defined %}
'password={{ item.password }}'
{% else %}
'password=XXXXX'
{% endif %}
{% if item.remove is defined %}
'remove={{ item.remove }}'
{% endif %}
{% if item.shell is defined %}
'shell={{ item.shell }}'
{% else %}
'shell=/bin/bash'
{% endif %}
{% if item.ssh_key_bits is defined %}
'ssh_key_bits={{ item.ssh_key_bits }}'
{% endif %}
{% if item.ssh_key_comment is defined %}
'ssh_key_comment={{ item.ssh_key_comment }}'
{% endif %}
{% if item.ssh_key_file is defined %}
'ssh_key_file={{ item.ssh_key_file }}'
{% endif %}
{% if item.ssh_key_passphrase is defined %}
'ssh_key_passphrase={{ item.ssh_key_passphrase }}'
{% endif %}
{% if item.ssh_key_type is defined %}
'ssh_key_type={{ item.ssh_key_type }}'
{% endif %}
{% if item.state is defined %}
'state={{ item.state }}'
{% endif %}
{% if item.system is defined %}
'system={{ item.system }}'
{% endif %}
{% if item.uid is defined %}
'uid={{ item.uid }}'
{% endif %}
{% if item.update_password is defined %}
'update_password={{ item.update_password }}'
{% else %}
'update_password=on_create'
{% endif %}
with_items: os_users
when: usergroup in item.usergroups
Я хочу иметь возможность использовать несколько групп пользователей для каждого пользователя, и когда я удаляю группу пользователей из этого пользователя, пользователь также должен быть удален с сервера.
Я искал в Интернете и Ansible Galaxy вперед и назад, но не нашел ничего подходящего.
У вас есть идея, как я могу действовать? Особенно об удалении пользователя при удалении из группы пользователей?
Я также открыт для идей, если есть что-то, что не является Ansible, но может выполнять эту работу.
спасибо,