users
Роль Ansible: Пользователи
Эта роль управляет пользователями и их группами в вашей системе.
Требования
- Доступ к репозиторию с пакетами, скорее всего, в интернете.
- Свежая версия Ansible (тестирована последние 2 стабильные основные версии).
Следующие роли можно установить, чтобы убедиться, что все требования соблюдены, с помощью ansible-galaxy install -r requirements.yml
:
---
- rembik.bootstrap
Переменные роли
Эти значения по умолчанию установлены в defaults/main.yml
:
---
# файл значений по умолчанию для пользователей
# Значение по умолчанию, создавать ли группу для каждого пользователя
# и делать ее основной группой
users_group_per_user: yes
# Если группа для пользователя не создается, это основная
# группа, к которой принадлежат все пользователи
users_group: users
# Значение по умолчанию, создавать ли домашний каталог для пользователя
# при создании учетной записи или если домашний каталог не существует
users_create_home: yes
# Значения по умолчанию для sudo для пользователя, когда sudo установлено на yes,
# но не указаны
users_sudo_options: "ALL=(ALL) NOPASSWD: ALL"
# Значение по умолчанию для оболочки пользователя, если не указано
users_shell: /bin/bash
# Локальный каталог для поиска/хранения сгенерированных ssh ключей
users_ssh_key_dir: ssh_keys
# Списки пользователей для создания, удаления или изменения
users: []
# Список групп пользователей для создания или удаления
users_groups: []
Хорошее место для замены этих переменных — group_vars/all
или group_vars/group_name
,
если вы хотите, чтобы определенные пользователи и группы были только на определенных машинах.
Переменная users
содержит список пользователей для создания, удаления или изменения.
Каждый пользователь в этом списке определяется как словарь.
Следующие параметры доступны для каждого словаря пользователя:
Параметр пользователя | Выбор / По умолчанию | Комментарии |
---|---|---|
name обязательно |
Имя пользователя для создания, удаления или изменения. | |
state |
Выбор:
|
Должна ли учетная запись существовать или нет, предпринимая действия, если состояние отличается от заявленного. |
comment |
Опционально задает описание (так называемый GECOS) учетной записи пользователя. | |
uid |
Опционально задает UID пользователя. | |
group |
По умолчанию: user.name |
Опционально переопределяет основную группу пользователя, взятую из users_group_per_user=yes или users_group (принимает имя группы). |
gid |
Это влияет только на users_group_per_user=yes . Опционально задает другой GID основной группы пользователя. В противном случае будет использован UID. |
|
groups |
Список групп, в которые пользователь будет добавлен. Если установлен в пустую строку, пользователь удаляется из всех групп, кроме основной группы. | |
append |
Выбор:
|
Если yes, добавляет пользователя в группы, указанные в groups . Если no, пользователь будет добавлен только в группы, указанные в groups , удаляя их из всех остальных групп. |
password |
По умолчанию: ! | Опционально устанавливает пароль пользователя на это зашифрованное значение. В противном случае учетная запись пользователя будет заблокирована. |
update_password |
Выбор:
|
always обновит пароли, если они различаются. on_create установит пароль только для вновь созданных пользователей. |
create_home |
Выбор:
|
Опционально переопределяет это значение, взятое из users_create_home . Если не установлено на no, домашний каталог будет создан для пользователя, когда учетная запись будет создана или если домашний каталог не существует. |
home |
По умолчанию: /home/user.name |
Опционально задает домашний каталог пользователя. |
shell |
По умолчанию: /bin/bash | Опционально переопределяет оболочку пользователя, взятую из users_shell . |
profile |
Опционально задает пользовательский блок в профиле пользователя. Требует user.create_home=yes ! |
|
cron |
Выбор:
|
Если yes, разрешает пользователю создавать, редактировать, отображать или удалять файлы crontab. В противном случае запрещает изменять файлы crontab. |
sudo |
Выбор:
|
Если yes, устанавливает параметры sudo для пользователя, взятые из user.sudo_options . В противном случае удаляет параметры sudo для пользователя. |
sudo_options |
По умолчанию: ALL=(ALL) NOPASSWD: ALL | Опционально переопределяет параметры sudo для пользователя, взятые из users_sudo_options . |
ssh_key |
Список авторизованных SSH ключей пользователя (принимает публичные SSH ключи; включен напрямую и без переносов строк). Если установлен на пустой список или строку, все авторизованные SSH ключи пользователя удаляются. Требует user.create_home=yes ! |
|
generate_ssh_key |
Выбор:
|
Если не установлено на no, генерирует пару SSH ключей для пользователя, если SSH ключ не существует в локальном каталоге users_ssh_key_dir . После этого добавляет его в авторизованные SSH ключи пользователя и устанавливает пару SSH ключей для пользователя. Требует user.create_home=yes ! |
remove |
Выбор:
|
Это влияет только на user.state=absent , пытается удалить каталоги, связанные с пользователем. Поведение такое же, как у userdel --remove, смотрите страницу man для деталей и поддержки. |
force |
Выбор:
|
Это влияет только на user.state=absent , принуждает удаление пользователя и связанных директорий на поддерживаемых платформах. Поведение такое же, как у userdel --force, смотрите страницу man для деталей и поддержки. |
Переменная users_groups
содержит список групп пользователей для создания или удаления. Каждая группа в этом списке определяется как словарь.
Следующие параметры доступны для каждого словаря группы:
Параметр группы | Выбор / По умолчанию | Комментарии |
---|---|---|
name обязательно |
Имя группы для управления. | |
state |
Выбор:
|
Должна ли группа быть присутствующей или нет на удаленном хосте. |
gid |
Необязательный GID для установки группы. |
Зависимости
В общем, у этой роли нет зависимостей. В сочетании с рекомендованной ролью rembik.bootstrap
, эта роль использует определенного bootstrap_user
(если необходимо) для подключения к удаленному хосту и выполнения задач этой роли.
Пример плейбука
Этот пример взят из molecule/playbook.yml
:
---
- name: Converge
hosts: all
gather_facts: no
become: yes
roles:
- role: rembik.bootstrap
- role: rembik.users
vars:
users_ssh_key_dir: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}/ssh_key"
users_groups:
- name: users
- name: bin
users:
- name: nouser
comment: No User
create_home: no
- name: molecule
comment: Ansible Test User
uid: 2001
home: /home/test
cron: yes
sudo: yes
generate_ssh_key: yes
- name: administrator
comment: Administrator
uid: 2002
groups: [users]
cron: yes
sudo: yes
profile: |
alias ll='ls -lah'
alias cp='cp -iv'
ssh_key:
- "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABWBILQeRSYYmGea/WIf6kd... [email protected]"
- name: user
comment: User
uid: 2003
groups: [users]
shell: /bin/sh
generate_ssh_key: yes
Тестирование роли
Эта роль периодически тестируется на следующих дистрибутивах Linux:
Звездочка означает, что сборка может потерпеть неудачу, она отмечена как экспериментальная сборка.
Вклад
Если вы найдете проблемы, пожалуйста, зарегистрируйте их на этой странице проблем проекта GitHub или подумайте о внесении кода, следуя этому руководству.
Лицензия
Apache-2.0
Информация об авторе
This role manages users and their groups on your system.
ansible-galaxy install rembik/ansible-role-users