freehck.user-func

用户功能

用户功能角色旨在以功能的方式配置用户:用户配置将与配置中描述的完全相同,并保证没有副作用。

描述

该角色的编写假设配置的主要入口点不是机器,而是用户。也就是说,我们不想在机器上创建用户,而是想给用户访问某些机器的权限。

你可以:

  • 管理用户公钥数据库
  • 为一个用户设置多个密钥
  • 删除用户(家庭目录不会被删除)
  • 锁定/解锁密码认证
  • 每个主机或Ansible主机组设置本地配置

角色变量

参数分为全局和本地。如果参数在主机的字典中局部描述,则使用全局参数。如果全局参数没有描述,则使用默认值。

username:必需,指定机器上的用户名

hosts:必需参数,定义用户将访问的主机列表及其本地配置

give_sudo:sudo/wheel组被视为一个单独的参数,因为它极为重要。该参数决定是否给予用户启动sudo的权限。可以在本地主机配置中使用。默认值为否。

password:设置用户的密码。可以在本地配置中使用。

lock_password:设置密码锁定。如果设置为是,则不允许用户输入密码(在shadow中设置为'*')。可以在本地使用。默认值为否。

disable_user:阻止用户登录。如果设置为是,则该用户无法登录,包括ssh(默认shell设置为nologin)。可以在本地使用。默认值为否。

delete_user:删除用户(但不删除其家目录)。可以在本地使用。默认值为否。使用时请谨慎,最好完全不使用 - disable_user是更优的选择。

shell:指定用户的shell。可以在本地使用。默认值为/bin/bash。

ssh_public_keys:包含名称、全名字段(可选)和密钥的对象列表。这是一个包含所有已知密钥的基础,以便可以通过名称来操作它们。

authorized_keys:来自ssh_public_keys数据库的名称列表。根据该名称字段中的对象,其密钥将添加到.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: Dmitrii Kashin
    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: Dmitrii Kashin
      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+

作者信息

该角色由Dmitrii Kashin(又名freehck)编写

关于项目

manage user functionally

安装
ansible-galaxy install freehck.user-func
许可证
Unknown
下载
6.1k
拥有者