Ansible——user模块

 

目录

参数总结

语法示例 

1. 创建用户

2. 删除用户

3. 修改用户属性

4. 锁定用户账户

5. 解锁用户账户

6. 添加用户到多个组

7. 修改或创建用户,并设置密码

访问命令行帮助

Playbook示例

1. 创建用户

2. 删除用户

3. 修改用户属性

4. 锁定和解锁用户账户

5. 添加用户到多个组

6. 设置 SSH 公钥

综合示例


user 模块用于管理系统用户,可以创建、删除、修改用户属性。它提供了一个统一的方法来保证用户账户的存在或不存在,以及其他相关的设置,比如密码、组、home 目录等等。以下是一些常见操作和语法总结: 

参数总结

  1. name:

    • 描述:要管理的用户的名称。
    • 类型:字符串
    • 必需:是
  2. state:

    • 描述:用户的目标状态。
    • 可选值:
      • present:确保用户存在
      • absent:确保用户不存在
    • 类型:字符串
    • 默认值:present
  3. uid:

    • 描述:设置用户的 UID。
    • 类型:整数
  4. gid:

    • 描述:设置用户的主要 GID 或组名。
    • 类型:整数或字符串
  5. groups:

    • 描述:设置用户所属的附加组(以逗号分隔)。
    • 类型:字符串
  6. password:

    • 描述:设置用户的密码(加密格式)。
    • 类型:字符串
  7. update_password:

    • 描述:控制用户密码的更新策略。
    • 可选值:
      • always:总是更新密码
      • on_create:仅在用户创建时设置密码
    • 类型:字符串
    • 默认值:always
  8. shell:

    • 描述:设置用户的登录 shell。
    • 类型:字符串
  9. home:

    • 描述:设置用户的 home 目录路径。
    • 类型:字符串
  10. createhome:

    • 描述:如果为 yes,则创建用户的 home 目录。
    • 类型:布尔值
    • 默认值:yes
  11. system:

    • 描述:如果为 yes,则创建系统用户。
    • 类型:布尔值
    • 默认值:no
  12. move_home:

    • 描述:如果为 yes,则移动用户的 home 目录到新位置。
    • 类型:布尔值
    • 默认值:no
  13. non_unique:

    • 描述:如果为 yes,则允许创建重复的 UID。
    • 类型:布尔值
    • 默认值:no
  14. remove:

    • 描述:如果为 yes,则删除用户及其 home 目录和邮件目录。
    • 类型:布尔值
    • 默认值:no
  15. force:

    • 描述:如果为 yes,则强制删除用户,即使用户当前已登录。
    • 类型:布尔值
    • 默认值:no
  16. comment:

    • 描述:设置用户的 GECOS 字段(全名或备注)。
    • 类型:字符串
  17. seuser:

    • 描述:设置用户的 SELinux 用户。
    • 类型:字符串
  18. generate_ssh_key:

    • 描述:如果为 yes,则为用户生成 SSH 密钥。
    • 类型:布尔值
    • 默认值:no
  19. ssh_key_bits:

    • 描述:设置 SSH 密钥的位数(与 generate_ssh_key 一起使用)。
    • 类型:整数
    • 默认值:2048
  20. ssh_key_comment:

    • 描述:设置 SSH 密钥的注释(与 generate_ssh_key 一起使用)。
    • 类型:字符串
    • 默认值:用户名@主机名
  21. ssh_key_file:

    • 描述:设置生成的 SSH 密钥文件的路径(与 generate_ssh_key 一起使用)。
    • 类型:字符串
    • 默认值:~/.ssh/id_rsa
  22. ssh_key_passphrase:

    • 描述:设置 SSH 密钥的密码(与 generate_ssh_key 一起使用)。
    • 类型:字符串
  23. ssh_key_type:

    • 描述:设置 SSH 密钥的类型(与 generate_ssh_key 一起使用)。
    • 可选值:rsadsaecdsaed25519
    • 类型:字符串
    • 默认值:rsa

语法示例 

1. 创建用户

创建一个名为 john 的用户:

ansible all -m user -a "name=john state=present"

2. 删除用户

删除名为 john 的用户:

ansible all -m user -a "name=john state=absent"

3. 修改用户属性

创建用户 jane 并为其设置特定属性:

ansible all -m user -a "name=jane comment='Jane Doe' uid=1042 group=admin home=/home/jane shell=/bin/bash password='{{ ''password'' | password_hash(''sha512'') }}'"

(注意:此命令中密码部分需要特定的处理,最好在 Playbook 中使用而不是在命令行直接敲)

4. 锁定用户账户

锁定名为 john 的用户账户:

ansible all -m user -a "name=john password_lock=yes"

5. 解锁用户账户

解锁名为 john 的用户账户:

ansible all -m user -a "name=john password_lock=no"

6. 添加用户到多个组

将用户 jane 添加到多个组:

ansible all -m user -a "name=jane groups=wheel,staff append=yes"

7. 修改或创建用户,并设置密码

注意密码应当进行加密处理,通常通过变量传递:

ansible all -m user -a "name=jane password='<encrypted_password>'"

访问命令行帮助

查看 user 模块的所有选项和参数,可以使用以下命令:

ansible-doc -s user

 

Playbook示例

 

1. 创建用户

创建一个名为 john 的用户:

---
- name: Ensure user 'john' is created
  hosts: all
  tasks:
    - name: Create a user 'john'
      user:
        name: john
        state: present

2. 删除用户

删除名为 john 的用户及其 home 目录:

---
- name: Ensure user 'john' is removed
  hosts: all
  tasks:
    - name: Delete user 'john'
      user:
        name: john
        state: absent
        remove: yes

3. 修改用户属性

创建用户 jane 并设置其属性:

---
- name: Ensure user 'jane' is created with specific attributes
  hosts: all
  tasks:
    - name: Create user 'jane' with specific attributes
      user:
        name: jane
        comment: "Jane Doe"
        uid: 1042
        group: admin
        groups: "wheel,staff"
        home: /home/jane
        shell: /bin/bash
        password: "{{ 'password' | password_hash('sha512') }}"

4. 锁定和解锁用户账户

锁定用户 john 的账户:

---
- name: Ensure user 'john' is locked
  hosts: all
  tasks:
    - name: Lock user 'john' account
      user:
        name: john
        password_lock: yes

解锁用户 john 的账户:

---
- name: Ensure user 'john' is unlocked
  hosts: all
  tasks:
    - name: Unlock user 'john' account
      user:
        name: john
        password_lock: no

5. 添加用户到多个组

将用户 jane 添加到多个组:

---
- name: Ensure user 'jane' is a member of multiple groups
  hosts: all
  tasks:
    - name: Add user 'jane' to multiple groups
      user:
        name: jane
        groups: "wheel,staff"
        append: yes

6. 设置 SSH 公钥

为用户 jane 设置 SSH 公钥:

---
- name: Set SSH public key for user 'jane'
  hosts: all
  tasks:
    - name: Ensure user 'jane' has an SSH key
      authorized_key:
        user: jane
        state: present
        key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAr..."

 

综合示例

综合示例,展示了如何在同一 Playbook 中执行多种用户管理操作:

---
- name: Manage multiple users
  hosts: all
  tasks:
    - name: Ensure user 'john' exists with specific attributes
      user:
        name: john
        comment: "John Doe"
        uid: 1001
        group: developers
        groups: "devops"
        home: /home/john
        shell: /bin/bash
        state: present

    - name: Ensure user 'jane' exists with specific attributes
      user:
        name: jane
        comment: "Jane Doe"
        uid: 1002
        group: developers
        groups: "devops,sysadmins"
        home: /home/jane
        shell: /bin/zsh
        state: present

    - name: Ensure user 'jim' is removed
      user:
        name: jim
        state: absent

    - name: Lock user 'bob' account
      user:
        name: bob
        password_lock: yes

    - name: Configure authorized key for user 'john'
      authorized_key:
        user: john
        state: present
        key: "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAr4..."

相关推荐

  1. 驱动模块--内核模块

    2024-06-08 18:44:03       38 阅读
  2. 模块一:登录模块

    2024-06-08 18:44:03       3 阅读
  3. DSP28335模块配置模板系列——EQEP模块配置模板

    2024-06-08 18:44:03       5 阅读
  4. random模块

    2024-06-08 18:44:03       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 18:44:03       8 阅读
  2. 【Python教程】压缩PDF文件大小

    2024-06-08 18:44:03       9 阅读
  3. 通过文章id递归查询所有评论(xml)

    2024-06-08 18:44:03       10 阅读

热门阅读

  1. SD-WAN加速跨国服务器访问

    2024-06-08 18:44:03       6 阅读
  2. Spring Boot中实现规则引擎源码教程

    2024-06-08 18:44:03       7 阅读
  3. android:text 总为大写字母的原因

    2024-06-08 18:44:03       7 阅读
  4. input只允许输入数字

    2024-06-08 18:44:03       6 阅读
  5. 数据结构汇总学习(ing)

    2024-06-08 18:44:03       6 阅读
  6. 注解 - @RequestBody

    2024-06-08 18:44:03       6 阅读
  7. 阿里云一键登录号码认证服务

    2024-06-08 18:44:03       6 阅读
  8. pytorch里面封装好的函数,如果要修改怎么办

    2024-06-08 18:44:03       7 阅读
  9. C语言——第五章习题

    2024-06-08 18:44:03       5 阅读
  10. 动手学深度学习——tensor

    2024-06-08 18:44:03       6 阅读
  11. MySQL 运算符以及优先级

    2024-06-08 18:44:03       8 阅读