17-Ansible常用模块-user模块

一、概述

user 模块可以帮助我们管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等操作。

二、常用参数

  • name参数: 必须参数,用于指定要操作的用户名称,可以使用别名 user。
  • group参数: 此参数用于指定用户所在的基本组。
  • gourps参数: 此参数用于指定用户所在的附加组。如用户已经存在并拥有多个附加组,如继续添加新的附加组,需要结合 append参数,否则再次使用 groups 参数设置附加组时,原附加组会被覆盖。
  • append参数: 结合groups 参数设置附加组,如不想覆盖原来的附加组设置,需要结合 append 参数设置为 yes,表示追加附加组到现有的附加组设置,append 默认值为 no。
  • shell参数: 此参数用于指定用户的默认 shell。
  • uid参数: 此参数用于指定用户的 uid 号。
  • expires参数: 此参数用于指定用户的过期时间,相当于设置 /etc/shadow 文件中的的第8列,比如,你想要设置用户的过期日期为2018年12月31日,那么你首先要获取到2018年12月31日的 unix时间戳,使用命令 “date -d 2018-12-31 +%s” 获取到的时间戳为1546185600,所以,当设置expires=1546185600 时,表示用户的过期时间为2018年12月31日0点0分,设置成功后,查看远程主机的/etc/shadow 文件,对应用户的第8八列的值将变成17895(表示1970年1月1日到2018年12月31日的天数,unix时间戳的值会自动转换为天数,我们不用手动的进行换算),目前此参数只支持在 Linux 和 FreeBSD 系统中使用。
  • comment参数: 此参数用于指定用户的注释信息。
  • state参数: 此参数用于指定用户是否存在于远程主机中,设为present表示用户需要存在,设为 absent 表示删除用户。
  • remove参数: 当 state 的值设为 absent ,表示要删除远程主机中的用户。但不会删除用户的家目录等信息,这是因为 remove 参数的默认值为no,如设置为yes,表示删除用户的同时并删除其家目录。当state=absent 并且 remove=yes 时,相当于执行“userdel --remove” 命令。
  • password参数: 此参数用于指定用户的密码。但是这个密码不能是明文的密码,而是一个对明文密码”加密后”的字符串,相当于 /etc/shadow 文件中的密码字段,是一个对明文密码进行哈希后的字符串,可在 python的命令提示符下输入如下命令,生成明文密码对应的加密字符串。
import crypt; crypt.crypt('666666')

输入上述命令后,即可得到明文密码666666对应的加密字符串。

  • update_password参数: 此参数有两个值可选,always 和 on_create,当此参数的值设置为always 时表示,如果 password 参数设置的值与用户当前的加密过的密码字符串不一致,则直接更新用户的密码,默认值即为always,但是当此参数设置为 on_create 时,如果password参数设置的值与用户当前的加密过的密码字符串不一致,则不会更新用户的密码字符串,保持之前的密码设定。如果是新创建的用户,即使此参数设置为on_create,也会将用户的密码设置为 password 参数对应的值。
  • generate_ssh_key参数: 此参数默认值为 no,如果设置为 yes,表示为对应的用户生成 ssh 密钥对,默认在用户家目录的 ./ssh 目录中生成名为 id_rsa 的私钥和名为 id_rsa.pub的公钥,如果同名的密钥已经存在与对应的目录中,原同名密钥并不会被覆盖(不做任何操作)。
  • ssh_key_file参数: 当 generate_ssh_key 参数的值为 yes 时,使用此参数自定义生成 ssh 私钥的路径和名称,对应公钥会在同路径下生成,公钥名以私钥名开头,以”.pub”结尾。
  • ssh_key_comment参数: 当 generate_ssh_key 参数的值为 yes 时,在创建证书时,使用此参数设置公钥中的注释信息。但是如果同名的密钥对已经存在,则并不会修改原来的注释信息,即不做任何操作。当不指定此参数时,默认的注释信息为”ansible-generatedon 远程主机的主机名”。
  • ssh_key_passphrase参数: 当 generate_ssh_key 参数的值为 yes 时,在创建证书时,使用此参数设置私钥的密码。但是如果同名的密钥对已经存在,则并不会修改原来的密码,即不做任何操作。
  • ssh_key_type参数: 当 generate_ssh_key 参数的值为 yes 时,在创建证书时,使用此参数设置密钥对的类型。默认密钥类型为 rsa,但是如果同名的密钥对已经存在,并不会对同名密钥做任何操作。

三、示例

  • 1.在 all主机上创建名为 ding 的用户,如果用户已经存在,则不进行任何操作。
[root@Ansible test]#  ansible all -m user -a 'name=ding' 
  • 2.在 all主机上删除名为 ding 的用户,但是不会删除 ding 用户的家目录。
[root@Ansible test]#  ansible all -m user -a 'name=ding state=absent'
  • 3.在 all主机上删除名为 ding 的用户,同时会删除 ding 用户的家目录等信息。如果已经不存在 ding 的用户,则不做任何操作。
[root@Ansible test]#  ansible all -m user -a 'name=ding state=absent remove=yes'
  • 4.指定 all主机上的 ding 用户的主组为 testgroup,testgroup 组需要提前存在,当不使用 group 设置主组时,默认主组与用户名相同。
[root@Ansible test]#  ansible all -m user -a "name=ding group=testgroup"
  • 5.指定 all 主机上的 ding 用户的附加组为 testgroup2,testgroup2 组需要提前存在,当不使用 groups 设置附属组时,默认附加组与用户名相同。注意,为了保险起见,在不知道用户原来的附加组设定的情况下,最好将 append 参数设置为 yes,我们也可以一次性设置多个附加组,附加组之间用逗号隔开,比如groups=ding,testgroup,root 。
[root@Ansible test]#  ansible all -m user -a "name=ding groups=testgroup2 append=yes"
  • 6.指定 all主机上的 ding 用户的过期时间为2018年12月31日。使用”date -d 2018-12-31 +%s“命令可以获取到对应日期的 unix 时间戳。
[root@Ansible test]#  ansible all -m user -a 'name=ding expires=1546185600'
  • 7.指定 all主机上的 ding 用户的注释信息。
[root@Ansible test]#  ansible all -m user -a name=ding comment="www.ding.com" '
  • 8.将 all主机上的 ding 用户的密码设置为666666。
    首先生成666666的加密字符串:
[root@ansible-manager ~]# python
Python 2.7.5 (default, Aug  4 2017, 00:39:18) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt;crypt.crypt('666666')
'$6$ziT/sb5KRtUaxoq7$ulfHVLqVgXfmfFUYY7FppzqBQMUYd.2GLDyQwmKv4dYAd0zpgtt5JDheoO/OvvTvY53x9UShX.PtHykJEvsmG0'
[root@Ansible test]#  ansible all -m user -a ' name=ding password="$6$ziT/sb5KRtUaxoq7$ulfHVLqVgXfmfFUYY7FppzqBQMUYd.2GLDyQwmKv4dYAd0zpgtt5JDheoO/OvvTvY53x9UShX.PtHykJEvsmG0" '
  • 9.为all上的 ding 用户生成 ssh 密钥对。默认在用户家目录的 ./ssh 目录中生成名为 id_rsa 的私钥和名为 id_rsa.pub 的公钥,如果已经存在同名密钥,并不会覆盖原来的密钥,即不做任何操作。
[root@Ansible test]#  ansible all -m user -a 'name=ding generate_ssh_key=yes'
  • 10.为 ansible-demo3 上的 ding 用户生成 ssh 密钥对,密钥对生成在 /opt 目录下,私钥名为 id_rsa_ding,公钥名为id_rsa_ding.pub。
[root@Ansible test]#  ansible all -m user -a 'name=ding generate_ssh_key=yes ssh_key_file=/opt/id_rsa_ding'
  • 11.为 ansible-demo3 上的 ding 用户生成 ssh 密钥对,同时指定公钥中的注释信息“www.ding.com”,此参数只能在创建密钥时使用才会生效,并不能操作同名的老密钥。
[root@Ansible test]#  ansible all -m user -a 'name=ding generate_ssh_key=yes ssh_key_comment="www.ding.com"'
  • 12.为 ansible-demo3 上的 ding 用户生成 ssh 密钥对,同时指定私钥的密码为123456,此参数只能在创建密钥时使用才会生效,并不能操作同名的老密钥。
[root@Ansible test]#  ansible all -m user -a 'name=ding generate_ssh_key=yes ssh_key_passphrase="123456"'
  • 13.为 ansible-demo3 上的 ding 用户生成 ssh 密钥对,同时指定密钥对的类型为 dsa,当不显式指定密钥类型时,默认类型为 rsa,此参数只能在创建密钥时使用才会生效,并不能操作同名的老密钥。
[root@Ansible test]#  ansible all -m user -a 'name=ding generate_ssh_key=yes ssh_key_type=dsa'
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,可以使用ansibleuser模块来删除用户并选择是否删除用户的家目录。根据引用\[1\],可以使用`remove=yes`参数来删除用户及其家目录。如果用户不存在,则不会执行任何操作。例如,可以使用以下命令删除名为ding的用户及其家目录: ``` ansible ansible-demo3 -m user -a 'name=ding state=absent remove=yes' ``` 另外,根据引用\[3\],如果不想删除用户的家目录,可以省略`remove`参数或将其设置为`false`。例如,可以使用以下命令删除名为ding的用户,但不删除其家目录: ``` ansible ansible-demo3 -m user -a 'name=ding state=absent' ``` 这样,用户ding将被删除,但其家目录将保留。 #### 引用[.reference_title] - *1* *3* [17-Ansible常用模块-user模块](https://blog.csdn.net/dylloveyou/article/details/81051324)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ansible系统模块--user模块](https://blog.csdn.net/weixin_44791884/article/details/105049055)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值