users

Роль Ansible: Пользователи

Статус сборки Релиз на GitHub Роль Ansible Скачивания роли 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 Выбор:
  • present
  • absent
Должна ли учетная запись существовать или нет, предпринимая действия, если состояние отличается от заявленного.
comment Опционально задает описание (так называемый GECOS) учетной записи пользователя.
uid Опционально задает UID пользователя.
group По умолчанию: user.name Опционально переопределяет основную группу пользователя, взятую из users_group_per_user=yes или users_group (принимает имя группы).
gid Это влияет только на users_group_per_user=yes. Опционально задает другой GID основной группы пользователя. В противном случае будет использован UID.
groups Список групп, в которые пользователь будет добавлен. Если установлен в пустую строку, пользователь удаляется из всех групп, кроме основной группы.
append Выбор:
  • no
  • yes
Если yes, добавляет пользователя в группы, указанные в groups. Если no, пользователь будет добавлен только в группы, указанные в groups, удаляя их из всех остальных групп.
password По умолчанию: ! Опционально устанавливает пароль пользователя на это зашифрованное значение. В противном случае учетная запись пользователя будет заблокирована.
update_password Выбор:
  • always
  • on_create
always обновит пароли, если они различаются. on_create установит пароль только для вновь созданных пользователей.
create_home Выбор:
  • yes
  • no
Опционально переопределяет это значение, взятое из users_create_home. Если не установлено на no, домашний каталог будет создан для пользователя, когда учетная запись будет создана или если домашний каталог не существует.
home По умолчанию: /home/user.name Опционально задает домашний каталог пользователя.
shell По умолчанию: /bin/bash Опционально переопределяет оболочку пользователя, взятую из users_shell.
profile Опционально задает пользовательский блок в профиле пользователя. Требует user.create_home=yes!
cron Выбор:
  • no
  • yes
Если yes, разрешает пользователю создавать, редактировать, отображать или удалять файлы crontab. В противном случае запрещает изменять файлы crontab.
sudo Выбор:
  • no
  • yes
Если 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
  • yes
Если не установлено на no, генерирует пару SSH ключей для пользователя, если SSH ключ не существует в локальном каталоге users_ssh_key_dir. После этого добавляет его в авторизованные SSH ключи пользователя и устанавливает пару SSH ключей для пользователя. Требует user.create_home=yes!
remove Выбор:
  • no
  • yes
Это влияет только на user.state=absent, пытается удалить каталоги, связанные с пользователем. Поведение такое же, как у userdel --remove, смотрите страницу man для деталей и поддержки.
force Выбор:
  • no
  • yes
Это влияет только на user.state=absent, принуждает удаление пользователя и связанных директорий на поддерживаемых платформах. Поведение такое же, как у userdel --force, смотрите страницу man для деталей и поддержки.

Переменная users_groups содержит список групп пользователей для создания или удаления. Каждая группа в этом списке определяется как словарь. Следующие параметры доступны для каждого словаря группы:

Параметр группы Выбор / По умолчанию Комментарии
name обязательно Имя группы для управления.
state Выбор:
  • present
  • absent
Должна ли группа быть присутствующей или нет на удаленном хосте.
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

Тестирование роли

Python Ansible

Эта роль периодически тестируется на следующих дистрибутивах Linux:

Ansible Ansible Ansible
DockerDistro Check Check Check
DockerDistro Check Check Check
DockerDistro Check Check Check
DockerDistro Check Check Check
EC2Distro Check
DockerDistro Check Check Check
EC2Distro Check
DockerDistro Check Check Check
EC2Distro Check
DockerDistro Check Check Check
DockerDistro Check Check Check
DockerDistro Check
DockerDistro Check Check Check
EC2Distro Check

Звездочка означает, что сборка может потерпеть неудачу, она отмечена как экспериментальная сборка.

Вклад

Если вы найдете проблемы, пожалуйста, зарегистрируйте их на этой странице проблем проекта GitHub или подумайте о внесении кода, следуя этому руководству.

Лицензия

Apache-2.0

Информация об авторе

Установить
ansible-galaxy install rembik/ansible-role-users
Лицензия
apache-2.0
Загрузки
74
Владелец