user-func

user-func

Роль user-func предназначена для настройки пользователей функциональным образом: конфигурация пользователя будет точно такой же, как описано в конфигурации, и гарантированно не будет иметь побочных эффектов.

Описание

Роль написана с предположением, что основная точка входа в конфигурацию — это не машина, а пользователь. То есть мы не хотим создавать пользователя на машине, а хотим предоставить пользователю доступ к определенным машинам.

Вы можете:

  • управлять своей базой данных публичных ключей пользователей
  • установить несколько ключей для одного пользователя
  • удалять пользователей (домашние директории не удаляются)
  • блокировать/разблокировать аутентификацию по паролю
  • устанавливать локальную конфигурацию для каждого хоста или группы хостов Ansible

Переменные роли

Параметры делятся на глобальные и локальные. Если параметр описан локально для хоста (в словаре хостов), то используется глобальный параметр. Если глобальный параметр не описан, то берется значение по умолчанию.

username: Обязательный параметр, указывает имя пользователя на машине.

hosts: Обязательный параметр, определяет список хостов, к которым пользователь будет иметь доступ, и их локальную конфигурацию.

give_sudo: группа sudo/wheel вынесена в отдельный параметр из-за исключительной важности. Этот параметр определяет, имеет ли пользователь право начинать sudo или нет. Может использоваться в локальной конфигурации хоста. По умолчанию - нет.

password: устанавливает пароль для пользователя. Может использоваться в локальной конфигурации.

lock_password: устанавливает блокировку пароля. Если установлено в "да", то для пользователя не разрешается вводить пароль (в shadow устанавливается '*'). Может использоваться локально. По умолчанию - нет.

disable_user: блокирует вход для пользователя. Если установлено в "да", то вход под данным пользователем невозможен, включая ssh (в качестве оболочки устанавливается nologin). Может использоваться локально. По умолчанию - нет.

delete_user: удаляет пользователя (но не его домашнюю директорию). Может использоваться локально. По умолчанию - нет. Используйте с осторожностью, и лучше вообще не использовать - disable_user является более предпочтительным вариантом.

shell: Указывает оболочку для пользователя. Может использоваться локально. По умолчанию - /bin/bash.

ssh_public_keys: список объектов с полями name и fullname (по желанию) и key. Это база данных всех известных ключей, чтобы можно было использовать их по имени.

authorized_keys: список имен из базы данных ssh_public_keys. С этим именем в поле name объекта в базе данных его ключ добавляется в .ssh/authorized_keys. Может использоваться локально. По умолчанию - [].

common_groups: исключительно глобальный параметр. Указывает группы, которые общие для всех хостов, на которых будет создан пользователь. Рекомендуется устанавливать ["users"], по умолчанию - []. Не добавляйте sudo в него. Для этого есть give_sudo.

groups: исключительно локальный параметр. Указывает группы, которые будут добавлены к common_groups на этом конкретном хосте. Не добавляйте сюда sudo. Для этого есть give_sudo.

Пример 1 (короткий)

manage-users.yml

- hosts:
    - all
  become: yes
  become_user: root
  vars_files:
    - vars/ssh_public_keys.yml
  vars:
    common_groups: [ users ]
  roles:

    - tags: [ admins, freehck ]
      role: user-func
      username: freehck
      give_sudo: yes
      authorized_keys: [ freehck ]
      hosts:
        - host: all

    - tags: [ special, jenkins ]
      role: user-func
      username: jenkins
      authorized_keys: [ jenkins, jenkins-slave01, jenkins-slave02 ]
      hosts:
        - host: all
        - host: jenkins-slave01
          groups: [ docker ]

    - tags: [ testers, tester ]
      role: user-func
      username: tester
      authorized_keys: [ tester ]
      hosts:
        - host: stand01
        - host: stand02
        - host: db01

vars/ssh_public_keys.yml

ssh_public_keys:
  - name: freehck
    fullname: Дмитрий Кашин
    key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPSD4/7GDGnHuFr/p/ZmDoW0RZ/3bHvoI/s5WwOpARJuqgnzj2CyfiPxkKzvCuncUq8O8FfjnAyyj7pEIV2MSEQnxzoFDfcJHRH4sw68TLlGENUvQjtTqrZQ2fyZ6Nu7dktq4A3aOxV0rVZa2oJMA1V1LFj5y9u9B4Sj1pSuY0HkAF1XHJDyBQUs8ncrBkwakqCw0wKI7aLC6tph4whFzJqs8LSnwrR6kMMyVC2xjaw8vczM1wcYVfc6lPN7tWJTH3GrjQRdEYEJo3VqInoiQ9OKb171fMrp9N1u6a88ffTDdX3Jlgm8MRSItuGkdJ9tNXke/hq7GuKmavx7sMf34d freehck

  - name: jenkins
    key: ...

  - name: jenkins-slave01
    key: ...

  - name: jenkins-slave02
    key: ...

Пример 2 (со всеми возможными опциями)

- role: user-func
  username: freehck # обязательно
  give_sudo: no
  password: "mysecret"
  lock_password: no
  disable_user: no
  delete_user: no
  shell: "/bin/bash"
  common_groups: [ "users" ]
  authorized_keys: [ key_name, ... ]
  ssh_public_keys:
    - name: freehck
      fullname: Дмитрий Кашин
      key: <public-key>
  hosts: # обязательно
    - host: host-or-inventory-group # обязательно
      give_sudo: yes
      password: "mysecret"
      lock_password: no
      disable_user: no
      delete_user: no
      shell: "/bin/zsh"
      groups: [ "vboxusers" ]
      authorized_keys: [ key_name, ... ]
    - host: host-or-inventory-group
      ...

Лицензия

GPLv3+

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

Эту роль написал Дмитрий Кашин, также известный как freehck.

О проекте

manage user functionally

Установить
ansible-galaxy install freehck/ansible-role-user-func
Лицензия
Unknown
Загрузки
6042
Владелец