users

Роль пользователей для Ansible

Эта роль позволяет просто управлять учетными записями пользователей в системе.
С версии 0.2 появилась возможность контролировать, где создать определенную учетную запись, установив целевую группу хостов (например, группу инвентаря, тег EC2 или другую метку облака).

Список изменений

0.2.1 - 2021-11-08

Добавлено:

Удаление группы пользователей
Удаление домашней директории пользователя - delete_homedirs

0.2 - 2021-11-08

Изменено:

target_hosts теперь обязательный. Пожалуйста, добавьте target_hosts: ['all'] в каждую запись пользователя, если вы хотите создать этого пользователя на всех хостах.

Убрано:

users_keys убрано из-за проблем совместимости. Вероятно, оно вообще не использовалось.

0.1 - 2021-10-27

Исправления:

groups должен быть опущен по умолчанию, другие значения по умолчанию.

Добавлено:

Первая попытка target_hosts (не работает).

Изменено:

users.state обязательный.

Требования

  • Ansible 2.9.0 или выше

Переменные

Переменные, которые можно передать в эту роль и их краткое описание:

# Список учетных записей пользователей, которые нужно добавить в систему
users: []

# Умолчательная оболочка для всех учетных записей пользователей
users_default_shell: '/bin/bash'

# Умолчательная группа для новых учетных записей пользователей
users_default_group: 'users'

# Умолчательный флаг для создания уникальной группы для каждого пользователя или
# вместо этого добавления всех пользователей в указанную выше группу по умолчанию
users_create_group_per_user: true

# Умолчательный флаг для создания домашних директорий пользователей
users_create_homedir: true

# Умолчательный список групп (для создания)
users_group_list: []

# Удаление домашних директорий при удалении пользователя - отключено по умолчанию
delete_homedirs: false

Структура списка пользователей

# Список учетных записей пользователей, которые нужно добавить в систему
users:
  # Первый пользователь, определяющий только обязательные атрибуты
  - username: 'johndoe'     # Имя пользователя в Linux
    uid: 1000               # НЕОБЯЗАТЕЛЬНЫЙ идентификатор пользователя (обычно не системные пользователи начинаются с 1000)
    authorized: []          # Список открытых SSH-ключей, которые нужно добавить в учетную запись
    target_hosts: ['dev']   # Список групп хостов инвентаря, где должна существовать учетная запись пользователя
    state: 'present'        # ОБЯЗАТЕЛЬНОЕ состояние учетной записи
  # Второй пользователь, определяющий все доступные атрибуты
  - username: 'janedoe'     # Имя пользователя в Linux
    uid: 1001               # НЕОБЯЗАТЕЛЬНЫЙ идентификатор пользователя
    authorized:             # Список открытых SSH-ключей
      - 'ssh-rsa key_string1'
      - 'ssh-ecdsa key_string2'
    name: 'Jane Doe'        # Используется в качестве комментария при создании учетной записи
    system: false           # Указать, будет ли учетная запись системной
    group: 'jdoe'           # Альтернативная основная группа пользователя
    groups:                 # Дополнительные группы пользователей
      - 'admin'
      - 'developers'
    shell: '/bin/bash'      # Умолчательная оболочка для учетной записи
    home: '/home/jdoe'      # Альтернативное местоположение домашней директории для учетной записи
    generate_key: true      # Генерировать новый SSH-ключ для учетной записи
    state: 'present'
  # Удаленные учетные записи
  - username: 'bob'
    uid: 1003
    authorized: []
    target_hosts: ['dev']
    state: absent

Пример Playbook

  1. Создание учетной записи системного администратора и учетной записи для развертывания:

    ---
    # Этот плейбук настраивает машины с общими пользователями
    
    - name: Применить общих пользователей ко всем узлам
      hosts: all
      roles:
        - { role: users,
            users:
              - username: 'sa'
                authorized: ['ssh-rsa key_string']
                name: 'Системный администратор'
                groups: ['admin']
                target_hosts:
                  - dev
                  - stage
                  - prod
                state: 'present'
              - username: 'ansible'
                name: 'Учётная запись службы Ansible'
                generate_key: true
                authorized: []
                state: 'present'
                # Важно - необходимо определить target_hosts, иначе пользователь не будет создан.
                # Используйте ['all'], чтобы создать пользователя на всех хостах по умолчанию.
                target_hosts: ['all']
              - username: 'johndoe'
                name: 'John Doe'
                generate_key: true
                authorized: []
                target_hosts: ['dev']
                state: 'present'
          }
    

Примечание: При создании переменной, содержащей список пользователей для добавления или удаления, лучше всего начать с group_vars/all. Попробуйте group_vars/groupname или host_vars/hostname, если вы хотите добавить пользователей только на определенные машины. target_hosts - это список групп хостов, также это может быть тег в динамическом облачном инвентаре, таком как AWS/GCP/WhateverCloud, зона доступности, регион, проект.

Зависимости

Лицензия

MIT.

О проекте

Ansible role for managing user accounts and authorized ssh-keys

Установить
ansible-galaxy install 1it/ansible-role-users
Лицензия
mit
Загрузки
346
Владелец
Site Reliability Engineer